如果满足条件-可以修改XML配置

时间:2018-07-05 09:41:05

标签: xpath ansible

嗨,我是ansible的新手,我必须写一个部署脚本,将工件放入文件夹中,并从XML配置文件中引用其包。我能够完成第一部分,并且工作正常,但是第二部分正在挑战我必须编辑conf文件并在其中添加子元素的地方。它是这样写的:

- name: Configure Artifact Properties
- xml:
    path: '{{ server_home }}/conf.xml'
    xpath: /Server/SupportedArtifactTypes
    add_children:
      - NewArtifact
          ArtifactName: HelloWorld
          ArtifactPackage: org.HelloWorld

现在,这将第一次正常运行,但是当我要在下一个部署周期中重新运行它时,它将再次添加不应发生的子元素。有人知道我们如何修改任务,以便仅在配置不存在时才添加配置吗?

1 个答案:

答案 0 :(得分:0)

根据Ansible XML文档,您可以对xpath匹配项进行计数。尝试先对xpath进行计数并注册结果。当计数小于1时使您的任务执行。

- name: Check for existing artifacts in SupportedArtifactTypes
- xml:
    path: '{{ server_home }}/conf.xml'
    xpath: /Server/SupportedArtifactTypes
    count: yes
  register: hits  

- name: Configure Artifact Properties
- xml:
    path: '{{ server_home }}/conf.xml'
    xpath: /Server/SupportedArtifactTypes
    add_children:
      - NewArtifact
          ArtifactName: HelloWorld
          ArtifactPackage: org.HelloWorld
  when: hits.count < 1

尝试一下,看看是否有帮助!