我正在运行以下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
条件不应该阻止这种情况吗?
编辑:我也尝试过这个,但没有任何成功:
- 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
中的字符串匹配
据我所知,您的stderr
中有引号jenkins-inception
:
"Error: release: "jenkins-inception" not found"
.
此正则表达式应匹配:
"jenkins-{{ env_name }}" not found