直接在目标系统上更改值,而不是从源复制文件

时间:2017-07-04 21:55:05

标签: ansible jinja2 ansible-2.x ansible-facts ansible-template

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

示例:

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

/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文件应用某些东西。

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

1 个答案:

答案 0 :(得分:0)

请浏览jinja2 documentsAnsible template module

假设您当前的ansible模块的conf/zk.properties.tmpl.j2文件夹中有此文件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"