设想情况:
在所有日志旋转-配置文件中将日志轮转更改为每日。
任务:
- find:
paths: /etc/logrotate.d/
register: logrotate_d- replace:
path: "{{ item.path }}"
regexp: '^(\s*)(daily|weekly|monthly|yearly)$'
replace: "\\1daily"
with_items:
- { path: "/etc/logrotate.conf" }
- "{{ logrotate_d.files }}"
loop_control:
label: "{{ item.path }}"问题:
如何在不出现以下错误的情况下将with_items替换为循环:
'list object' has no attribute 'path' 发布于 2022-04-28 11:34:04
with_items和loop作为有记录的这里的行为有一些不同。以下引用相关的双边投资条约:
.
with_items执行隐式单层扁平.
因此,当您向with_items提供2个列表时,它们会被压缩为1 list,并且每个项目的path属性都是可用的。而对于loop,第二个列表logrotate_d.files仍然是一个单独的列表,这就是为什么不能访问item.path属性的原因。
对于您的使用,with_items似乎更合适。但是,如果您想将它与loop一起使用,则可以将其编写为:
- replace:
path: "{{ item.path }}"
regexp: '^(\s*)(daily|weekly|monthly|yearly)$'
replace: "\\1daily"
loop: "{{ [ { 'path': '/etc/logrotate.conf' } ] + logrotate_d.files }}"
loop_control:
label: "{{ item.path }}"https://stackoverflow.com/questions/72040579
复制相似问题