我正在使用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"从任务中引用它.
但这并没有解释我如何考虑为不同的环境需要不同的(加密)变量.
有什么建议?