コマンドラインで変数を定義する
コマンドラインで変数を渡す https://docs.ansible.com/ansible/2.9_ja/user_guide/playbooks_variables.html#passing-variables-on-the-command-line
https://stackoverflow.com/questions/34414710/how-to-access-to-list-of-all-ansible-extra-vars-passed-from-the-cli-variable
変数を参照するコマンド(ansible, ansible-playbook など)では以下のオプションが有効になっている。
-e オプション
--extra-vars オプション
key=value 形式で指定する場合
$ ansible ... --extra-vars "key1=value1 key2=value2" ...
value はすべて文字列になる。それ以外を渡したい場合は JSON 形式にする必要がある。
code:console
$ ansible -e "hello=world key2=value2" -m debug -a '{"msg":"{{ hello }}"}' localhost
WARNING: Using a variable for a task's 'args' is unsafe in some situations (see https://docs.ansible.com/ansible/devel/reference_appendices/faq.html#argsplat-unsafe)
localhost | SUCCESS => {
"msg": "world"
}
JSON 形式で指定する場合
JSON では各項目をすべてダブルクォーテーションで括る必要があることに注意。このためシングルクォーテーションで全体を括る必要がある。
$ ansible ... --extra-vars '{"key1":"value1", "key2":123 }' ...
code:console
$ ansible -e '{"hello":"world", "key1":"value1"}' -m debug -a '{"msg":"{{ hello }}"}' localhost
WARNING: Using a variable for a task's 'args' is unsafe in some situations (see https://docs.ansible.com/ansible/devel/reference_appendices/faq.html#argsplat-unsafe)
localhost | SUCCESS => {
"msg": "world"
}
ファイルを指定する場合
JSON または YAML ファイルを指定できる。
$ ansible ... --extra-vars "@ファイル名" ...
ファイルは暗号化されていてもよい。その場合はパスワードファイルを指定する必要がある。