好几个星期以来,我一直在努力使这种逻辑正确。.我试图做的是创建一个可播放的剧本,将我的应用程序安装在远程主机上……我可以正常工作了……
现在的问题是,与所有应用程序安装一样,这意味着我需要进行健全性检查并确保我的配置正确。
我正在努力的事情之一是,如果我有大量的文本(例如下面的文本,我需要确保其中的值正确
我将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>
答案 0 :(得分:1)
一种优雅的解决方案可能是只用{{变量}}替换值,然后让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"
答案 1 :(得分:0)
要实现我希望做的最好的事情,就是使用模板。...获取新文件,根据需要进行更新。...将它们保存在模板中并在其中移动。...