如果我使用加密host_vars/*文件ansible-vault,我似乎没有机会拥有除加密清单文件之外的非加密主机变量.我错过了什么吗?
x-y*_*uri 24
事实证明,host_vars- 和 - group_vars文件实际上可能是目录.也就是说,而不是创建host_vars/example.com一个可能创建host_vars/example.com/vault和host_vars/example.com/vars.读取驻留在目录中的所有文件.这解决了它.
此外,最佳做法是vault_在vault文件中存储前缀的敏感变量,并将它们重新分配给文件中的非前缀变量vars.像这样:
vault:
vault_mysql_password: '...'
Run Code Online (Sandbox Code Playgroud)
vars:
mysql_password: '{{ vault_mysql_password }}'
Run Code Online (Sandbox Code Playgroud)
这样,您就可以使用grep或任何类似的工具找到加密变量.
这是一个完整的例子,所有的联系都已写上。我在讲究这些时,我迫切需要的东西。上下文,上下文,上下文。
如果Ansible与所调用的剧本在同一目录中,它将自动加载该文件。
---
# File: /path/to/playbook/ansible.cfg
[defaults]
inventory = /path/to/playbook/hosts.ini
Run Code Online (Sandbox Code Playgroud)
该文件定义主机组。在此示例中,只有local组很重要。
---
[local]
localhost ansible_connection=local ansible_python_interpreter=/usr/bin/python2
[ec2]
xx.xx.xx.xx ansible_ssh_private_key_file=/path/to/ec2/keys/key.pem
Run Code Online (Sandbox Code Playgroud)
ap-southeast-1地区 Name: ec2-go剧本。
---
# File: gather.yml
- name: Gather remote EC2 facts
hosts: local
connection: local
gather_facts: False
# Necessary variables for fact gathering
vars:
params:
region: ap-southeast-1
tasks:
- name: Gather EC2 facts.
ec2_remote_facts:
aws_secret_key: "{{ secret_access_key }}"
aws_access_key: "{{ access_key_id }}"
region: "{{ params['region'] }}"
filters:
"tag:Name": ec2-go
register: ec2_facts
- name: Print the id of the first instance tagged with "Name: ec2-go"
debug:
msg: "{{ ec2_facts['instances'][0]['id'] }}"
- name: Print ALL of the ec2_facts
debug:
msg: "{{ ec2_facts }}"
Run Code Online (Sandbox Code Playgroud)
/path/to/playbook
/group_vars
/local
vars
vault
Run Code Online (Sandbox Code Playgroud)
你猜怎么了?我毫不费力地vars_files在我的剧本中访问任何这些文件,那就是MAGIC!当我的剧本正在访问主机组时[local],如果我们引用了一个加密的var ,那么ansible会自动访问该/path/to/playbook/group_vars/local目录并加载varsAND加密vault文件(我们现在就开始讨论)。
注意,我们通过在裸变量前面加上来自动访问加密的Vault文件vault_。无需进一步操作即可将它们链接起来。保持var名称相同(即myVar-> )是习惯用法(最佳做法)vault_myVar。所有这些操作的优点是,它使变量名可见(认为grep),而不是隐藏在加密的文件中。
---
# File: /path/to/playbook/group_vars/local/vars
access_key_id: AKIAS_YOUR_MUM_MQTFHA
secret_access_key: "{{ vault_secret_access_key }}"
Run Code Online (Sandbox Code Playgroud)
我们使用ansible-vault encrypt vault和密码对该文件进行加密。我们使用ansible-vault decrypt vault或更安全地进行解密,只需使用进行解密即可ansible-vault edit vault:
---
# File: /path/to/playbook/group_vars/local/vault
vault_secret_access_key: youShOuLDnOTtRUstEVEryThInGYoUrEAdOniNtErnET
Run Code Online (Sandbox Code Playgroud)
$ ANSIBLE_VAULT; 1.1; AES256 36613032373533636330363539653565343463333135633564303036653732616435663462306637 6363383237386461613338626362653465343636366264610a623537393937646635366638393362 65353235653166396565333231336332666135663239386162633862356534393066383265333466 6465373962326662350a613339343234376564373662316234653364386337323130663039313239 35353031393437333463346132643632323865623963373862303539363162326161396464353031 39336334346438396161386365653161653231396430646433613132376233666431663863393066 35343433623563653164353730386339316366656666306265353931393337363937376632396332 32333164393534366337663333626566366134373766373137336366366230613763333939633165 35383432666233656363316630643031366431656261386531326162343035393739653366353462 3930356637616130373033333266393639666233666362313935
-ask-vault-pass由于Vault引用了ONE变量,因此需要cmdline参数。
ansible-playbook gather.yml --ask-vault-pass
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3528 次 |
| 最近记录: |