需要使用 Ansible 同步模块一起更改文件夹 + 文件的权限

Need permissions changed of a folder + files together using Ansible synchronize module

我允许用户选择输入 3 位数字来设置正在传输的文件或文件夹的权限说 -e myperm: 775

我在提供 rsync_opts: --chmod:F775(同步模块)的地方使用 ansible 将目标上传输的 file/folder 的权限更改为 775

- name: sync file
  synchronize:
    src: /tmp/file.py
    dest: /home/myuser/file.py
    mode: push
    rsync_opts:
      - "--chmod=F0{{ myperm }}"

以上适用于文件;但是,当 src: /tmp/folder

时,传输文件夹同样不起作用

我在 ansible 中尝试了 --chmod=D0{{ myperm }},F0{{ myperm }} 但它转换为 --chmod=D0775 F0775 并给出了这个错误:

msg": "Unexpected remote arg: user@desthost:/tmp/folder\nrsync error: syntax or usage error (code 1) at main.c(1344) [sender=3.1.2]\n", "rc": 1}

您能否建议 rsync_opts 使用变量 myperm 来更改文件和文件夹的权限?

任何其他解决方案也可以。

当模块生成 rsync 命令行时,解析逗号分隔的参数似乎有问题,但是,由于 rsync 允许多个 chmod 选项,您可以将您的任务重写为:

[..]
rsync_opts:  
  - "--chmod=F0{{ myperm }}"
  - "--chmod=D0{{ myperm }}"