json - json_query 上的 Ansible 断言
问题描述
我正在尝试在 ansible 中对从json_query
. 然而,即使返回的值看起来像我的断言,断言还是失败了。这是断言:
- name: Assert environment variables
assert:
that:
- Job | json_query(jmesquery) == "00"
vars:
jmesquery: "resources[0].spec.template.spec.containers[0].env[?name=='MY_VARIABLE'].value"
在同一查询上运行的调试返回:
- name: Test1
debug: msg="{{ Job | json_query(jmesquery) }}"
vars:
jmesquery: "resources[0].spec.template.spec.containers[0].env[?name=='MY_VARIABLE'].value"
TASK [Test1] *******************************************************************
ok: [localhost] => {
"msg": [
"00"
]
}
那么到底为什么这个断言会失败呢?
解决方案
您的调试消息显示:您的结果是一个包含一个元素的列表"00"
,因此您的断言应该是:
- name: Assert environment variables
assert:
that:
- Job | json_query(jmesquery) == ["00"]
vars:
jmesquery: "resources[0].spec.template.spec.containers[0].env[?name=='MY_VARIABLE'].value"
作为记录,这里是像你这样的列表的调试:
- hosts: localhost
gather_facts: no
tasks:
- debug:
msg: ["00"]
给出:
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": [
"00"
]
}
这是一个简单字符串的调试assert
,就像你写的那样,期待:
- hosts: localhost
gather_facts: no
tasks:
- debug:
msg: "00"
给
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": "00"
}
推荐阅读
- ruby - ruby 版本是最新的,但在安装机架和乘客时仍然出现错误,如何解决这个问题?
- swift - 将泛型参数约束到约束到 AnyObject 的协议
- spring-boot - SpringBoot 2.2.4 Actuator - 自定义管理端点的路径
- python - 带有 reset_index 的 Pandas 链方法 drop/dropna
- arrays - 如何使用节点js访问数组字典数组字典的值?
- java - Gsuite Directory API Java:获取上次登录时间
- flutter - 为什么颤振测试覆盖率不涵盖断言语句?
- css - 如何使用css为div中的文本创建可缩放背景
- python - 比较python字典中的列表值
- tampermonkey - 如何在#shadow-root(打开)上的 Tampermonkey 中使用 GM_addStyle?