Bo's Oracle Station

查看: 953|回复: 0

ANSIBLE13(failed_when和changed_when)

[复制链接]

1005

主题

1469

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
12012
发表于 2020-8-12 22:15:49 | 显示全部楼层 |阅读模式
本来会执行成功:
  1. ---
  2. - name: failed_when
  3.   hosts: server3.example.com
  4.   tasks:
  5.   - name: run user creation script
  6.     shell: "echo SPOTO"
  7.     register: v_create
  8.   #  failed_when: '"already exists" not in v_create.stderr'
  9.   #  ignore_errors: yes

  10.   - name: debug info
  11.     debug:
  12.       var: v_create
  13.                   
复制代码
但是要有条件地让它执行失败:
  1. ---
  2. - name: failed_when
  3.   hosts: server3.example.com
  4.   tasks:
  5.   - name: run user creation script
  6.     shell: "echo SPOTO"
  7.     register: v_create
  8.     failed_when: '"SPOTO" in v_create.stdout'
  9.     ignore_errors: yes

  10.   - name: debug info
  11.     debug:
  12.       var: v_create
复制代码

  1. [student@classroom ansible]$ ansible-playbook  v6-5_server3.yml
复制代码
PLAY [failed_when] *************************************************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************************************
ok: [server3.example.com]

TASK [run user creation script] ************************************************************************************************************************************************
fatal: [server3.example.com]: 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 [debug info] **************************************************************************************************************************************************************
ok: [server3.example.com] => {
    "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


  1. ---
  2. - name: failed_when
  3.   hosts: server3.example.com
  4.   tasks:
  5.   - name: run user creation script
  6.     shell: "echo SPOTO"
  7.     register: v_fail

  8.   - name: debug info
  9.     fail:
  10.       msg: "XXXXXXXXXXXXX"
  11.     when: '"SPOTO" in v_fail.stdout'
复制代码
下面是changed_when(非要把绿的说的,黄的才会触发handlers):

  1. ---
  2. - name: changed_when
  3.   hosts: webgroup
  4.   tasks:
  5.   - name: test service state
  6.     service:
  7.       name: sshd
  8.       state: started
  9.       enabled: yes
  10.     register: v_result
  11.     changed_when: "'running' in v_result.status.SubState "
  12.     notify:
  13.       - h_srv_restart

  14. #  - name: debug
  15. #    debug:
  16. #      var: v_result

  17.   handlers:
  18.   - name: h_srv_restart
  19.     service:
  20.       name: httpd
  21.       state: restarted
复制代码
反过来,非要把的说成绿的:
  1. - name: another tasks
  2.   hosts: srvgroup
  3.   tasks:
  4.   - name: check date
  5.     shell: "date"
  6.     register: v_date
  7.     changed_when: false

  8.   - debug:
  9.       var: v_date
复制代码


   


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Bo's Oracle Station   

GMT+8, 2024-5-9 17:01 , Processed in 0.036883 second(s), 24 queries .

快速回复 返回顶部 返回列表