繁体   English   中英

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

[英]How to skip task when condition is not satisfied

如果my_environment var为“ 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"}
when:

my_environment is defined

my_environment != ”prod”

我们可以将jinja2快捷方式用于'default(False)':'d(False)'。

when: my_environment|d(False) == "prod"

在此处找到https://ansible-docs.readthedocs.io/zh/stable-2.0/rst/playbooks_conditionals.html#the-when-statement

- shell: echo "This certainly isn't epic!"
  when: not epic

要么

- fail: msg="Bailing out. this play requires 'bar'"
  when: bar is undefined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM