私がansibleを使用する時間の99%は、hostsファイルで指定されたansible_ssh_userを使用しています。このユーザーが存在しない時間の残りの1%。デフォルトのユーザーを使用して作成する必要があります。 hostsファイルのansible_ssh_userをオーバーライドする方法でプレイブックを実行するにはどうすればよいですか?
私は以下を試しました:
ansible-playbook my-playbook.yaml --user default --ask-pass
しかし、これでも次のエラーが発生しました。
fatal: [target]: UNREACHABLE! => {"changed": false, "msg": "Invalid/incorrect password: Permission denied, please try again.", "unreachable": true}
Hostsファイルでansible_ssh_userをコメントアウトした後でのみ機能しましたが、この行を毎回コメント/コメント解除するのはかなり不便です。
Ansible-playbookコマンドラインで追加の変数を渡して、Ansibleユーザーを再定義できます。例えば:
ansible-playbook .... --extra-vars "ansible_ssh_user=nobody"
マニュアルページは言う:
-e, --extra-vars
set additional variables as key=value or YAML/JSON, if filename
prepend with @
したがって、キーと値のペア、YAML、JSON、または使用する変数を含むファイルを渡すことができます。しかし、おそらく単一のキーと値のペアで十分です。
これは、プロビジョニングプロセスを確認する良い機会です。たとえば、すべてのキックスタートで、ansibleユーザーが適切なssh authorized_keysで作成されていることを確認します。
正しいMichaelの回答に加えて、環境でANSIBLE_REMOTE_USER
を指定したり、ansible.cfgでremote_user
を設定したり、プレイブックの上部にremote_user
を設定したりできます。