为了账号安全,请及时绑定邮箱和手机立即绑定

根据条件选择变量

根据条件选择变量

慕姐8265434 2021-09-28 14:36:36
我有以下变量:secureVar:  cosmosconstr: ""  postgresUrl: ""它可以为空或包含数据库 url,具体取决于我需要在 kubernetes 中有条件地创建外部服务:- name: Get DB data  when: (secureVars | from_json)['cosmosconstr'] | length == 0 and (secureVars | from_json)['postgresUrl'] | length == 0  shell: ./python/db_credentials.py -dp {{ deploymentPrefix }}  register: dbData- name: Generate external services templates  when: (secureVars | from_json)['cosmosconstr'] | length == 0 and (secureVars | from_json)['postgresUrl'] | length == 0  action: template src=k8s/common/external-services.j2 dest=/tmp/k8s-external-svc.yml  vars:    cosmosUrl: "{{ dbData.stdout_lines[0] | urlsplit('hostname') }}"    postgresUrl: "{{ dbData.stdout_lines[1] }}"- name: Generate external services templates  when: (secureVars | from_json)['cosmosconstr'] | length > 0 and (secureVars | from_json)['postgresUrl'] | length > 0  action: template src=k8s/common/external-services.j2 dest=/tmp/k8s-external-svc.yml  vars:    cosmosUrl: "{{ ( secureVars | from_json )['cosmosconstr'] | urlsplit('hostname') }}"    postgresUrl: "{{ ( secureVars | from_json )['postgresUrl'] }}"这就是我现在正在做的事情,我想设置一个条件,以便如果跳过 dbData 我会使用secureVars,如果没有跳过我会使用 dbData,问题是,我无法检查是否dbData.skipped等于 true,因为如果它没有被跳过,它不包含skipped属性
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

您可能希望使用默认的 False 值。

什么时候: dbData.skiped | 默认('假')

从 OP 编辑:

我最终这样做了:

"{% if dbData.skipped is defined %}{{ ( secureVars.stdout | from_json )['postgresUrl'] }}{% else %}{{ dbData.stdout_lines[1] }}{% endif %}"



查看完整回答
反对 回复 2021-09-28
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信