在ansible中使用chown命令?

19

我在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]:FAILED!=> {"changed": true,"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,"start":"2019-07-17 07:22:31.794825","stderr":"chown:无效选项' - 'u'\n请查看更多信息,请尝试'chown --help'","stderr_lines":["chown:无效选项' - 'u'","请查看更多信息,请尝试'chown --help'"],"stdout":"","stdout_lines":[]}。 编辑: 文件模块也不起作用。
  - name: Create a symbolic link
    file:
      path: $HOME/.kube
      owner: $(id -u)
      group: $(id -g)

1
为什么不使用Ansible的file模块和ownergroup选项呢? - Zumo de Vidrio
这里动态获取了用户和组的ID。我该如何实现相同的功能? - TechChain
2个回答

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

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

假设文件已经存在,您只想更改权限,则可以从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系统变量文档以获取所有可用变量。


0

请尝试以下。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接