【问题标题】:How to become a specific user in ansible如何成为ansible中的特定用户
【发布时间】:2021-05-07 11:43:48
【问题描述】:

我正在尝试以 ansible 作为特定用户在系统上运行命令。

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

我正在尝试使用 ansible 的 become_userbecomebecome_method 来运行命令,但 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"
}

我是否误解了become_user 的工作原理?是否有其他方法可以让我的命令以特定用户身份运行?

如果这很重要,我正在使用 ansible 2.9.18。

谢谢

【问题讨论】:

  • ```成为:真成为_用户:成为_标志:-i外壳:“whoami”```
  • 添加 become_flags: 我似乎也没有改变任何东西。
  • 我试过 become_method: sudo.这似乎也没有帮助。无论我尝试什么,我似乎总是以 root 身份运行。

标签: ansible su


【解决方案1】:

become_user 是您在这里需要的主要部分。

您看到root 出现在第一个任务中,因为您以root 运行剧本,这很好。

另外两个任务是root,因为您正在为每个任务提供权限提升,这将覆盖您正在设置的become_user。您可以简单地删除 become: yes 并切换用户应该可以工作。

---
- hosts: localhost
  become: yes
  tasks:

    - shell: whoami
      register: c

    - shell: whoami
      become_user: myuser
      register: d

    - debug: var=c.stdout

    - debug: var=d.stdout

【讨论】:

  • 将您的确切示例复制到我的脚本并运行它仍然会导致用户成为 root。所以恐怕这也行不通。
  • 事实证明这是正确的问题是我的 groupvars 文件中有以下我不知道的内容:ansible_become_user: root ansible_become_method: sudo
【解决方案2】:

尝试添加

 become_method: su

使用特定用户可能会有所帮助。我不确定,这可能会有所帮助

【讨论】:

  • 检查第三个例子——我已经用过了。奇怪的是它似乎没有任何区别:(
  • 啊,是的,我现在明白了。 :-(
  • 这是在 CentOS 8.3 上,如果这应该重要的话(我认为它不应该)
猜你喜欢
  • 2017-11-27
  • 2020-05-19
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多