ANSIBLE13(failed_when和changed_when)
本来会执行成功:---
- name: failed_when
hosts: server3.example.com
tasks:
- name: run user creation script
shell: "echo SPOTO"
register: v_create
#failed_when: '"already exists" not in v_create.stderr'
#ignore_errors: yes
- name: debug info
debug:
var: v_create
但是要有条件地让它执行失败:
---
- name: failed_when
hosts: server3.example.com
tasks:
- name: run user creation script
shell: "echo SPOTO"
register: v_create
failed_when: '"SPOTO" in v_create.stdout'
ignore_errors: yes
- name: debug info
debug:
var: v_create
$ ansible-playbookv6-5_server3.ymlPLAY *************************************************************************************************************************************************************
TASK *********************************************************************************************************************************************************
ok:
TASK ************************************************************************************************************************************************
fatal: : FAILED! => {"changed": true, "cmd": "echo SPOTO", "delta": "0:00:00.003968", "end": "2020-08-15 15:33:56.816235", "failed_when_result": true, "rc": 0, "start": "2020-08-15 15:33:56.812267", "stderr": "", "stderr_lines": [], "stdout": "SPOTO", "stdout_lines": ["SPOTO"]}
...ignoring
TASK **************************************************************************************************************************************************************
ok: => {
"v_create": {
"changed": true,
"cmd": "echo SPOTO",
"delta": "0:00:00.003968",
"end": "2020-08-15 15:33:56.816235",
"failed": true,
"failed_when_result": true,
"rc": 0,
"start": "2020-08-15 15:33:56.812267",
"stderr": "",
"stderr_lines": [],
"stdout": "SPOTO",
"stdout_lines": [
"SPOTO"
]
}
}
PLAY RECAP *********************************************************************************************************************************************************************
server3.example.com : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=1
---
- name: failed_when
hosts: server3.example.com
tasks:
- name: run user creation script
shell: "echo SPOTO"
register: v_fail
- name: debug info
fail:
msg: "XXXXXXXXXXXXX"
when: '"SPOTO" in v_fail.stdout'
下面是changed_when(非要把绿的说黄的,黄的才会触发handlers):
---
- name: changed_when
hosts: webgroup
tasks:
- name: test service state
service:
name: sshd
state: started
enabled: yes
register: v_result
changed_when: "'running' in v_result.status.SubState "
notify:
- h_srv_restart
#- name: debug
# debug:
# var: v_result
handlers:
- name: h_srv_restart
service:
name: httpd
state: restarted
反过来,非要把黄的说成绿的:
- name: another tasks
hosts: srvgroup
tasks:
- name: check date
shell: "date"
register: v_date
changed_when: false
- debug:
var: v_date
页:
[1]