ansible通过循环检查强制参数

ansible通过循环检查强制参数,ansible,Ansible,我正在创建ansible角色,作为第一个任务,我想验证所有相关的强制参数是否已定义且不为空 强制参数的数量是动态的,并根据配置进行更改。 e、 g.如果标志为真,则需要额外的强制参数 为了求解动态参数,我创建了包含所有相关参数的mandatory_parameters.j2模板文件 所需变量: -发布\u管道\u bb\u url -发送邮件至 -假人 {%如果发布\管道\凭证\启用%} -释放\u管道\u凭证。私钥 {%endif%} {%if release\u descriptor\u c

我正在创建ansible角色,作为第一个任务,我想验证所有相关的强制参数是否已定义且不为空

强制参数的数量是动态的,并根据配置进行更改。 e、 g.如果标志为真,则需要额外的强制参数

为了求解动态参数,我创建了包含所有相关参数的
mandatory_parameters.j2
模板文件

所需变量:
-发布\u管道\u bb\u url
-发送邮件至
-假人
{%如果发布\管道\凭证\启用%}
-释放\u管道\u凭证。私钥
{%endif%}
{%if release\u descriptor\u credential\u enabled%}
-释放\u描述符\u凭证.UserName
-释放\u描述符\u凭证密码
{%endif%}
之后,我将这个文件作为vars加载

-名称:创建强制验证文件
模板:
dest:{{jenkins_casc_folder}}/{{role_name}}/mandatory.yaml”
src:mandable_parameters.j2
-名称:将强制参数文件作为变量加载
包括以下变量:
文件:“{jenkins_casc_folder}}/{{role_name}}/mandatory.yaml”
我成功地检查了“常规”变量的强制参数define和not empty,但它不适用于字典,如
release\u descriptor\u credential.Password

-名称:验证所有必需参数
fail:msg=“变量{{item}}未定义或为空”
当:(变量[项目]未定义)或(变量[项目]|长度==0)
循环:“{required_vars}}”
如何也验证字典类型


我也尝试过通过查找,但没有成功。

下面的任务可以完成

  - name: Validate all mandatory parameters
    fail:
      msg: "The variable '{{ item }}' is not defined or empty"
    loop: "{{ required_vars }}"
    when: myvar|length == 0
    vars:
      mydict: "{{ item.split('.').0 }}"
      myattr: "{{ item.split('.').1|default('') }}"
      myvar: "{{ (myattr|length > 0)|
                  ternary( lookup('vars', mydict, default='')[myattr]|default(''),
                           lookup('vars', mydict, default='')) }}"