Ansible:切换到用户并显示其名称

时间:2018-03-21 14:41:16

标签: ansible ansible-2.x ansible-inventory ansible-facts

我的远程主机服务器下有两个用户: firas,michel

在我的剧本中,我正在连接“firas”,我正在尝试用“michel”执行某项任务用户

(因此,只是断言它,我试图显示每次运行任务的用户“)。

我的主机文件如下所示:

[myHost]
server1

[myHost:vars]
ansible_user=firas

我的任务如下:

- name: switch to user michel and run whoami
  shell: whoami
  remote_user: michel 
  register: username_michel 
  when:
    - ansible_host in groups['myHost']

- debug:
   msg: "user supposed to be michel is ; {{username_michel.stdout}}"
  when:
    - ansible_host in groups['myHost']

- name: switch to user firas and run whoami
  shell: whoami
  remote_user: firas
  register: username_firas
  when:
    - ansible_host in groups['myHost']

- debug:
   msg: "user supposed to be adi is ; {{username_firas.stdout}}"
  when:
    - ansible_host in groups['myHost']

- > 但奇怪的是,像这样:我总是将用户“firas”作为活跃用户

似乎切换用户没有运行

任何想法?

1 个答案:

答案 0 :(得分:0)

您在广告资源ansible_user=firas中定义的连接变量优先于任务中的remote_user: michel声明。删除它。

Possible Misunderstanding中的每个解释:

  

如文档http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable所述,连接变量优先于指令,这是因为主机连接信息被认为比播放连接信息更“具体”。您仍然可以通过设置连接变量(就像任何变量一样)从播放中覆盖它。