ansible - 使用文件模块幂等的ansible更改权限
问题描述
我每天晚上通过一个 cron 作业运行我的 ansible 剧本,并时不时地添加它们。
我希望我的每个输出仅在实际发生更改时才说 changed=(num) ,但是一些特定模块在根本没有更改时会说已更改。
前任:
- name: (name)
file:
state: touch
path: (path)
group: (group)
mode: (perms)
任务运行前的路径包含与请求的权限和组相同的组和权限。所以他们在任务运行时不会改变,但结果ansible说它已经“改变”了。
我查看了这个问题并找到了https://github.com/ansible/ansible/issues/21124但我正在运行 ansible 2.2.1.0。所以我的理解是他们表明文件模块是幂等的。
有什么建议可以使它具有幂等性吗?
解决方案
为了使用 ansible 中的文件模块幂等地创建文件,您必须单独检查文件是否存在,创建它并设置任何权限(因为无论文件是否已经存在,您都希望正确设置这些权限)。
这可以通过以下 3 个任务来完成:
- name: Check if file exists
stat:
path: /tmp/file
register: tmp_file
- name: Create file
file:
path: /tmp/file
state: touch
when: tmp_file.stat.exists == false
- name: Set perms of file
file:
path: /tmp/file
state: file
owner: user
group: group
mode: 0600
推荐阅读
- amazon-web-services - 如何使用本地副本计算使用 KEM 密钥加密的 S3 文件的 ETag?
- javascript - 有没有一种方法可以在单击 c3.js 时更新图形?
- kubernetes - 使用 Kubernetes 部署 Quarkus 应用程序
- r - 实现 GARCH Rugarch 包
- python - networkx :绘制具有共同属性的图
- flutter - 我有一个问题说在 android studio 中导入 dart:html 并且我没有向应用程序添加任何东西我只是在进行热重载?
- sql - 从 HIVE 中的列中查找最大值
- python - 从 pytest_runtest_teardown 钩子跳过拆解
- excel - 尝试将列复制到新工作簿时显示错误
- flutter - 未处理的异常:RangeError(索引):无效值:不在包含范围 0..3:4