我想以特定用户的身份执行某些任务列表(在剧本中)。用户实际上来自变量,但是在最小的示例中,我很难将其编码为“ dev”。(此用户确实存在)。我无法弄清楚以下原因为何不起作用
我在role / foo / tasks中的main.yml是
- include_tasks: "{{ role_path }}/tasks/content.yml"
become: yes
become_user: dev
Run Code Online (Sandbox Code Playgroud)
虽然content.yml仅获取当前用户:
- command: whoami
register: whoami
- debug:
var: whoami
Run Code Online (Sandbox Code Playgroud)
我的剧本是
- hosts: dev
become: true
remote_user: root
roles:
- foo
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
PLAY [dev] ********************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************
ok: [adco-test-webdev]
TASK [foo : include_tasks] ****************************************************************************************************************************************************************************************************************************************************
included: /smbshare/ansible/roles/foo/tasks/content.yml for adco-test-webdev
TASK [foo : command] **********************************************************************************************************************************************************************************************************************************************************
changed: [adco-test-webdev]
TASK [foo : debug] ************************************************************************************************************************************************************************************************************************************************************
ok: [adco-test-webdev] => {
"whoami": {
"changed": true,
"cmd": [
"whoami"
],
"delta": "0:00:00.002194",
"end": "2018-07-25 02:05:54.879601",
"failed": false,
"rc": 0,
"start": "2018-07-25 02:05:54.877407",
"stderr": "",
"stderr_lines": [],
"stdout": "root",
"stdout_lines": [
"root"
]
}
}
Run Code Online (Sandbox Code Playgroud)
为什么以用户为根?我知道我以root用户身份连接,但是后来我成为了include的开发人员,不是吗?
如果这是它的工作方式,那么我应该如何配置角色,以便以特定用户的身份运行整个任务列表?我是否必须记住每个项目上的成为和成为用户?
使用import_tasks代替include_tasks:
- import_tasks: "{{ role_path }}/tasks/content.yml"
become: yes
become_user: dev
Run Code Online (Sandbox Code Playgroud)
在将来的版本(从2.7开始)中,您将可以使用新参数来实现apply:
- include_tasks: "{{ role_path }}/tasks/content.yml"
apply:
become: yes
become_user: dev
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |