在 ansible 中使用 chown 命令?



我在 ubuntu 中有一个命令

sudo chown $(id -u):$(id -g) $HOME/.kube/config 

我想转换为 ansible 脚本。我在下面试过

- name: Changing ownership
command: chown $(id -u):$(id -g) $HOME/.kube/config
become: true 

但是我收到以下错误

致命: [ubuntu]: 失败! => {"已更改": t> 致命: [

ubuntu]: 失败! => {"已更改": 真, "cmd": ["chown", "$(id", "-u):$(id", "-g)", "$HOME/.kube/config"], "delta": "0:00:00.003948", "end": "2019-07-17 07:22:31.798773", "msg": "非零返回代码", "rc": 1, "开始": "2019-07-17 07:22:31.794825", "stderr": "chown: 无效选项 -- 'u'尝试 'chown --help' 以获取更多信息。", "stderr_lines": ["chown: 无效选项 -- 'u'", "尝试 'chown --help' 有关更多信息."], "stdout": ", "stdout_lines": []}rue, "cmd": ["chown", "$(id", "-u):$(id", "-g)", "$HOME/.kube/config"], "delta": "0:00:00.003948", "end": "2019-07-17 07:22:31.798773", "msg": "非零返回代码", "rc": 1, "开始": "2019-07-17 07:22:31.794825", "stderr": "chown: 无效选项 -- 'u'尝试 'chown --help' 以获取更多信息。", "stderr_lines": ["chown: 无效选项 -- 'u'", "尝试 'chown --help' 有关更多信息."], "标准输出": ", "stdout_lines": []}

编辑:文件模块也不起作用。

- name: Create a symbolic link
file:
path: $HOME/.kube
owner: $(id -u)
group: $(id -g)

假设文件已经存在,并且您只想更改权限,则可以从 Ansible 事实中检索用户 ID 和组,并执行以下操作:

- name: Change kubeconfig file permission
file:
path: $HOME/.kube/config 
owner: "{{ ansible_effective_user_id }}"
group: "{{ ansible_effective_group_id }}"

您还可以根据需要使用ansible_real_group_id/ansible_real_user_idansible_user_gid/ansible_user_uid

请不要忘记双引号括在 ansible 表达式周围。

有关真实用户和有效用户之间区别的详细信息,请参阅此帖子

有关所有可用变量,请参阅 Ansible 有关系统变量的文档

试试下面。

- name: chown to username you login and chmod as required
file:
path: $HOME/.kube/config
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
mode: 0644

最新更新