Ansible Documentation
Prompts機能
- vars セクションに記述する
- 実行時に変数の値をキーボード入力する
- --extra-vars オプションが指定された場合、オプションが優先される
パラメータ
パラメータ | 選択肢/ Default | 説明 |
---|---|---|
confirm | ・ no ・ yes | yes を指定すると確認入力を行う |
default | - | 入力値が省略([Enter]だけ)のときのデフォルト値 |
encrypt | ・ des_crypt ・ bsdi_crypt ・ bigcrypt ・ crypt16 ・ md5_crypt ・ bcrypt ・ sha1_crypt ・ sun_md5_crypt ・ sha256_crypt ・ sha512_crypt ・ apr_md5_crypt ・ phpass ・ pbkdf2_digest ・ cta_pbkdf2_sha1 ・ dlitz_pbkdf2_sha1 ・ scram ・ bsd_nthash | 入力した値を暗号化するときの方式 ・ des_crypt - DES Crypt ・ bsdi_crypt - BSDi Crypt ・ bigcrypt - BigCrypt ・ crypt16 - Crypt16 ・ md5_crypt - MD5 Crypt ・ bcrypt - BCrypt ・ sha1_crypt - SHA-1 Crypt ・ sun_md5_crypt - Sun MD5 Crypt ・ sha256_crypt - SHA-256 Crypt ・ sha512_crypt - SHA-512 Crypt ・ apr_md5_crypt - Apache’s MD5-Crypt variant ・ phpass - PHPass’ Portable Hash ・ pbkdf2_digest - Generic PBKDF2 Hashes ・ cta_pbkdf2_sha1 - Cryptacular’s PBKDF2 hash ・ dlitz_pbkdf2_sha1 - Dwayne Litzenberger’s PBKDF2 hash ・ scram - SCRAM Hash ・ bsd_nthash - FreeBSD’s MCF-compatible nthash encoding |
name | - | 入力した値を格納する変数 |
private | ・ no ・ yes | yes を指定すると入力した値をエコー表示(エコーバック)しない |
prompt | - | 変数に値を入力するよう促すメッセージ |
sault_size | 8 | 暗号化するときに付与するデータ(salt)のサイズ |
unsafe | ・ no ・ yes | 入力する値にテンプレートエラーを発生させる可能性がある特殊文字(例 % )を含む可能性がある場合に yes を指定する |
例
■ 基本的な使用例--- - hosts: all gather_facts: no vars_prompt: - name: username prompt: "ユーザー名を入力してください" private: no - name: password prompt: "パスワードを入力してください" tasks: - debug: msg: '{{ username }} でログインしています'実行結果です。最初の入力は private: no が指定されているので、入力した値がエコーバックしています。
ansibleman@ubuntu-pc:~/ansible/vars$ ansible-playbook -i localhost, -c local site.yml
ユーザー名を入力してください: user
パスワードを入力してください:
PLAY [all] *********************************************************************************************************************************************************
TASK [debug] *******************************************************************************************************************************************************
ok: [localhost] => {
"msg": "user でログインしています"
}
PLAY RECAP *********************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleman@ubuntu-pc:~/ansible/vars$
■ confirm の使用例
--- - hosts: all gather_facts: no vars_prompt: - name: username prompt: "ユーザー名を入力してください" private: no - name: password confirm: yes prompt: "パスワードを入力してください" tasks: - debug: msg: '{{ username }} でログインしています'実行結果です。パスワードの入力は confirm: yes が指定されているので、再入力が必要になっています。confirm: yes を指定すると、同じ値を入力するまで再入力が繰り返されます。
ansibleman@ubuntu-pc:~/ansible/vars$ ansible-playbook -i localhost, -c local site.yml
ユーザー名を入力してください: user
パスワードを入力してください:
confirm パスワードを入力してください:
***** VALUES ENTERED DO NOT MATCH ****
パスワードを入力してください:
confirm パスワードを入力してください:
PLAY [all] *********************************************************************************************************************************************************
TASK [debug] *******************************************************************************************************************************************************
ok: [localhost] => {
"msg": "user でログインしています"
}
PLAY RECAP *********************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleman@ubuntu-pc:~/ansible/vars$
■ encrypt の使用例
--- - hosts: all gather_facts: no vars_prompt: - name: username prompt: "ユーザー名を入力してください" private: no - name: password encrypt: "sha512_crypt" unsafe: yes private: no prompt: "パスワードを入力してください" tasks: - debug: msg: '{{ username }} でログインしています' - debug: msg: '暗号化されたパスワード : {{ password }}'実行結果です。sha512_crypt で暗号化されたパスワードが表示されています。
ansibleman@ubuntu-pc:~/ansible/vars$ ansible-playbook -i localhost, -c local site.yml
ユーザー名を入力してください: abc
パスワードを入力してください: %$&
PLAY [all] *********************************************************************************************************************************************************
TASK [debug] *******************************************************************************************************************************************************
ok: [localhost] => {
"msg": "abc でログインしています"
}
TASK [debug] *******************************************************************************************************************************************************
ok: [localhost] => {
"msg": "暗号化されたパスワード : $6$UZPe2lkOJ48V.zHd$58ZDM8aQZUYLUzoLtHQmxsXrGkwUyPDe3NZomW2WjWV6luvU074lHyreLyy28pus7C7/SKOE/kDfEWROgT3bK0"
}
PLAY RECAP *********************************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleman@ubuntu-pc:~/ansible/vars$
■ private の使用例
--- - hosts: all gather_facts: no vars_prompt: - name: ans prompt: "処理を実行しますか?" default: "no" private: no tasks: - debug: var: ans実行結果です。何も入力しないと、default: で指定した値が設定されているのがわかります。
ansibleman@ubuntu-pc:~/ansible/vars$ ansible-playbook -i localhost, -c local site.yml
処理を実行しますか? [no]:
PLAY [all] *********************************************************************************************************************************************************
TASK [debug] *******************************************************************************************************************************************************
ok: [localhost] => {
"ans": "no"
}
PLAY RECAP *********************************************************************************************************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ansibleman@ubuntu-pc:~/ansible/vars