【问题标题】:look up variables and change them from an ansible vault dynamically查找变量并从 ansible vault 动态更改它们
【发布时间】:2021-12-23 00:51:38
【问题描述】:

我是 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 中查找并替换它们?

【问题讨论】:

    标签: ansible ansible-vault


    【解决方案1】:

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

    例如使用这样的模板 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
    

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

    【讨论】:

    • 你有这个链接吗?我想看看它,因为我不是java用户@Frenchy
    • 你想要一个任务样本来使用模板吗?所以我不知道你是如何捕获你的 vars Vault 的?
    • 我的想法是使用 ansible vault 将其用作变量存储库,因为我的应用程序的配置文件完全不同。这就是我使用 ansible vault 的原因,因为我想要使用的剧本对于所有 Java 部署都是通用的。我不认为 java 模板对我有用。
    • 我只是解释了如何在 ansible 中构建模板,根据您提供的信息,我无法猜测它是否适合您的环境,我只是回答您的问题,我看不到 java 在这里。 . 模板一次性完成与替换任务相同的操作。展示你的完整剧本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多