2020年11月3日火曜日

ansible vault 超入門

概要

触ってみないことにはわからないのでこちらのチュートリアルっぽい記事を参考に自分でも試してみました

環境

  • macOS 10.15.7
  • ansible 2.9.10

とりあえず動作する playbook の作成

まずはパスワードを暗号化していない状態で正常に動作する playbook を作成します

  • vim hosts
localhost ansible_connection=local
  • vim site.yml
---
- hosts: localhost
  gather_facts: no
  vars_files:
    - vault.yml
  tasks:
    - debug: msg="password = {{ password }}"
  • vim vault.yml
---
password: 'hogehoge'

これで実況すると vault.yml のパスワードの内容がそのまま表示されるのが確認できると思います

  • ansible-playbook -i hosts site.yml

ansible vault を使って vault.yml に書かれているパスワードを暗号化する

ansible-vault encrypt コマンドを使って先程の暗号化されていない vault.yml ファイルを指定します
この際に暗号化するためのパスワードが要求されるので適当に入力しましょう

  • ansible-vault encrypt vault.yml
New Vault password: Confirm New Vault password: Encryption successful

暗号化に成功すると上記のようになります
暗号化に使用したパスワードは別途ちゃんと覚えておきましょう

ファイルの内容を確認すると今度は暗号化された内容になっているが確認できると思います

  • cat vault.yml
$ANSIBLE_VAULT;1.1;AES256 63353464303138643235653836613236623637613733626562663234363866393836653064323337 3230346232373261353165616561313831323134633338390a396666303637323336346566343836 30306662343835303261386235313064636162373064626539386539633334396530383766326438 6230386530393864330a643162386461613066653537666431636162353361303934336361626131 32646165653533346639343137356465396362613237643562363030393966663565

この状態で再度 playbook を実行しようとすると今度はエラーになります

  • ansible-playbook -i hosts site.yml
ERROR! Attempting to decrypt but no vault secrets found

暗号化されたファイルを使って playbook を流してみる

暗号化する際に入力したパスワードを使うことで暗号化されたファイルを使って playbook を実行することができます
--ask-vault-pass というオプションを使えば OK です

  • ansible-playbook -i hosts site.yml --ask-vault-pass

これで Vault password の入力が求められるので暗号化したときのパスワードを入力すれば OK です

Vault password を入力しない場合は

毎回 Vault password を入力するのが面倒という場合は ansible.cfg を使うことで解決できます

  • vim ansible.cfg
[defaults]
vault_password_file = ~/.vault_password
  • vim ~/.vaule_password

でファイルを開いて Vault password を書いておくことで --ask-vault-pass が不要になります

  • ansible-playbook -i hosts site.yml

暗号化したファイルを復号化するには

単純に復号化してファイルの内容を確認することができます
その場合は ansible-vault decrypt を使います

  • ansible-vault decrypt vault.yml

ansible.cfg に vault_password_file が記載されていてすでに復号化用のパスワードが記載されている場合は Vault password を入力せずに復号化できます

再度暗号化する場合は ansible-vault encrypt を使います

  • ansible-vault decrypt vault.yml

最後に

ansible-vault を使ってみました
やろうと思えばこれですべての playbook を暗号化できますがそこまでやる必要はないと思います

参考サイト

0 件のコメント:

コメントを投稿