AnsibleのPlaybookを作成して実行していると実行前になんらかの変数を入力させたいことがあります。vars_prompt
を使うと実現できます。
playbook.yml
- name: Test
hosts: localhost
vars_prompt:
- name: "input_var"
prompt: "INPUT: "
confirm: no
private: no
default: "fish"
tasks:
- debug: msg="{{ input_var }}"
beefを指定してみます。
$ .venv/bin/ansible-playbook playbook.yml
[WARNING]: Host file not found: /etc/ansible/hosts
[WARNING]: provided hosts list is empty, only localhost is available
INPUT: [fish]: beef
_____________
< PLAY [Test] >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/ ||----w |
|| ||
______________
< TASK [setup] >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/ ||----w |
|| ||
ok: [localhost]
______________
< TASK [debug] >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/ ||----w |
|| ||
ok: [localhost] => {
"msg": "beef"
}
____________
< PLAY RECAP >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/ ||----w |
|| ||
localhost : ok=2 changed=0 unreachable=0 failed=0
指定せずにENTERを押すとデフォルト値が使われます。
$ .venv/bin/ansible-playbook playbook.yml
[WARNING]: Host file not found: /etc/ansible/hosts
[WARNING]: provided hosts list is empty, only localhost is available
INPUT: [fish]:
_____________
< PLAY [Test] >
-------------
\ ^__^
\ (oo)\_______
(__)\ )\/ ||----w |
|| ||
______________
< TASK [setup] >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/ ||----w |
|| ||
ok: [localhost]
______________
< TASK [debug] >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/ ||----w |
|| ||
ok: [localhost] => {
"msg": "fish"
}
____________
< PLAY RECAP >
------------
\ ^__^
\ (oo)\_______
(__)\ )\/ ||----w |
|| ||
localhost : ok=2 changed=0 unreachable=0 failed=0