ansible - 在 sudo 用户下应用角色

标签 ansible

是否可以在 Ansible 中以 sudo 身份应用特定角色?

具体来说,这些是从 ansible-galaxy 获取的角色,因此来源不在我的控制范围内。

This example建议通过 sudo:yes角色应该可以工作,但我认为必须首先定义角色以期望参数。

This section的变更日志表明 sudo true可以在角色级别设置,但是,以下不起作用:

---
- remote_user: "vagrant"
  tasks: []
  hosts: "all"
  roles:
  - role: "mysql"
    sudo: yes

但是,在顶层应用 sudo 会使角色起作用:
---
- remote_user: "vagrant"
  tasks: []
  hosts: "all"
  sudo: yes
  roles:
  - role: "mysql"

注意——我已经尝试过 sudo: truesudo: yes ,结果是一样的。

最佳答案

是的,您可以以其他用户身份执行角色,包括 root,但只能在“剧本”级别执行。

如果你想扮演你自己的角色,而扮演另一个角色,比如“root”,那么你必须将它们写成单独的剧本(无论它们是否在单独的文件中)。

例如,假设您有这本剧本,其中包含两个剧本,使用相同的角色,但具有不同的 sudo用户:

---
- hosts: localhost
  sudo: yes
  roles:
  - role: aks.whoami

- hosts: localhost
  sudo: no
  roles:
  - role: aks.whoami

而且,这个角色:aks.whoami :
---
- name: "whoami?"
  shell: whoami
  register: whoami

- debug: var=whoami.stdout

这是输出:
PLAY [localhost] **************************************************************

GATHERING FACTS ***************************************************************
ok: [localhost]

TASK: [aks.whoami | whoami?] **************************************************
changed: [localhost]

TASK: [aks.whoami | debug var=whoami.stdout] **********************************
ok: [localhost] => {
    "var": {
        "whoami.stdout": "root"
    }
}

PLAY [localhost] **************************************************************

GATHERING FACTS ***************************************************************
ok: [localhost]

TASK: [aks.whoami | whoami?] **************************************************
changed: [localhost]

TASK: [aks.whoami | debug var=whoami.stdout] **********************************
ok: [localhost] => {
    "var": {
        "whoami.stdout": "aks"
    }
}

PLAY RECAP ********************************************************************
localhost                  : ok=6    changed=2    unreachable=0    failed=0

关于ansible - 在 sudo 用户下应用角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31663592/

相关文章:

ansible - 将 Hashicorp Vault 与 Ansible 结合使用 - 插件设置

Ansible:以逗号分隔值获取主机列表

docker - Ansible w/Docker - 显示当前容器状态

Ansible vars_prompt 角色

python - 在ansible_runner python库中,是否可以使用运行器从剧本中检索注册的变量?

ansible 如何将现有主机添加到组

ansible - 如何在ansible中的src中使用unix命令

ruby - 将 ansible 与 rvm 和 rvmrc 结合使用

python - Ansible - 如何在不同键的 yaml 中使用 selectattr

ansible - 哪个 ansible.cfg 超时值是 "-T"覆盖 ansible-playbook 命令?