在Ansible中,当配置中未定义这些非必需属性时,如何获取json模式中非必需属性的默认值?

在Ansible中,当配置中未定义这些非必需属性时,如何获取json模式中非必需属性的默认值?,ansible,jsonschema,Ansible,Jsonschema,我有以下json模式: { ... "properties": { "gitlabUrl": { "description": "URL of the GitLab instance to use", "type": "string", "default": "https://gitlab.co

我有以下json模式:

{
  ...

  "properties": {
    "gitlabUrl": {
      "description": "URL of the GitLab instance to use",
      "type": "string",
      "default": "https://gitlab.com"
    },
    "gitlabApiVersion": {
      "description": "Version of the GitLab API to use",
      "type": "string",
      "enum": [ "v3", "v4" ],
      "default": "v4"
    },
    "gitlabAccessToken": {
      "description": "Personal access token for accessing the GitLab API",
      "type": "string"
    }
  },

  "required": [
    "gitlabAccessToken"
  ]

}
只有
gitlabAccessToken
是强制属性。考虑上面的模式的配置,它只包含<代码> GITLABAcctoStKEN < /COD>属性:

{
  "gitlabAccessToken": "XXXXXXXXXXXXXXXX"
}
如果我将上述配置传递给具有以下任务文件的Ansible角色:

---
- name: check variables
  debug:
    msg:
      - "gitlabUrl: {{ gitlabUrl }}"
      - "gitlabApiVersion: {{ gitlabApiVersion }}"
      - "gitlabAccessToken: {{ gitlabccessToken }}"

Ansible会抱怨
gitlabUrl
gitlabApiVersion
未定义。我不想在json模式中强制使用
gitlabUrl
gitlabipVersion
,但我仍然希望这两个变量在Ansible中使用json模式中指定的默认值自动定义。如何实现这一点?

创建默认值字典,例如

-设置事实:
pd:“{{properties|
口述2项|
json_查询('[].{key:key,value:value.default}'))|
items2dict}}”
给予

pd:
gitlabAccessToken:null
Gitlab版本:v4
gitlabUrl:https://gitlab.com
然后使用字典设置默认值,例如

-调试:
味精:
-“gitlabUrl:{{gitlabUrl | default(pd.gitlabUrl)}”
-“gitlabApiVersion:{{gitlabApiVersion |默认值(pd.gitlabApiVersion)}”
-“gitlabAccessToken:{{gitlabAccessToken |默认值(pd.gitlabAccessToken)}”
变量:
gitlabAccessToken:“XXXXXXXXXXXXXX”
给予

msg:
-'gitlabUrl:https://gitlab.com'
-'gitlabApiVersion:v4'
-'gitlabAccessToken:xxxxxxxxxxxxxx'