是否可以使用ansible剧本自动编辑xml文件属性?

时间:2019-09-14 23:57:51

标签: xml ansible

是否可以通过ansible剧本编辑和修改xml文件?如果可能的话如何?我有多个属性可以在xml文件中手动替换

<Products>
    <Product productId="MetadataServer"> {{ some_value }} <product/>
    <Product productId="DataQualityExceptionConsole" version="11.5.0.1"/> 
</Products>

我想用不同的值替换{{ some_value }}

3 个答案:

答案 0 :(得分:1)

您可以在ansible中使用replace模块:

- name: Replace Module
  replace: dest=<file-path-name>  regexp='some_value' replace='{{ some_value }}' backup=no

尽可能编辑文件,如下所示:

<Products>
    <Product productId="MetadataServer">some_value<product/>
    <Product productId="DataQualityExceptionConsole" version="11.5.0.1"/> 
</Products>

答案 1 :(得分:1)

为该xml文件创建模板,并根据不同情况创建键值列表。当您执行剧本时,ansible将使用变量键和相应的值替换模板中的所有变量。

例如

您想在dev和qa环境上安装tomcat。对于Dev,您正在使用端口8080;对于QA环境,您正在使用端口8081。 您可以使用port_no作为变量创建server.xml的模板。 (小片段可以如下所示)。您可以根据需要添加任意多个变量。

<Service name="Catalina">
    <Connector port="{{ port_no }}" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
  1. 创建模板后,根据dev&QA环境或组var在清单文件中为这些变量创建键值列表,或者如果您正在编写ansible角色,则可以将这些键值放在“默认值”中,或者“ vars”文件夹。没有办法在ansible中声明变量。检查:https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html

答案 2 :(得分:0)

从Ansible 2.4开始,您可以使用xml模块或用于Windows win_xml(Ansible 2.7)。

请参阅以下模块的文档:xmlwin_xml