Ansible failed_, когда условие не предотвращает сбой задачи - PullRequest
0 голосов
/ 24 января 2020

Я выполняю следующую задачу ansible:

    - name: Remove Jenkins
      register: jenkins_delete
      shell: "helm delete --purge --tls jenkins-{{ env_name }}"
      retries: 2
      delay: 20
      until: jenkins_delete.rc == 0
      failed_when: "'jenkins-{{ env_name }} not found' not in jenkins_delete.stderr"

Если нужного мне выпуска не существует, происходит сбой следующим образом:

fatal: [localhost]: FAILED! => {"attempts": 5, "changed": true, "cmd": "helm delete --purge --tls jenkins-inception", "delta": "0:00:00.212773", "end": "2020-01-24 13:58:24.993134", "failed_when_result": true, "msg": "non-zero return code", "rc": 1, "start": "2020-01-24 13:58:24.780361", "stderr": "Error: release: \"jenkins-inception\" not found", "stderr_lines": ["Error: release: \"jenkins-inception\" not found"], "stdout": "", "stdout_lines": []}

Не должно failed_when условие, которое я использую, чтобы предотвратить это?

edit : Я также пробовал это безуспешно:

    - name: Remove Jenkins
      register: jenkins_delete
      shell: "helm delete --purge --tls jenkins-{{ env_name }}"
      retries: 2
      delay: 10
      until: jenkins_delete.rc == 0 or jenkins_delete.stderr is regex("release:.+not found")

, что странно, учитывая, что оно Кажется, что regex используется соответствует строка в stderr

1 Ответ

0 голосов
/ 04 февраля 2020

Насколько я вижу, в вашем stderr есть кавычки *1002*:

"Error: release: \"jenkins-inception\" not found".

Это регулярное выражение должно соответствовать:

"jenkins-{{ env_name }}" not found

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