0

使用 ansible 寻找直接在目标系统上更改值的想法,而不是从源复制文件。

例子:

我在目标系统上有许多 tmpl 格式的文件,并且想<%= applicationname_zk_quorum %>通过动态使用 ansible 变量来更改与此相关的值。

/applactionname/conf/zk.properties.tmpl

[root@applicationname-7 ~]# cat /applicationname/conf/zk.properties.tmpl
#nodes in quorum

applicationname.zk.quorum=<%= applicationname_zk_quorum %>
#applicationname.zk.quorum=zook1:6666,zook2:6666,zook3:6666

applicationname.zk.node=/applicationnames/node/

#Session timeout in milliseconds
applicationname.zk.sessionTimeout=72000

我知道 ansible 变量仅支持处理 yaml 并且不知道是否可以为 tmpl 文件应用某些内容。

非常感谢大家的支持和指导!!!。

4

1 回答 1

0

请浏览jinja2 文档Ansible 模板模块

假设您conf/zk.properties.tmpl.j2在当前 ansible 模块的templates文件夹中有此文件

- template:
    src: conf/zk.properties.tmpl.j2
    dest: /applicationname/conf/zk.properties.tmpl
    owner: root
    group: root
    mode: 0644

您可以在 中定义变量conf/zk.properties.tmpl.j2。例如:

#nodes in quorum

applicationname.zk.quorum=<%= {{ applicationname_zk_quorum }} %>

applicationname.zk.node=/applicationnames/node/

#Session timeout in milliseconds
applicationname.zk.sessionTimeout=72000

在 vars 文件夹中,您可以将此变量定义applicationname_zk_quorum为 yml 文件,例如tmpl.yml.

applicationname.zk.quorum: "zook1:6666,zook2:6666,zook3:6666"
于 2017-07-05T06:19:29.613 回答