Если условия для параметров в Ansible - PullRequest
0 голосов
/ 16 апреля 2020

Это задача для добавления 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

Что я хочу сделать sh - это добавить minute: */5 и hour: *, если dev в inventory_hostname, иначе добавить minute: 0 и hour: */4.

Есть ли способ сделать это, добавляя условия в параметрах минут и часов? Могу ли я справиться с этим, используя шаблон, но просто добавить эти два параметра в упомянутой задаче?

1 Ответ

1 голос
/ 16 апреля 2020

Это один из способов добиться этого с помощью фильтра 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
...