Как сделать значение атрибута Job в зависимости от среды - PullRequest
0 голосов
/ 06 июня 2019

В определении заданий ansible cron, как динамически присваивать значение атрибута job в зависимости от среды. У меня есть необходимость выполнять один и тот же cronjob с разными параметрами и сделать это сейчас, определяя два разных задания cron, одно для prod, а другое для для UAT, DEV. Есть ли в любом случае, где мы можем определить одну работу для всех env и изменить значение работы на основе env

Письменный код, как показано ниже

name: Ensure a job that runs purge backup for UAT,DEV and QA
  cron:
    name: "Cassandra purge backup job"
    user: cassandra
    minute: 0
    hour: 3
    weekday: "5,6"
    job: "/usr/ops/base/bin/cron.sh /usr/ops/cassandra/bin/backupfiles.sh /nas_csd_backup/uat_backup 7"
  when: cassandra_backup_enable
  with_items:
    - dev
    - qa
    - uat

name: Ensure a job that runs purge backup for PROD
  cron:
    name: "Cassandra purge backup job"
    user: cassandra
    minute: 0
    hour: 3
    weekday: "5,6"
    job: "/usr/ops/base/bin/cron.sh /usr/ops/cassandra/bin/backupfiles.sh /nas_csd_backup/prod_backup 7 /nas_csd_backup/prod_keep_backup 365"
  when: cassandra_backup_enable
  with_items:
    - production

В приведенном выше коде все параметры одинаковы, кроме «задания».

1 Ответ

0 голосов
/ 06 июня 2019

Вы можете использовать троичный фильтр .

Это должно работать:

---
- hosts: localhost
  vars:
    cassandra_backup_enable: true
  tasks:
    - debug:
        msg: > # multiline operator
          /usr/ops/base/bin/cron.sh /usr/ops/cassandra/bin/backupfiles.sh /nas_csd_backup/prod_backup 7
          {{ (item in ['dev', 'qa', 'uat']) | ternary('', '/nas_csd_backup/prod_keep_backup 365') }}
      loop:
        - dev
        - qa
        - uat
        - production

    - name: Ensure a job that runs purge backup
      cron:
        name: "Cassandra purge backup job"
        user: cassandra
        minute: 0
        hour: 3
        weekday: "5,6"
        job: > # multiline operator
          /usr/ops/base/bin/cron.sh /usr/ops/cassandra/bin/backupfiles.sh /nas_csd_backup/prod_backup 7
          {{ (item in ['dev', 'qa', 'uat']) | ternary('', '/nas_csd_backup/prod_keep_backup 365') }}
      when: cassandra_backup_enable
      loop:
        - dev
        - qa
        - uat
        - production
...