这是 Ansible 自动化的一部分,我必须运行单个chmod
命令并读取用户的权限。因此,
chmod -R $fileperm <filename>
但是,有时用户可能不提供任何内容,fileperm
因此$fileperm
为空,在这种情况下,文件权限应保持不变,但上述命令失败。
我不希望两个chmod
命令具有不同的when
条件。
如果可能的话,您能否建议我如何适应用户是否在同一命令中提供或不提供权限?我目前正在使用 Ansible 的command
模块来执行chmod
.
答案1
不要chmod
通过command
或来电shell
。使用file
模块设置权限,参见文档。这是幂等的。该模块将检查文件/目录的当前状态,并且仅在必要时才更改它。
在这种情况下,您添加此任务
- set_fact:
files:
- name: file1
mode: 0755
- name: file2
- name: file3
mode: 0644
- file:
path: "{{ item.name }}"
mode: "{{ item.mode | default(omit) }}"
loop: "{{ files }}"
我不确定“有时用户可能不提供”是什么意思。 Ansible 没有什么交互性。所以我不确定你的意思。另外,您正在谈论 bash 变量,例如$fileperm
. Ansible 没有“bash vars”。它们是事实并使用 Jinja 来评估它们。