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