如何在包含的文件中获取 ansible 'become' 用户?
How to get ansible 'become' user in included file?
使用 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_user
、ansible_user_id
、ansible_env
),它总是打印 FIRSTUSER
,即使第二次 tasks.yml
是 运行 它是 运行 作为 SECONDUSER
.
如何打印当前 运行ning tasks.yml
的用户?
如果我在 tasks.yml
中包含一个任务 file: dest=~/tmp state=directory'
,使用用户相对路径 ~/tmp
,它第一次正确地将它放在 /home/FIRSTUSER/tmp
并且 /home/SECONDUSER/tmp
第二次。所以它工作正常,但我无法从 tasks.yml
中的变量获取用户,因此我可以有条件地执行某些事情,例如。
ansible_ssh_user
、ansible_user_id
、ansible_env
等变量由设置模块提供。默认情况下,设置模块作为剧本的第一个任务执行,这是您在游戏过程中应该看到的 GATHERING FACTS 任务。这应该可以解释为什么这些变量与您在 include 语句中指定的内容不相关。
您应该能够通过再次 运行 安装模块再次在包含的任务文件中获取这些变量。但请注意,这会永久更改这些值,而不仅仅是在您包含的文件中。
- setup:
更好的解决方案可能是简单地 运行 shell
模块并请求 whoami
:
- shell: whoami
register: whoami
- debug: msg="{{ whoami.stdout }}"
使用 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_user
、ansible_user_id
、ansible_env
),它总是打印 FIRSTUSER
,即使第二次 tasks.yml
是 运行 它是 运行 作为 SECONDUSER
.
如何打印当前 运行ning tasks.yml
的用户?
如果我在 tasks.yml
中包含一个任务 file: dest=~/tmp state=directory'
,使用用户相对路径 ~/tmp
,它第一次正确地将它放在 /home/FIRSTUSER/tmp
并且 /home/SECONDUSER/tmp
第二次。所以它工作正常,但我无法从 tasks.yml
中的变量获取用户,因此我可以有条件地执行某些事情,例如。
ansible_ssh_user
、ansible_user_id
、ansible_env
等变量由设置模块提供。默认情况下,设置模块作为剧本的第一个任务执行,这是您在游戏过程中应该看到的 GATHERING FACTS 任务。这应该可以解释为什么这些变量与您在 include 语句中指定的内容不相关。
您应该能够通过再次 运行 安装模块再次在包含的任务文件中获取这些变量。但请注意,这会永久更改这些值,而不仅仅是在您包含的文件中。
- setup:
更好的解决方案可能是简单地 运行 shell
模块并请求 whoami
:
- shell: whoami
register: whoami
- debug: msg="{{ whoami.stdout }}"