嗨,我是ansible的新手,我必须写一个部署脚本,将工件放入文件夹中,并从XML配置文件中引用其包。我能够完成第一部分,并且工作正常,但是第二部分正在挑战我必须编辑conf文件并在其中添加子元素的地方。它是这样写的:
- name: Configure Artifact Properties
- xml:
path: '{{ server_home }}/conf.xml'
xpath: /Server/SupportedArtifactTypes
add_children:
- NewArtifact
ArtifactName: HelloWorld
ArtifactPackage: org.HelloWorld
现在,这将第一次正常运行,但是当我要在下一个部署周期中重新运行它时,它将再次添加不应发生的子元素。有人知道我们如何修改任务,以便仅在配置不存在时才添加配置吗?
答案 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
尝试一下,看看是否有帮助!