ansible
でパスワードなどの機密情報を扱うのに便利なのはansible-vault
ですよね。
ただ、ファイルまるごとを暗号化してしまうと、その他の値や差分が確認できない問題が生じるので、値ごとの暗号化を使うと便利です。
vars/users.yml
users:
- name: user1
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
- name: user2
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXX
ただ、これにも問題があって、ファイルまるごとの暗号化ではないため、ansible-vault view
で内容を確認することができません。
$ ansible-vault view vars/users.yml
ERROR! input is not vault encrypted data for vars/users.yml
そこで、パスワードを表示する専用のplaybookを用意しましょう。
show_password.yml
- hosts: all
tasks:
- name: show users
debug:
var: item
verbosity: 1
with_items: "{{ users }}"
このplaybookを実行すると、簡単に確認ができるようになります。
$ ansible-playbook show_password.yml
TASK [show users] ***********************************************************************************************************************
skipping: [host] => (item={u'password': u'XXXXXXXX', u'name': u'user1'})
skipping: [host] => (item={u'password': u'XXXXXXXX', u'name': u'user2'})
verbosity: 1
を指定しているのは debug
タスクによる表示を抑制するためです。
with_items
時点で item
の内容が表示されてしまうので、 debug
タスクの表示がされると二重表示になってしまいます。
ansible-vault view
が対応してくれるまでの代替措置としてお使いください。