ansible vault 暗号化

Pocket

便利なので記事として書いて置く

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系だしずいぶん前の話

オプションはいろいろあるけど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パスワードだけ管理してればいいので良い

コメントを残す

メールアドレスが公開されることはありません。