ansible - 任务内部对 `item` 的 Ansible 字典引用的别名?

标签 ansible

我有一个 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/

相关文章:

linux - 使用 ansible playbook 修改 sshd_config 中的 AllowGroups

python - 通过 Jinja2 模板对 IP 进行排序

ansible - 使用 ansible-playbook 隐藏额外输出

ssh - ansible 剧本 [设置] 收集事实 - SSH UNREACHABLE 连接在横幅期间超时

arrays - Ansible with_subelements 嵌套级别

amazon-web-services - ami_block_device_mappings 无法与打包程序一起正常工作

Ansible - 如何为每个主机顺序执行剧本

ansible - 无法获得与取消存档模块一起使用的 "exclude"选项

shell - 如何将 ansible playbook 中的值返回给 shell 脚本?

ansible - 使用 Jinja2 dict 作为 Ansible 模块选项的一部分