如果 Ansible 中参数的条件

If conditions for parameters in Ansible

这是将 cronjob 添加到 crontab 的任务:

    - name: Add job triggering logs rotation for clusters.
      cron:
        cron_file: '/etc/crontab'
        user: 'root'
        name: 'logrotate'
        minute: *
        hour: '*/4'
        job: '/etc/cron.daily/logrotate'
        state: present

我想要完成的是如果devinventory_hostname中添加minute: */5hour: *,否则添加minute: 0hour: */4 .

有没有办法在分钟和小时参数中添加条件? 我可以使用模板处理这个问题,而只是在提到的任务中添加这两个参数吗?

这是使用 ternary 过滤器实现此目的的一种方法:

    - name: Add job triggering logs rotation for clusters.
      vars:
        is_dev: "{{ 'dev' in inventory_hostname }}"
      cron:
        cron_file: '/etc/crontab'
        user: 'root'
        name: 'logrotate'
        minute: "{{ is_dev | ternary('*/5', '*') }}"
        hour: "{{ (is_dev | ternary('*', '*/4' }}"
        job: '/etc/cron.daily/logrotate'
        state: present