是否可以在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: true和sudo: yes,其结果是一样的.
是的,您可以以其他用户身份执行角色,包括 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)
| 归档时间: |
|
| 查看次数: |
4323 次 |
| 最近记录: |