ansible的register变量
register接收变量的作用
register能将tasks的运行过程状态以json格式记录下来,tasks运行可能会产生error,我们在运行playbook的时候,可以根据json中的值来判断是否产生错误.
例如我们可以根据json中的rc(return code)值来判断运行结果.
-
rc值为0
,表示运行结果正确,
-
rc值为非0
,表示运行失败
打印接收的register接收变量的值
---
- name: register接收变量演示
hosts: all
tasks:
- name: shell执行hostname,并将hostname结果保存到变量名myvar
shell: hostname
register: myvar
- name: 打印接收的myvar变量
debug:
msg: "{{ myvar }}"
- 执行结果
[rhel8 root ~/ansible/play]# ansible-playbook reg.yml
PLAY [register接收变量演示] ****************************************************
TASK [shell执行hostname,并将hostname结果保存到变量名myvar] *********************
changed: [node2]
changed: [node1]
TASK [打印接收的myvar变量] *****************************************************
ok: [node1] => {
"msg": {
"changed": true,
"cmd": "hostname",
"delta": "0:00:00.003724",
"end": "2021-10-18 02:36:29.122224",
"failed": false,
"msg": "",
"rc": 0,
"start": "2021-10-18 02:36:29.118500",
"stderr": "",
"stderr_lines": [],
"stdout": "node1",
"stdout_lines": [
"node1"
]
}
}
ok: [node2] => {
"msg": {
"changed": true,
"cmd": "hostname",
"delta": "0:00:00.004386",
"end": "2021-10-18 02:36:29.119046",
"failed": false,
"msg": "",
"rc": 0,
"start": "2021-10-18 02:36:29.114660",
"stderr": "",
"stderr_lines": [],
"stdout": "node2",
"stdout_lines": [
"node2"
]
}
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
只打印register接收变量的子变量值
---
- name: register接收变量演示
hosts: all
tasks:
- name: shell执行hostname,并将hostname结果保存到变量名myvar
shell: hostname
register: myvar
- name: 打印接收的myvar变量
debug:
msg: "{{ myvar.stdout }}"
- 执行结果
[rhel8 root ~/ansible/play]# ansible-playbook reg.yml
PLAY [register接收变量演示] ****************************************************
TASK [shell执行hostname,并将hostname结果保存到变量名myvar] *********************
changed: [node2]
changed: [node1]
TASK [打印接收的myvar变量] *****************************************************
ok: [node1] => {
"msg": "node1"
}
ok: [node2] => {
"msg": "node2"
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0