web-dev-qa-db-ja.com

Ansible:インベントリのansible_userとプレイブックのremote_user

コントロールマシンにログオンしているアカウント以外のアカウントを使用して、サーバーに対してAnsibleプレイブックを実行しようとしています。 Inventory のドキュメントに従って、インベントリファイルにansible_userを指定しようとしました。

[srv1]
192.168.1.146 ansible_connection=ssh ansible_user=user1

ただし、ansible-playbook -i inventory playbook.yml -vvvvで呼び出されたAnsibleは次を出力します。

GATHERING FACTS ***************************************************************
<192.168.1.146> ESTABLISH CONNECTION FOR USER: techraf

私のために働いたのは、remote_user引数をプレイブックに追加することでした:

- hosts: srv1
  remote_user: user1

これで、同じAnsibleコマンドがuser1として接続します:

GATHERING FACTS ***************************************************************
<192.168.1.146> ESTABLISH CONNECTION FOR USER: user1

また、remote_user変数をansible.cfgに追加すると、Ansibleはログオンしているユーザーではなく、目的のユーザーを使用します。

ansible_userはインベントリファイルにあり、remote_userはPlaybook/ansible.cfgにありますか?

ansible_userは何に使用されますか?または、Ansibleがインベントリの設定を監視しないのはなぜですか?

16
techraf

よくある問題に直面している可能性があります。公開されているansibleドキュメントは開発バージョン(現時点では2.0)用であり、古いドキュメントは保持していません。競合の大きなポイントです... 2.0より前のものを使用していると仮定すると、必要なインベントリ変数名はansible_ssh_useransible_userは2.0で機能します(ansible_ssh_user-エイリアス化されます)。

16
nitzmahone

通常、次のように/etc/ansible/ansible.cfgにリモートユーザー名を追加します。

remote_user = MY_REMOTE_USERNAME

この方法では、各ホストエントリのインベントリファイルでansible_userを構成する必要はありません。

4
user4212639