如何成为ansible中的特定用户

如何成为ansible中的特定用户,ansible,su,Ansible,Su,我试图在ansible作为特定用户的系统上运行命令 我必须以该特定用户的身份运行,因为命令需要使用的配置文件仅对该用户可用。任何其他用户都无法读取配置文件,因此无法工作 我试图使用ansible的been_user、been和been_方法运行该命令,但ansible似乎忽略了它。下面是一个例子: - shell: whoami register: c - shell: whoami become: yes register: d - shell: whoami become:

我试图在ansible作为特定用户的系统上运行命令

我必须以该特定用户的身份运行,因为命令需要使用的配置文件仅对该用户可用。任何其他用户都无法读取配置文件,因此无法工作

我试图使用ansible的
been_user
been
been_方法运行该命令,但ansible似乎忽略了它。下面是一个例子:

- shell: whoami
  register: c
- shell: whoami
  become: yes
  register: d
- shell: whoami
  become: yes
  become_user: myuser
  become_method: su
  register: e
- debug: var=c.stdout
- debug: var=d.stdout
- debug: var=e.stdout
当我运行ansible脚本时,我得到以下结果:

TASK [myscript : debug] *************************************************************************************************************************************************
ok: [10.33.56.93] => {
    "c.stdout": "root"
}

TASK [myscript : debug] *************************************************************************************************************************************************
ok: [10.33.56.93] => {
    "d.stdout": "root"
}

TASK [myscript : debug] *************************************************************************************************************************************************
ok: [10.33.56.93] => {
    "e.stdout": "root"
}
我是否误解了
成为用户
的工作原理?是否有其他方法让我的命令以特定用户的身份运行

如果有必要的话,我将使用ansible 2.9.18

谢谢

尝试添加

 become_method: su

使用特定用户可能会有所帮助。我不确定,它可能有助于你成为一个用户,而用户是你这里需要的主要部分

您将看到
root
出现在第一个任务中,因为您正在以
root
的身份运行playbook,这很好

另外两个任务是
root
,因为您正在为每个任务授予权限提升,这将覆盖您正在设置的
成为用户。您只需将
删除为:yes
,切换用户即可

---
-主机:本地主机
变成:是的
任务:
-贝壳:哇
注册编号:c
-贝壳:哇
成为用户:myuser
注册编号:d
-调试:var=c.stdout
-调试:var=d.stdout

``been:true been\u user:been\u flags:-i shell:“whoami”``添加been\u flags:我似乎也没有改变任何东西。我尝试过been\u方法:sudo。这似乎也无济于事。无论我尝试什么,我总是以root身份运行。检查第三个示例-我已经使用了它。奇怪的是,这似乎没有什么不同:(啊,是的,我现在明白了。)(如果这有关系的话,这是CentOS 8.3上的版本(我认为不应该)将您的确切示例复制到我的脚本并运行它仍然会导致用户成为root用户。因此,我担心这也不起作用。事实证明,这是正确的。问题是,我在我的groupvars文件中有以下未知内容:ansible\u been\u用户:root ansible\u been\u方法:sudo