If statement Ansible中参数的If条件

If statement Ansible中参数的If条件,if-statement,ansible,conditional-statements,logrotate,If Statement,Ansible,Conditional Statements,Logrotate,这是将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/logro

这是将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
我想要完成的是添加分钟:*/5和小时:*如果dev在inventory_主机名中,则添加分钟:0和小时:*/4

有没有办法在分钟和小时参数中添加条件?
我是否可以使用模板处理此问题,但只需在上述任务中添加这两个参数?

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


还没有听说过这个过滤器,但在这种情况下工作完美!比使用模板要好得多。非常感谢你!如前所述,这是处理问题的一种方法。这将不容易扩展,因为您有许多参数,用于许多模块。在这种情况下,将参数放在清单中并按主机/组进行拆分(仍然依赖默认值)可能是更好的选择。
    - 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