Ansible 如何根据环境确定作业属性值

Ansible 如何根据环境确定作业属性值,ansible,devops,ansible-2.x,Ansible,Devops,Ansible 2.x,在ansible cron作业定义中,如何根据环境动态地给出作业属性值。我需要使用不同的参数执行同一个cronjob,现在要做到这一点,需要定义两个不同的cron作业,一个用于prod,另一个用于UAT,开发人员:我们是否可以为所有环境定义一个作业,并根据环境更改作业值 编写如下代码 name: Ensure a job that runs purge backup for UAT,DEV and QA cron: name: "Cassandra purge backup job"

在ansible cron作业定义中,如何根据环境动态地给出作业属性值。我需要使用不同的参数执行同一个cronjob,现在要做到这一点,需要定义两个不同的cron作业,一个用于prod,另一个用于UAT,开发人员:我们是否可以为所有环境定义一个作业,并根据环境更改作业值

编写如下代码

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
在上述代码中,除“作业”外,所有参数均相同。

您可以使用

这应该起作用:

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

所以,如果它不是prod,它将采用默认值,否则它会附加三元运算符中提到的字符串吗?如果是这种情况,我们是否给空字符串作为三值运算符的第一个参数?
bool |三值(value_1,value_2)
将具有
value_1
如果
bool
True
value_2
如果
bool
False
。作业:{(cassandra purge\u backup\u-enable)}三值('/usr/ops/base/bin/cronic.sh/usr/ops/cassandra/bin/TH_Purge_Backupfiles.sh/nas_csd_backup/uat_backup 7','/usr/ops/bin/cronic.sh/usr/ops/cassandra/bin/TH_Purge_Backupfiles.sh/nas_csd_backup/prod_backup 7/nas_csd_backup/prod_backup/prod_keep_backup 7'}}这有意义吗?