当我使用 ansible 的 shell 模块执行命令“我是谁”时,我得到一个空响应,我不明白为什么?
hosts: server1
remote_user: devops
become: true
tasks:
- name: print current user
shell: who am i
register: userr
- debug:
msg: "{{ userr.stdout }}"
[root@ansible test]# ansible-playbook test.yml
PLAY [test playbook] ********************************************************************************************************************************
TASK [Gathering Facts] ******************************************************************************************************************************
ok: [server1]
TASK [print current user] ***************************************************************************************************************************
changed: [server1]
TASK [debug] ****************************************************************************************************************************************
ok: [server1] => {
"msg": ""
}
PLAY RECAP ******************************************************************************************************************************************
server1 : ok=3 changed=1 unreachable=0 failed=0
答案1
我认为的原因是 ansible 没有使用登录 shell 来执行命令。所以该命令没有显示任何内容。
If you replace:
who am i
with:
su - anotheruser; who am i
您应该看到一个输出。