web-dev-qa-db-ja.com

Ansibleはコマンドラインからユーザー名を取得します

私のプレイブックでは、ユーザー名(排他的に「ubuntu」のみ)を参照しています。

「コマンドラインで渡された値から取得する」と言う組み込みの方法はありますか?

私はできることを知っています

ansible-playbook <task> -u <user> -K --extra-vars "user=<user>"

そして、私は{{user}}はプレイブックで使用していますが、ユーザーを2回定義するのは奇妙に感じられます。

21
rich tier

Woodhamが述べたように、接続ユーザーを表すansible変数は

{{ ansible_user }} (Ansible < 2.0 was {{ ansible_ssh_user }} )

ただし、インベントリファイル自体で定義する必要はありません。

次の場所で定義できます。

1。 ansible-playbookを使用している場合のプレイ:Playbooksのマニュアルを参照

- name: Some play
  hosts: all
  remote_user: ubuntu

2。インベントリファイル:インベントリのマニュアルを参照

[all]
other1.example.com     ansible_user=ubuntu (Ansible < 2.0 was ansible_ssh_user)

3。あなたが述べたように、コマンドラインで:

ansible-playbook -i inventory -u ubuntu playbook.yml

4。 remote_userディレクティブとしてのansible設定ファイル。設定ファイルのマニュアルを参照

Ansible設定ファイルは、現在のフォルダーansible.cfg、ホームディレクトリ.ansible.cfgまたは/etc/ansible/ansbile.cfgに配置できます。

[defaults]
remote_user=ubuntu
33

これを行うための標準的な方法は、インベントリファイルでansible_ssh_userを定義することであり、プレイブックでそれを{{ansible_ssh_user}}として参照できます。

2
Woodham