在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”外,所有参数都相同。
答案 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