ansible_user, remote_user などの違いと使い分け [変数 != キーワード]

Ansibleの実行ユーザーとそのパスワードに使われる変数の使い分け

同じような変数(?)が複数あり、どれを使えばいいのか迷ったため。
調べていくと、変数とキーワードの違いが分かっていなかったため少し混乱した。

remote_user

リモートにsshでログインするユーザー名。キーワード。

playbookのキーワードとは、変数ではなく、設定値である。
変数は、あくまで変更を容易くする"データ"であり、playbookの実行やansibleによる状態の記述を補助するものとして扱う。

つまり、キーワードとは、お馴染みのtaskswhenなどと同じ分類のものである。…と言われるとわかりやすいと思う。
playbookのと書いているのは、他にもrole, block, taskのキーワードがあるためである。これらの種類によって、各場所(必要なインデントの量)が変わる。

キーワードは変数ではないため、gather_facts: noと変数を設定しても意味がない。

- hosts: test_server
  # これは(playbookの)キーワード。効果を発揮する。
  gather_facts: no
  vars:
    # これは変数。特に意味がない。
    gather_facts: no
  roles:
    - role: test

キーワードで設定されたものは、対応する変数によって上書きされ得る。
例えば、become: yesと、キーワードを設定していても、変数の定義でansible_become: noとすれば、権限昇格されない。

- hosts: test_server
  # これはキーワード
  become: yes
  vars:
    # この変数でbecomeの可否が上書きされる
    ansible_become: no
  roles:
    - role: test

ansible_user

同じくsshでログインするユーザー名。これは変数。

特殊な変数 Special Variables — Ansible Documentation

ansible_ssh_user

同上(古いので非推奨1)

ansible_password

sshのpassword。変数。
さらに、becomeのpasswordとしても使える。そのため、これを設定しておけばansible_become_passwordは書かなくてもよい。
2021.07.17 修正
SSHを公開鍵認証で接続できているなら、これは書かなくてもよい。ただし、ansible_become_passwordは必須。

ansible_ssh_password

同上(古いので非推奨2)

ansible_become_password

becomeのpassword。変数。
これをsshのpasswordとして使うことはできない。

ansible_become_pass

同上(古いので非推奨3)

(余談)ansible.cfgについて

become_userremote_userなどのキーだけでなく、ANSIBLE_REMOTE_USERのような環境変数としての記述もできる。

キーと環境変数一覧 Ansible Configuration Settings — Ansible Documentation

しかし、ここにはpasswordについてのキー、環境変数は定義されていない。


...結局
ユーザー名とパスワードのセットで書いておきたいし、group_varsにansible_useransible_passwordを書いておくのでFAにしようと思う。

Ref

Controlling how Ansible behaves: precedence rules — Ansible Documentation


  1. 詳細は↓

  2. こちらへ↓

  3. どうぞ!tekunabe.hatenablog.jp