假设我在存储库中有一些应用程序 . 敏感数据(如数据库用户名密码)不会存储在存储库中,而是存储在单独的加密密码数据库中 . 在源代码中只有这样的占位符: %%mysqlpassword%%
.
我想创建一个ansible-playbook来检查代码并替换用户凭证 .
我有两个想法:
-
带模板或
-
与替换模块 .
有没有最佳实践方法来完成这项任务?
---
- hosts: test
vars_prompt:
- name: "mysqlpassword"
prompt: "Enter mysql password for app"
private: yes
tasks:
- name: copy code from repo
subversion: repo=https://repo.url.local/app dest=/srv/www/app
- name: Replacement of sensitive data by templating
template: src=mysqlconnect.php.j2 dest=/srv/www/app/inc/mysqlconnect.php
- name: Replacement of sensitive data by replacement function
replace: dest=/srv/www/app/inc/mysqlconnect.php regexp='%%mysqlpassword%%' replace='{{ mysqlpassword }}'
1 回答
你的问题的最佳答案是使用
ansible-vault
.1-在模板中使用
mysqlpassword
作为变量{{ mysqlpassword }}
mysqlconnect.php.j2
2-使用您的安全用户名和密码的所有值创建单独的文件,如
my_very_secure.yml
(您想要的任何名称):之后,您可以使用
ansible-vault
加密此文件:然后,您可以将此文件存储到源控制服务器中,因为它已加密或保留在ansible主服务器上,但是一旦您准备好运行该剧本,只需包含像这样的
--ask-vault-pass
选项和安全文件的路径:希望这会帮助你 .