首先,我们应该首先./vault/main.yml
从您的项目根目录创建一个 , 并在其中添加密码:
my_vault_secret: "It works!"
然后,选项 A包括具有主要角色的保险库变量,将在剧本运行时分配,创建./roles/role1/default/main.yml
并添加将引用秘密的变量:
my_vault_var: "{{ my_vault_secret }}"
然后my_vault_var
在role_a
, role_b
,中使用role_c
。
或者,选项 B,保留./vault/main.yml
所有秘密,包括在role_a
, role_b
,中使用的秘密role_c
,但不要使用 default/main.yml,而是直接在用于执行任务的剧本中包含 vault 文件role1
和role2
:
- hosts: localhost
connection: local
vars_files:
- "vault/main.yml"
roles:
- role1
- role2
PLAY [localhost] *******************************************************************************************************************************************************************************************
TASK [role_a : debug] ****************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": "It works!"
}
项目结构如下所示,defaults
仅选项 A 需要:
my_ansible_repo
|-- group_vars
|-- main.yml
|-- vault
|-- main.yml
|-- roles
|-- role1
|-- defaults
|-- main.yml
|-- tasks
|-- main.yml
|-- meta
|-- main.yml
|-- role_a
|-- tasks
|-- main.yml
|-- my_playbook.yml
有关 Ansible 默认变量的更多信息,请参见此处的官方文档,以及有关在剧本中使用变量文件的信息,请参见此处。