ansible - 使用 ansible _mount 和 json_jquery 的剧本任务引发错误
问题描述
我试图使用下面的任务来验证 /dev/vdb 分区的挂载点是否是使用 ansible_mount 的 /data。但是下面的剧本任务正在向我抛出断言失败错误。有人可以建议我为什么会抛出错误或指导我采用正确的方法。
PS:我对使用 shell 命令不感兴趣
- name: test for disk partitions
vars:
mount_data: "{{ ansible_mounts|json_query('[?device == `/dev/vdb`].mount') }}"
assert:
that: mount_data == "/data"
success_msg : "Expected mount point"
ansible_mounts 如下所示:
"ansible_mounts": [
{
"block_available": 51550174,
"block_size": 4096,
"block_total": 52425979,
"block_used": 875805,
"device": "/dev/vda1",
"fstype": "xfs",
"inode_available": 104768494,
"inode_total": 104857072,
"inode_used": 88578,
"mount": "/",
"options": "rw,relatime,attr2,inode64,noquota",
"size_available": 211149512704,
"size_total": 214736809984,
"uuid": "3ef2b806-efd7-4eef-aaa2-2584909365ff"
},
{
"block_available": 314410952,
"block_size": 4096,
"block_total": 314419200,
"block_used": 8248,
"device": "/dev/vdb",
"fstype": "xfs",
"inode_available": 125829117,
"inode_total": 125829120,
"inode_used": 3,
"mount": "/data",
"options": "rw,relatime,attr2,inode64,noquota",
"size_available": 1287827259392,
"size_total": 1287861043200,
"uuid": "5214b6b0-04af-4ce9-ba46-06fa050d315f"
},
{
"block_available": 26193352,
"block_size": 4096,
"block_total": 26201600,
"block_used": 8248,
"device": "/dev/vdc",
"fstype": "xfs",
"inode_available": 52428797,
"inode_total": 52428800,
"inode_used": 3,
"mount": "/var/corefiles",
"options": "rw,relatime,attr2,inode64,noquota",
"size_available": 107287969792,
"size_total": 107321753600,
"uuid": "b7f230b1-ec81-4cd6-b2d4-20579eb135c6"
}
],
我在执行任务时遇到的错误
FAILED! => {
"assertion": "uu == \"uu\"",
"changed": false,
"evaluated_to": false,
"msg": "Assertion failed"
}
解决方案
您的jmespath
表达式json_query
正在返回一个安装点列表,即使它只返回一个元素。
您需要:
- 检查列表的第一个元素是否等于您的字符串
- 检查您的字符串是否包含在列表中
以下所有三种解决方案都应该有效:
that: mount_data.0 == "/data"
that: mount_data is contains "/data"
that: '"/data" in mount_data'
推荐阅读
- java - 如何使用 HTTPS 将“spring boot application (2.3.4.RELEASE) 与 elasticsearch 7.9.2”连接起来
- c# - 如何根据泛型值定义初始值?
- javascript - Reactjs编译前端报错
- amazon-web-services - csv 中的 AWS Pinpoint 段属性格式
- c++ - 数组的值如何在以下 c++ 代码中受到影响?
- ios - 当字体真棒swift5时我得到问号
- python - 使用 django-import-export 将两个查询集导出到一个 excel
- docker - 从 Wireguard 到 Docker 容器的端口转发
- json - 如何将电子表格列中的类 JSON 数据导出到 json 文件?
- java - 为什么在 org.apache.kafka.common.serialization 中的 Serializer<> 接口的重写 serialize() 方法中有一个“主题”参数