使用ansible-Vault加密字串
在撰寫 Playbook 時,難免會用到敏感性的資訊,Ansible 提供了 ansible-vault 這個工具,可以針對檔案或是字串來做加密。
如果變數內容需要加密的話,該怎麼使用呢?
舉個例子,假設 playbook 或 inventory 裏面的 foo 這個變數的內容 “password123” 需要加密,那麼要先使用 ansible-vault 來加密字串。
ansible-vault encrypt_string password123 --ask-vault-pass
執行以後,會詢問 vault 的密碼,這個密碼是在後續執行 playbook 時會用到解密的鑰匙。
詢問完密碼,就會輸出這些內容
!vault |
$ANSIBLE_VAULT;1.1;AES256
66333264313637393563336433623136303366613464643938643133643234386664383738336139
6536653132383166333736386130383264373230643734650a633235643336643536336163663864
61303063376639643139643331306133313533326463616635323838333733653862613736333430
6366373436343532340a313137336138383135343336333538656161666134303132653936656331
3131
Encryption successful
複製起來,把內容貼到 playbook 或 inventory 裡
---
- name: Test vault
hosts: all
vars:
foo: !vault |
$ANSIBLE_VAULT;1.1;AES256
66333264313637393563336433623136303366613464643938643133643234386664383738336139
6536653132383166333736386130383264373230643734650a633235643336643536336163663864
61303063376639643139643331306133313533326463616635323838333733653862613736333430
6366373436343532340a313137336138383135343336333538656161666134303132653936656331
3131
tasks:
- debug:
var: foo
然後在執行時,需要指定 --ask-vault-pass
ansible-playbook -i localhost, -c local --ask-vault-pass test-vault.yml
那這邊還有些變形的用法,後續整理好,再來分享。