mcd*_*stl 7 ansible ansible-playbook
我正在使用Ansible来处理不同环境的端点差异.这是通过使用变量和ansible-xml扩展来完成的.
例如,我在名为"myapp"的角色中设置了一个名为"endpoints.yml"的任务.此任务在配置文件中设置各种配置参数,替换为变量.
/roles/myapp/tasks/endpoints.yml
—> set value in app config file to: {{ db_user }}
—> set value in app config file to: {{ db_password }}
Run Code Online (Sandbox Code Playgroud)
由于我的非prod环境共享一个端点,因此这些变量的值在角色的默认文件中设置:
/roles/myapp/defaults/main.yml
—> db_user: myuser_ro
—> db_passwordd: some_password
Run Code Online (Sandbox Code Playgroud)
对于prod环境,我用group_variable覆盖默认值(因为这优先):
/环境/ PROD/group_vars/myapp_servers
—> db_user: produser_ro
—> db_password: some_other_password
Run Code Online (Sandbox Code Playgroud)
这一切都很有效,并允许我们在所有环境中使用单个剧本/角色.但是,我想利用ansible-vault将密码值从这些文件中移出并加载到加密文件中.
但是,prod和non-prod仍然会有不同的值.我可以在名为"pass.yml"的角色中创建一个新的"vars"文件,使用ansible-vault对其进行加密,然后使用"include_vars:pass.yml"从任务中引用它.
但这并没有解释我如何考虑为不同的环境需要不同的(加密)变量.
有什么建议?
这听起来像您使用的是多环境的结构像这样.在这种情况下,您可以为每个环境创建一个Vault文件.
environments
??? dev
? ??? group_vars
? ??? all
? ??? secrets
??? prod
??? group_vars
??? all
??? secrets
Run Code Online (Sandbox Code Playgroud)
每个"秘密"文件都可以拥有自己的密码.
| 归档时间: |
|
| 查看次数: |
2303 次 |
| 最近记录: |