gpt4 book ai didi

Ansible 包含任务列表和变成

转载 作者:行者123 更新时间:2023-12-04 14:54:18 25 4
gpt4 key购买 nike

我想以特定用户的身份执行特定的任务列表(在剧本中的角色内)。用户实际上来自一个变量,但在最小的例子中,我将它硬编码为“dev”。 (该用户确实存在)。我不知道为什么以下不起作用

我在角色/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 身份连接,但随后我成为了包括在内的开发人员,不是吗?

如果这是它的工作方式,那么我应该如何配置角色,以便以某个用户身份运行整个任务列表?我必须记住每个项目上的 become 和 become_user 吗?

最佳答案

使用 import_tasks而不是 include_tasks :

- import_tasks: "{{ role_path }}/tasks/content.yml"
become: yes
become_user: dev

在 future 的版本中(从 2.7 开始),您将能够使用新参数 apply 来做到这一点。 :
- include_tasks: "{{ role_path }}/tasks/content.yml"
args:
apply:
become: yes
become_user: dev

关于Ansible 包含任务列表和变成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51508779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com