 
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