我想以特定用户的身份执行某些任务列表(在剧本中)。用户实际上来自变量,但是在最小的示例中,我很难将其编码为“ dev”。 (此用户确实存在)。我无法弄清楚以下原因为何不起作用
我在role / foo / tasks中的main.yml是
- include_tasks: "{{ role_path }}/tasks/content.yml"
become: yes
become_user: dev
content.yml只是获取当前用户:
- command: whoami
register: whoami
- debug:
var: whoami
我的剧本是
- hosts: dev
become: true
remote_user: root
roles:
- foo
我得到以下输出:
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"
]
}
}
为什么给用户以root身份?我知道我以root用户身份连接,但是后来我成为了include的开发人员,不是吗?
如果这是它的工作方式,那么我应该如何配置角色,以便以特定用户的身份运行整个任务列表?我必须记住每个项目上的成为和成为用户吗?
答案 0 :(得分:3)
使用import_tasks
代替include_tasks
:
- import_tasks: "{{ role_path }}/tasks/content.yml"
become: yes
become_user: dev
在将来的版本(从2.7开始)中,您将可以使用新参数apply
:
- include_tasks: "{{ role_path }}/tasks/content.yml"
apply:
become: yes
become_user: dev