コントロールマシンにログオンしているアカウント以外のアカウントを使用して、サーバーに対して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がインベントリの設定を監視しないのはなぜですか?
よくある問題に直面している可能性があります。公開されているansibleドキュメントは開発バージョン(現時点では2.0)用であり、古いドキュメントは保持していません。競合の大きなポイントです... 2.0より前のものを使用していると仮定すると、必要なインベントリ変数名はansible_ssh_user
。 ansible_user
は2.0で機能します(ansible_ssh_user
-エイリアス化されます)。
通常、次のように/etc/ansible/ansible.cfg
にリモートユーザー名を追加します。
remote_user = MY_REMOTE_USERNAME
この方法では、各ホストエントリのインベントリファイルでansible_userを構成する必要はありません。