便利なので記事として書いて置く
varsは書くrole毎に管理してもいいが環境が複数ある場合はgroup_varsとして管理するのが楽
そこにパスワードを直で書いてgitとかで見える形で置いて置くのはちょっとやだ
ディレクトリ構成
astel-no-MacBook-Pro% cd group_vars
astel-no-MacBook-Pro% ls
dev production
astel-no-MacBook-Pro% tree
.
├── dev
│ ├── vars.yml
│ └── vault.yml
└── production
├── vars.yml
└── vault.yml
2 directories, 4 files
inventory
[test] astail.net ansible_ssh_port=2222 [production:children] test
こうすることでproduction環境はgroup_vars/production/vars.yml を読んでくれる
vars.yml 例
astel-no-MacBook-Pro% cat vars.yml
deploy_branch: master
mysql_passwd: "{{ vault_production.mysql_passwd }}";
vault.yml 例
astel-no-MacBook-Pro% cat vault.yml --- vault_production: mysql_passwd: qaswedrftgyhujikol
このように書ける
ここからvault.ymlを暗号化する
ansible-vault ansible バージョン 1.5で登場したらしい もう2系だしずいぶん前の話
暗号化 ansible-vault encrypt vault.yml
複合化 ansible-vault decrypt vault.yml
暗号化してみる
astel-no-MacBook-Pro% cat vault.yml --- vault_production: mysql_passwd: qaswedrftgyhujikol astel-no-MacBook-Pro% ansible-vault encrypt vault.yml New Vault password: Confirm New Vault password: Encryption successful astel-no-MacBook-Pro% cat vault.yml $ANSIBLE_VAULT;1.1;AES256 34646661306462306236363030306662306133393537666139393330336261646235393831316334 3339626461353730336232366630343134646661646561310a656566666531376333623439386531 39353532663866373163623964613930303363333635373037643437616361343132323362383530 6133306336396639610a626434366434363239383332633230333833363839393765303731663431 65303837383566663664663366353965313531346234653361353236393264643639306462663664 33353137363934386166653932363631623435626334643837353331383531363932386166666536 663931383866653832353135386234626534
パスワードは一文字でもいけた
復号
astel-no-MacBook-Pro% ansible-vault decrypt vault.yml Vault password: Decryption successful astel-no-MacBook-Pro% cat vault.yml --- vault_production: mysql_passwd: qaswedrftgyhujikol
暗号化してplaybookを流す場合はオプションとして --ask-vault-pass を渡す必要があります
astel-no-MacBook-Pro% ansible-playbook -i inventory/hosts aaa.yml --ask-vault-pass Vault password: PLAY *************************************************************************** TASK [setup] ******************************************************************* ok: [astail.net] (ry
インフラの人たちでvaultパスワードだけ管理してればいいので良い