如何在ansible中成为特定用户
How to become a specific user in ansible
我正在尝试 运行 以特定用户身份在具有 ansible 的系统上执行命令。
我 运行 作为该特定用户很重要,因为该命令需要运行的配置文件仅供该用户使用。任何其他用户将无法读取配置文件,因此无法工作。
我正在尝试将 ansible 的 become_user
、become
和 become_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。
谢谢
尝试添加
become_method: su
使用特定用户可能会有所帮助。我不确定,它可能有帮助
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
我正在尝试 运行 以特定用户身份在具有 ansible 的系统上执行命令。
我 运行 作为该特定用户很重要,因为该命令需要运行的配置文件仅供该用户使用。任何其他用户将无法读取配置文件,因此无法工作。
我正在尝试将 ansible 的 become_user
、become
和 become_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。
谢谢
尝试添加
become_method: su
使用特定用户可能会有所帮助。我不确定,它可能有帮助
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