编写 playbook,我们通过 whoami 这个 shell 命令去查看当前登录的用户,并将结果赋值给 register 变量 user,然后通过 debug 模块输出 user 变量的信息;
it@workstation:~/ansible$ vim test.yml
it@workstation:~/ansible$ cat test.yml
---
- name: Check the user
hosts: servera
tasks:
- name: View the logged in user name
shell: whoami
register: user
- debug:
var: user
运行 playbook,在运行 debug 模块时,显示了输出的结果;
it@workstation:~/ansible$ ansible-playbook test.yml
BECOME password:
PLAY [Check the user] ******************************************************************************
TASK [Gathering Facts] *****************************************************************************
ok: [servera]
TASK [View the logged in user name] ****************************************************************
changed: [servera]
TASK [debug] ***************************************************************************************
ok: [servera] => {
"user": {
"changed": true,
"cmd": "whoami",
"delta": "0:00:00.002775",
"end": "2021-01-19 08:53:22.611335",
"failed": false,
"rc": 0,
"start": "2021-01-19 08:53:22.608560",
"stderr": "",
"stderr_lines": [],
"stdout": "root",
"stdout_lines": [
"root"
]
}
}
PLAY RECAP *****************************************************************************************
servera : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
change: 表示执行命令的状态,如果命令执行了,则为 true;
cmd: 表示的则是你当前执行的命令;
delta: 表示命令执行所花费的时间
start: 表示命令开始执行的时间
end: 表示命令结束的时间
failed: 表示命令执行的结果,如果为 false 则表示命令执行成功,true 则表示命令执行失败
rc: 表示命令执行的返回码(return code),0 表示执行成功;
stderr:命令输出的标准错误信息
stderr_lines: 按换行符分割输出的内容,在多行输出时,显示的效果比 stderr 更加直观
stdout: 命令的标准输出信息
stdout_lines: 按换行符分割输出的内容,在多行输出时,结果更加直观
我们可以在 playbook 中,很方便地调用这些输出。
编写 playbook,在 playbook 中调用 register 变量中的输出,然后调用该变量的输出信息,打印出一条消息:
it@workstation:~/ansible$ vim test.yml
it@workstation:~/ansible$ cat test.yml
---
- name: Check the user
hosts: servera
tasks:
- name: View the logged in user name
shell: whoami
register: user
- debug:
msg: "Logged in as user {{ user.stdout }}"
运行 playbook,在运行 debug 模块时,我们看到了输出的消息
it@workstation:~/ansible$ ansible-playbook test.yml
BECOME password:
PLAY [Check the user] ******************************************************************************
TASK [Gathering Facts] *****************************************************************************
ok: [servera]
TASK [View the logged in user name] ****************************************************************
changed: [servera]
TASK [debug] ***************************************************************************************
ok: [servera] => {
"msg": "Logged in as user root"
}
PLAY RECAP *****************************************************************************************
servera : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
后面会分享更多运维方面的内容,感兴趣的朋友可以关注下!
转自
Ansible register 变量详解 - 知乎
https://zhuanlan.zhihu.com/p/367906095