web-dev-qa-db-ja.com

ansibleのデフォルトのssh_userを上書きする

私が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をコメントアウトした後でのみ機能しましたが、この行を毎回コメント/コメント解除するのはかなり不便です。

2
slibnarg

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で作成されていることを確認します。

1
Michael Hampton

正しいMichaelの回答に加えて、環境でANSIBLE_REMOTE_USERを指定したり、ansible.cfgでremote_userを設定したり、プレイブックの上部にremote_userを設定したりできます。

0
Gary