Python 条件不满足时如何跳过任务

Python 条件不满足时如何跳过任务,python,ansible,yaml,conditional-statements,Python,Ansible,Yaml,Conditional Statements,如果my_环境变量为“prod”,则具有以下任务的角色,该任务应创建cron作业 当条件不满足时,我希望剧本跳过此任务,而不是失败: --- - name: Configure cron job to export patch logs cron: name: export patch logs daily minute: 0 hour: 0 user: root cron_file: patch_logs job: "/usr/local/b

如果my_环境变量为“prod”,则具有以下任务的角色,该任务应创建cron作业

当条件不满足时,我希望剧本跳过此任务,而不是失败:

---
- name: Configure cron job to export patch logs
  cron:
    name: export patch logs daily
    minute: 0
    hour: 0
    user: root
    cron_file: patch_logs
    job: "/usr/local/bin/aws s3 cp /var/log/dpkg.log s3://{{ patch_logs_bucket }}/dpkg.log.$(hostname).$(date +\\%F)"
  when: my_environment == "prod"
失败消息:

TASK [ansible-contxt-base : Configure cron job to export patch logs] ***********
    fatal: [ubuntu-1604]: FAILED! => {"msg": "The conditional check 'scx_environment == \"prod\"' failed. The error was: error while evaluating conditional (scx_environment == \"prod\"): 'my_environment' is undefined\n\nThe error appears to have been in '/**<path>**/tasks/base.yml': line 125, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Configure cron job to export patch logs\n  ^ here\n"}
TASK[ansible contxt base:配置cron作业以导出修补程序日志]***********
致命:[ubuntu-1604]:失败!=>{“msg”:“条件检查'scx\U环境==\“prod\””失败。错误为:计算条件时出错(scx\U环境==\“prod\”):“my_environment”未定义\n\n错误似乎出现在“/**/tasks/base.yml”中:第125行第3列,但可能\n出现在文件的其他位置,具体取决于语法问题。\n\n出现问题的行可能是:\n\n\n-name:Configure cron job to export patch log\n^此处\n“}

我们可以使用jinja2快捷方式来表示“默认(错误)”:d(错误)”

在这里找到


请解释一下
when:

my_environment is defined

my_environment != ”prod”
when: my_environment|d(False) == "prod"
- shell: echo "This certainly isn't epic!"
  when: not epic
- fail: msg="Bailing out. this play requires 'bar'"
  when: bar is undefined