我有一个 Ansible 任务,如下所示:
- name: Create cron job to backup foo (default is every day at 2AM )
cron: name="foo-database-backup"
cron_file="foo-database-backup"
minute="{{ foo.backup_policy.minute|default('0') }}"
hour="{{ foo.backup_policy.hour|default('2') }}"
day="{{ foo.backup_policy.day|default('*') }}"
weekday="{{ foo.backup_policy.weekday|default('*') }}"
month="{{ foo.backup_policy.month|default('*') }}"
job="/bin/true"
相应的 group_vars 文件如下所示:
---
foo:
backup_policy:
minute: 30
hour: 3
day: "*/3"
但是,我想知道通过将 foo.backup_policy
字典引用别名为内部 item
来复制代码片段时是否可以使任务更具可读性且不易出错任务。我尝试使用 with_items
这样做:
- name: Create cron job to backup foo (default is every day at 2AM )
cron: name="foo-database-backup"
cron_file="foo-database-backup"
minute="{{ item.minute|default('0') }}"
hour="{{ item.hour|default('2') }}"
day="{{ item.day|default('*') }}"
weekday="{{ item.weekday|default('*') }}"
month="{{ item.month|default('*') }}"
job="/bin/true"
with_items: foo.backup_policy
但这不起作用(正如我所期望的那样),因为 with_items
确实需要一个列表或集合(如果我尝试)。
是否可以将此字典别名为 item
或任务中类似的更短的名称,或者我应该停止尝试如此多的微优化?
最佳答案
这并不是您正在寻找的答案,但无论如何您已经自己解决了这个问题,因此:您还可以通过在同一级别缩进 cron
参数来提高可读性,如下所示:
- name: Create cron job to backup foo (default is every day at 2AM )
cron: name="foo-database-backup"
cron_file="foo-database-backup"
minute="{{ item.minute|default('0') }}"
hour="{{ item.hour|default('2') }}"
day="{{ item.day|default('*') }}"
weekday="{{ item.weekday|default('*') }}"
month="{{ item.month|default('*') }}"
job="/bin/true"
with_items:
- "{{ foo.backup_policy }}"
关于ansible - 任务内部对 `item` 的 Ansible 字典引用的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28378689/