web-dev-qa-db-ja.com

Ansibleのすべてのホストにデフォルトのsshユーザーを設定するにはどうすればよいですか?

Ansibleバージョン2.1

インベントリファイルがありますhosts

[nodes]
Host1
Host2
...

そして、簡単なプレイブックsite.yml

---
- hosts: all
  tasks:
    - include: tasks/main.yml

プレイを始めるだけなら

ansible-playbook -i hosts site.yml -vvvv

すべてのホストでこのエラーが発生します。

ESTABLISH SSH CONNECTION FOR USER: None
fatal: [Host1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the Host via ssh.", "unreachable": true}
...

ただし、 Ansible Inventory ドキュメントを読んで、hostsファイルにansible_userを追加しました。

[nodes]
Host1    ansible_user=root
Host2    ansible_user=root
...

これにより、SSH CONNECTION UNREACHABLEエラーが解決されます。ただし、すべてのホストの横にansible_user=rootを追加する必要がありますか?またはこれを行う簡単な方法はありますか?

11
Howard Lee

Example/default ansible.cfgファイルを確認してください。これは[defaults]の下にあります。

# default user to use for playbooks if user is not specified
# (/usr/bin/ansible will use current user as default)
#remote_user = root

remote_userのコメントを外して、ユーザーをログインしたいユーザーに設定します。

Ansibleはどこでansible.cfgを取得しますか?同じファイルが説明します:

# nearly all parameters can be overridden in ansible-playbook 
# or with command line flags. ansible will read ANSIBLE_CONFIG,
# ansible.cfg in the current working directory, .ansible.cfg in
# the home directory or /etc/ansible/ansible.cfg, whichever it
# finds first
11
Deltik

別の方法は、--userを使用してリモートsshユーザーを定義することです。詳細については、ansible-playbook --helpと入力してください。これは私の典型的なコマンドです:

ansible-playbook -i hosts site.yml --user <user> --ask-pass -vvvv

--ask-pass--userのパスワードの入力を求めるプロンプトを表示します

3
Howard Lee

ansible.cfgの変更に加えて、uは「すべて」のグループまたは他のグループの変数を定義することもできます

https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#group-variables

[all:vars]
ansible_user = root
ansible_port = 22
2
ChuenChih Siu