如何评估 Ansible 任务的 when 条件

问题描述 投票:0回答:3

我有一个具有以下值的变量:

   name_prefix: stage-dbs

我的剧本中有一项任务,必须检查此变量并查看它是否包含 *-dbs ,如果满足条件,则应该进行处理。我写了这样的东西:

- name: Ensure deployment directory is present
  file:
    path=/var/tmp/deploy/paTestTool
    state=directory
  when: name_prefix =="*-dbs" # what condition is required here to evaulate the rest part of variable?? 

应该使用什么正则表达式模式或如何在此处使用正则表达式?

regex ansible
3个回答
21
投票

无需使用正则表达式进行模式搜索。您可以像这样使用搜索:

when: name_prefix | search("stage-dbs")

一定会成功的。


19
投票

不确定过滤器

search
今天是否存在?

解决方案https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#searching-strings-with-regular-expressions

when: name_prefix | regex_search("^stage-dbs(.*)$")

2
投票

使用“|”在 ansible 2.9.* 中已弃用。而不是使用

name_prefix |search
使用
name_prefix is search
。该功能将在2.9版本中删除

© www.soinside.com 2019 - 2024. All rights reserved.