■ はじめに
Ansible で管理対象ホストのユーザー名やパスワードを定義する変数名はいくつかあります。
- ユーザ名
ansible_ssh_user
ansible_user
- パスワード
ansible_ssh_pass
ansible_pasword
みなさんはどのよいうに使い分けていますでしょうか。
先日たまたま、現在開発中の Ansible 2.8 の Porting Guide を眺めていたら、
- ユーザー名とパスワードは
ansible_user
とansible_pasword
という変数名に統一しましょう ansible_ssh_user
のようなコネクションタイプ名が含まれる変数名は将来的に非推奨になるだろう
という旨の記述を見かけました。
Connection plugins have been standardized to allow use of ansible<conn-type>user and ansible<conn-type>password variables. Variables such as ansible<conn-type>pass and ansible<conn-type>username are treated with lower priority than the standardized names and may be deprecated in the future. In general, the ansible_user and ansible_password vars should be used unless there is a reason to use the connection-specific variables.
この記事では本件の経緯などをまとめます。
(以下ツイートの続きです)
Ansible で指定する認証情報の変数。ansible_ssh_pass だったり、ansible_password だったり複数使えてどう統一するのが良いのかなと思ったら、開発中の Ansible 2.8 のポーティングガイドに
— よこち(yokochi) (@akira6592) 2019年2月23日
「ansible_user、ansible_password に統一していこうな」
と記載がありました。https://t.co/MVhdMFWhv6
■ 経緯
下記の issue で、 _pass
や _password
などの複数の変数名が許容されているものは、ドキュメント上は標準化していったほうが良いのではという提案がありました。
対するプルリクは以下のものです。
ドキュメントやログメッセージに含まれる変数名が以下のように変更されていることが、変更の差分で確認できます。
ansible_ssh_user
からansible_user
ansible_ssh_pass
からansible_password
ansible_become_pass
からansible_become_password
■ そもそもどのような変数名が使えるの?
もし既存の Playbook や 変数名の中から認証情報に関する変数名を洗い出して統一するために修正する場合、そもそもどのような変数名が使えるのかを知る必要があります。その場合は、各コネクションプラグイン(最新版Doc、開発中Doc)の説明ページで確認できます。
例えばネットワークモジュール向けのひとつ、 network_cli
コネクションプラグイン (最新版Doc、開発中Doc) であれば、パスワードとして ansible_ssh_pass
や ansible_password
を利用できることが確認できます。
■ まとめ
Ansible で管理対象ホストのユーザー名やパスワードを定義する変数名は、標準化、将来性のため ansible_user
、ansible_password
に統一したほうが良さそうです。