Ansible の inventory の記述は
var = 'a'
のように、iniファイル形式でしか記述できず、配列やハッシュの表現が単純にはできない。
from_json を使って以下のようにすればできる。
inventory.
[all:vars]
var_array_json = '["A", "B", "C"]'
var_array = '{{var_array_json | from_json}}'
var_hash_json = '{ "a": 1, "b": 2 }'
var_hash = '{{var_hash_json | from_json}}'
変数を確認する Playbook を適当に用意して、
playbook.yml
- hosts: localhost
tasks:
- debug:
var: var_array
- debug:
var: var_hash
実行してみる。
$ ansible-playbook -i inventory playbook.yml
PLAY [localhost] ***************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"var_array": [
"A",
"B",
"C"
]
}
TASK [debug] *******************************************************************
ok: [localhost] => {
"var_hash": {
"a": 1,
"b": 2
}
}
PLAY RECAP *********************************************************************
localhost : ok=3 changed=0 unreachable=0 failed=0
期待値通りの結果を得られる。
でも、あまり使うことはないとは思う。
json 記述はちょっと見ずらいし。