Ansible vaultを使ってみた

大きなシステムを扱ったり自動デプロイを実施するには機密情報の扱いに悩む。 とりあえずansible-vaultを使っている。 inventory ファイルを暗号化しても ansible-playbook から問題なく読めた。結構いろいろなファイルを暗号化しても利用できた。 管理方法の選択肢が増えた。

前置き

昔は playbook のリポジトリではシステムの論理構成を記載していて、物理構成は扱わないようにしている。そのため今のところ機密情報が含まれない。そのような状況では ansible-vault を使う動機はない。でもベストプラクティスは(物理構成を含む) 実際の システムをバージョン管理している。

これは当たり前でInfrastructure as Codeって方針が、 (物理構成を含む)実際のシステムの構築・管理を安定で高速なプロセスに変えていくためにソフトウェア開発のアプローチを取り入れるのを目指している。 Ansible もそれに賛同したソフトウェアであるため物理構成をスコープに入れるのは自然だと思う。

もちろん物理構成も管理したい。ただ物理構成には権限周りの具体的な機密情報が含まれる。 管理ツールは共通化した方が効率が良いためチーム外のシステムで管理することが多い。暗号化した方が良い。

前置きが長くなってしまったけど ansible-vault を触ってみましたってだけです。

ansible-vault の使い方

encrypt サブコマンドで暗号化する。

1
2
3
ansible-vault encrypt ./vars/main.yml
ansible-vault encrypt ./hosts
ansible-vault encrypt ./vars/vault.yml

サブコマンドで閲覧したり編集する

1
2
ansible-vault view ./vars/vault.yml
ansible-vault edit ./hosts

ansible-playbook で使ってみる。 –ask-vault-pass, –vault-password-file で復号化用のパスワードやパスワードファイルを渡す。

1
2
ansible-playbook --ask-vault-pass ./site.yml
ansible-playbook --vault-password-file ./system.vault-pass ./site.yml

ansible.cfg でオプション(ask_vault_pass, vault_password_file)を設定しても良い。

1
2
3
[all:vars]
ask_vault_pass = True
# vault_password_file=./system.vault-pass
comments powered by Disqus