目次- Vault暗号化モジュール
- ansible-vaultの基本的な操作
- Playbookとの連携方法
Ansible Vault暗号化機能
Ansibleに内蔵されたVault機能は、AES-256暗号アルゴリズムを使用し、高いセキュリティを実現します。この機能により、パスワードや機密情報をPlaybookと一緒に安全に保管することが可能です。
ansible-vaultの基本操作
ansible-vaultはシンプルな暗号化・復号機能を提供しており、同じパスワードで同じファイルを複数回暗号化しても、出力されるファイルは異なります。また、復号化後も元の内容が完全に保持されます。
- edit: 暗号化されたファイルを編集する
- rekey: 既存の暗号化ファイルのパスワードを変更する
- create: 新しいファイルを作成し、同時に暗号化する
- view: 暗号化されたファイルの中身を確認する
- decrypt: ファイルの暗号を解除する
以下のような内容のファイルmysql_passwd.ymlを作成します。
---
user: root
password: root
ファイルを暗号化するには以下のコマンドを使用します。
ansible-vault encrypt mysql_passwd.yml
New Vault password: *****
Confirm New Vault password: *****
Encryption successful
暗号化されたファイルの内容を確認すると以下のようになります。
cat mysql_passwd.yml
$ANSIBLE_VAULT;1.1;AES256
34623561613433333733393964323363633439626237376265643434633733316365373563323266
3836336565343932636237633634666633623631303366620a623865303763363561363830376634
30343435306638616532313833653363663339633239393465363138386234366330613936343230
3631666364636664300a383634336237623433393632666463366261633462303436363234383264
36643639613461616363376538353466663534366663333336323137396564336462
パスワードを入力してファイルの内容を表示する場合、ファイルは暗号化されたままです。
ansible-vault view mysql_passwd.yml
Vault password: *****
---
user: root
password: root
ファイルを復号化するには以下のコマンドを使用します。
ansible-vault decrypt mysql_passwd.yml
Vault password: *****
Decryption successful
cat mysql_passwd.yml
---
user: root
password: root
Playbookとの連携
mysql_passwd.ymlはすでに暗号化されています。vault01.yamlというファイルを作成します。
---
- hosts: ubuntu
vars_files:
mysql_passwd.yml
tasks:
- name: debug passwd
debug:
msg:
- "{{ user }}"
- "{{ password }}"
このPlaybookを実行する際は、--ask-vault-passオプションでパスワードを入力する必要があります。これは自動化運用には向いていませんので、後述のようにファイルからパスワードを指定することも可能です。
ansible-playbook vault01.yaml --ask-vault-pass
Vault password: *****
PLAY [ubuntu] *******************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************
ok: [107.151.199.209]
TASK [debug passwd] *************************************************************************************************************************************
ok: [107.151.199.209] => {
"msg": [
"root",
"root"
]
}
PLAY RECAP **********************************************************************************************************************************************
107.151.199.209 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
パスワードをvault_pass.txtファイルに記載します。このファイルの権限は600に設定してください。
12345
パスワードファイルを指定してPlaybookを実行できます。
ansible-playbook vault01.yaml --vault-password-file ./vault_pass.txt
PLAY [ubuntu] *******************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************
ok: [107.151.199.209]
TASK [debug passwd] *************************************************************************************************************************************
ok: [107.151.199.209] => {
"msg": [
"root",
"root"
]
}
PLAY RECAP **********************************************************************************************************************************************
107.151.199.209 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
より詳細なオプションや使用例については公式ドキュメントをご参照ください。 公式リンク