【问题标题】:ansible - If files has different values then update them, otherwise ignoreansible - 如果文件具有不同的值,则更新它们,否则忽略
【发布时间】:2018-07-24 06:31:39
【问题描述】:

几周以来,我一直在努力让这个逻辑正确无误。我想做的是创建一个可将我的应用程序安装在远程主机上的 ansible playbook ......我有点工作......

现在的问题是,就像所有应用程序安装一样,这意味着我需要进行健全性检查并确保我的配置正确。

我正在努力解决的一件事是,如果我有大量文本(比如下面的文本,我需要确保其中的值是正确的

我正在将 Ansible Replace 和 Lineinfile 模块用于其他事情,但我认为将这些模块用于我试图解决我遇到的这个问题是不正确的......有没有其他人在你那里做过类似的事情有一本查看文件的剧本,只有当值不正确时才更新它

        <Set name="env"><SystemProperty name="address" default="0.0.0.0"/></Set>
        <Set name="port"><SystemProperty name="https" default="6328" /></Set>
        <Set name="idle">3</Set>
        <Set name="soLingerTime"><Property name="http" default="-1568"/></Set>
        <Set name="acceptorDelta"><Property name="ssol" default="9524"/></Set>
        <Set name="PriorityDelta"><Property name="ssl34" default="9635"/></Set>
        <Set name="Size">15874</Set>

【问题讨论】:

  • 你不应该尝试用替换和行文件自己操作xml文件,这很危险,使用模板模块(考虑“xmlify”字符串)或xml模块
  • 如果我理解正确,您希望所有配置都相同吗?那么你应该只 copy 文件,如果它已经相同,则不应触摸它。幂等性。如果您的意思更复杂,请在您的原始帖子中澄清/详细说明。如果值需要特定于目标,template 模块当然也是您的朋友。
  • 我需要在升级后更新默认配置中的某些值。我不想只复制具有这些值的文件,因为如果添加了某些内容,则供应商会提供一个新的系统属性在新包装中,它将被遗漏

标签: bash ansible config app-config


【解决方案1】:

优雅的解决方案可能是将值替换为 {{ variables }},然后让 ansible 使用 template 模块写入正确的值。如果您的文件符合某种标准(示例看起来像 XML?),您可以使用xml 模块吗?

否则,是的,我想不出比 lineinfile/replace 更好的主意..


编辑以添加 xml 示例:

我不是 xpath 专家,但我想这样的事情会(有点)起作用..

- hosts: localhost
  tasks:
  - name: Sanity Checks
    xml:
      path: file.xml
      xpath: /Set[@name='port']/SystemProperty[@name='https']
      attribute: default
      value: "1000"

【讨论】:

  • 老实说,XML 看起来是最好的……我似乎无法正确理解语法。如果我想确保上面的这些值是正确的,那么语法看起来如何?
  • @zoomer 查看我的编辑。请注意,这对我的口味来说有点冗长,您必须提取要使用 xpath 检查的每个值。我将再次推荐模板模块,它是这里更优雅的解决方案。
  • 好的,我得看看如何使用那个模板模块
  • 所以模板不起作用.. 真的,模板只是一个美化的复制命令,您可以在其中“构建”一个文件,然后将其移动.. 我会尝试让 XML 正常工作
【解决方案2】:

为了实现我想要做的最好的事情是使用模板......获取新文件,根据需要更新......将它们保存在模板中并移动......

【讨论】:

    猜你喜欢
    • 2015-04-04
    • 2022-10-08
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2018-04-12
    相关资源
    最近更新 更多