Изменить конфигурацию XML, если условие выполнено - Ansible - PullRequest
0 голосов
/ 05 июля 2018

Привет, я новичок в 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 голосов
/ 05 июля 2018

Согласно документации 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

Попробуйте и посмотрите, поможет ли это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...