查找变量并动态地从 ansible vault 更改它们

look up variables and change them from an ansible vault dynamically

我是ansible的新手,当我想替换配置文件中的变量时遇到问题。情况是我在这个文件中有标签要替换为在 ansible-vault 中找到的值,该值与配置文件中的标签同名。

配置文件如下所示:

mongo.uri=<%=@dbruchost%> 
mongo.replica.set=set0
mongo.database=<%=@dbrucdb%>
mongo.user=<%=@dbrucuser%>
mongo.password=<%=@dbrucpass%>

ansible-vault如下

vars:
    dbruchost: "test.test:27017"
    replica.set: "set0"
    dbrucdb: "database1"
    dbrucuser: "data"
    dbrucpass: "d4t4"
    jenkinsuser: "jenkinstest"
    jenkinspassword: "j3nkins"

实际上我用正则表达式一个一个地改变变量

- name: Replace uri
  replace:
    path: /tmp/artifacts/surveyMonkey/application.properties
    regexp: "<%=@dbruchost%>"
    replace: vars.dbruchost

但我想动态地做。 ansible 是否有可能从应用程序属性中读取标签并在 ansible-vault 中查找并替换它们?

为什么不为您的配置文件使用模板:

使用模板 file.j2 例如:

mongo.uri={{ dbruchost }} 
mongo.replica.set=set0
mongo.database={{ dbrucdb }}
mongo.user={{ dbrucuser }}
mongo.password={{ dbrucpass }}

您添加一个任务以使用模块模板创建您的配置文件

任务示例:将您的 config.j2 放在模板目录中

  tasks: 
    - name: Dump all variables
      template:
        src: file.j2 
        dest: /tmp/artifacts/surveyMonkey/application.properties

我想您可以访问您的保险库变量