【问题标题】:changing values directly on the destination system instead of copying file from the source直接在目标系统上更改值,而不是从源复制文件
【发布时间】:2017-07-04 21:55:05
【问题描述】:

使用 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 文件应用某些内容。

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

【问题讨论】:

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


    【解决方案1】:

    请通过jinja2 documents和Ansible template module

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

    - 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"
    

    【讨论】:

    • BMW@ 非常感谢你,它帮助我更好地理解你的例子来解决我的问题。
    • 感谢 Stackoverflow,如果它有帮助,您需要投票赞成,如果它解决了您的问题,请接受它作为答案。
    • 对不起,我没有想到这一点并相应地更新。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2018-07-08
    • 2014-04-26
    • 1970-01-01
    相关资源
    最近更新 更多