在sudo用户下应用角色

Mar*_*itt 6 ansible

是否可以在Ansible中将特定角色应用为sudo?

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

这个例子表明传递sudo:yes给角色应该有效,但我认为必须首先定义角色以期望参数.

更改日志的此部分建议sudo true可以在角色级别设置,但是,以下操作无效:

---
- remote_user: "vagrant"
  tasks: []
  hosts: "all"
  roles:
  - role: "mysql"
    sudo: yes
Run Code Online (Sandbox Code Playgroud)

但是,在顶层应用sudo会使角色起作用:

---
- remote_user: "vagrant"
  tasks: []
  hosts: "all"
  sudo: yes
  roles:
  - role: "mysql"
Run Code Online (Sandbox Code Playgroud)

注-我既试过sudo: truesudo: yes,其结果是一样的.

aks*_*aks 5

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

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

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

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

- hosts: localhost
  sudo: no
  roles:
  - role: aks.whoami
Run Code Online (Sandbox Code Playgroud)

而且,这个角色aks.whoami

---
- name: "whoami?"
  shell: whoami
  register: whoami

- debug: var=whoami.stdout
Run Code Online (Sandbox Code Playgroud)

这是输出:

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
Run Code Online (Sandbox Code Playgroud)

  • 这就是示例所显示的内容。一个角色被 sudo privs 调用,一个没有。 (2认同)