如何根据环境使Job属性值

时间:2019-06-06 10:00:50

标签: ansible devops ansible-2.x

在ansron cron作业定义中,如何根据环境动态赋予作业属性值。我需要执行具有不同参数的相同cronjob并立即定义两个不同的cron作业,一个用于生产,另一个用于用于UAT,DEV。无论如何,我们可以为所有环境定义一项工作,并根据环境来更改工作价值

如下所示的书面代码

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

在上面的代码中,除“ job”外,所有参数都相同。

1 个答案:

答案 0 :(得分:0)

您可以使用ternary filter

这应该有效:

---
- 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