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

问题描述 投票:0回答:4
xml ansible
4个回答
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
投票

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

例如

您想在开发和质量保证环境中安装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. 创建模板后,根据开发和 QA 环境或组变量为库存文件中的这些变量创建键值列表,或者如果您正在编写 ansible 角色,则可以将这些键值放入“默认值”或“变量”中“ 文件夹。在 ansible 中没有办法声明变量。检查这个:https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html

0
投票

从 Ansible 2.4 开始,您可以使用

xml
模块或用于 Windows
win_xml
(Ansible 2.7)。

请参阅模块文档:xmlwin_xml


0
投票

这是一个使用 XML 模块 的演示,使用 ids 和值的字典在本地文件上进行测试:

剧本名为

xml-playbook.yml

- name: Edit XML file
  hosts: 127.0.0.1
  vars:
    product_list:
      - id: MetadataServer
        value: 'value for MetadataServer'
      - id: DataQualityExceptionConsole
        value: 'value for DataQualityExceptionConsole'
  tasks:
    - name: Change values for product IDs
      community.general.xml:
        path: "products.xml"
        xpath: "/Products/Product[@productId='{{ item.id }}']"
        value: "{{ item.value }}"
      with_items: "{{ product_list }}"

文件

products.xml

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

运行后文件

ansible-playbook --connection=local --inventory 127.0.0.1, xml-playbook.yml
:

<Products>
    <Product productId="MetadataServer">value for MetadataServer</Product>
    <Product productId="DataQualityExceptionConsole" version="11.5.0.1">value for DataQualityExceptionConsole</Product> 
</Products>
© www.soinside.com 2019 - 2024. All rights reserved.