如何获得安塞尔成为'用户在包含文件?

时间:2015-11-25 10:33:20

标签: ansible sudo ansible-playbook

使用ansible 1.9。库存:

my.host ansible_ssh_user=FIRSTUSER

剧本:

- hosts: my.host
  roles:
    - myrole

角色任务文件:

- include: tasks.yml

- include: tasks.yml
  become: true
  become_user: SECONDUSER

tasks.yml我试图打印出当前正在运行该文件的用户。第一次打印FIRSTUSER,第二次打印SECONDUSER。但无论我尝试什么(ansible_ssh_useransible_user_idansible_env),它始终会打印FIRSTUSER,即使第二次tasks.yml正在运行它也会#39} ; s以SECONDUSER运行。

如何打印当前正在运行的用户tasks.yml

如果在tasks.yml我使用用户相对路径file: dest=~/tmp state=directory'添加了任务~/tmp,则会在第一次正确地将其置于/home/FIRSTUSER/tmp /home/SECONDUSER/tmp第二次。它正常工作,但我无法从tasks.yml中的变量中获取用户,以便我可以有条件地执行某些操作。

1 个答案:

答案 0 :(得分:4)

设置模块提供了ansible_ssh_useransible_user_idansible_env等变种。默认情况下,设置模块作为剧本的第一个任务执行,这是您在游戏过程中应该看到的 GATHERING FACTS 任务。这应该可以解释为什么这些变量与您在include语句中指定的变量无关。

您应该可以通过再次运行安装模块在已包含的任务文件中再次获取这些变量。但请注意,这将永久更改这些值,而不仅仅是在您附带的文件中。

- setup:

更好的解决方案可能是简单地运行shell模块并要求whoami

- shell: whoami
  register: whoami

- debug: msg="{{ whoami.stdout }}"