はじめに
ini ファイル形式のインベントリファイルで指定された ansible_become
変数の値の解釈が ansible 2.10.0 で修正されました。
- changelog
The ansible_become value was not being treated as a boolean value when set in an INI format inventory file (fixes bug https://github.com/ansible/ansible/issues/70476).
2.9 系との動作を比較して検証します。
前提となる ini 形式のインベントリファイル
[awx] awx1 [awx:vars] ansible_host=10.0.0.145 ansible_user=admin ansible_become=hogehoge
become が true
扱いなら、リモートでも実行ユーザーが、root
ユーザー、 false
なら admin
ユーザーとなります。
Ansible 2.9 系
whoami
を実行する簡単なアドホックコマンドを実行します。
$ ansible --version ansible 2.9.9 ...(略)... $ ansible -i inventory.ini awx1 -m command -a whoami awx1 | CHANGED | rc=0 >> admin
正常に完了し、admin
と表示されました。つまり ansible_become=hogehoge
の hogehoge
は false
扱いです。
Ansible 2.10.1
先程同じアドホックコマンドを実行します。
$ ansible --version ansible 2.10.1 ...(略)... $ ansible -i inventory.ini awx1 -m command -a whoami awx1 | FAILED | rc=-1 >> the field 'become' has an invalid value (hogehoge), and could not be converted to an bool.The error was: The value 'hogehoge' is not a valid boolean. Valid booleans include: 0, 1, 'off', 'n', '1', 'y', 'true', '0', 'yes', 'no', 'f', 'on', 't', 'false'
hogehoge
という値は正しい boolean 値でないというエラーになりました。有効な値は以下の通りとメッセージがあります。
0, 1, 'off', 'n', '1', 'y', 'true', '0', 'yes', 'no', 'f', 'on', 't', 'false'
試してみると、引き続き True
も False
も(大文字はじまり)正常な boolean として扱われました。