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