ansible - ansible-inventory --list 主机组命令行
问题描述
我想从 ansible-inventory 获取主机组名称列表(仅),但是我必须使用 grep 根据已知的组名称模式修剪列表 - 例如
- 输出干净但命令行混乱,需要提前知道组名模式:
ansible-inventory -i inventory/production --list --yaml | grep webserver_.*:$
- 干净的命令行,不需要知道组名模式,但输出混乱:
ansible-playbook my-playbook.yml -i inventory/production --list-hosts
有没有一种干净的方法可以从库存中提取组名?
示例 hosts.yml:
# NGINX
webserver_1:
hosts:
ws1.public.example.com
webserver_2:
hosts:
ws2.public.example.com
webserver_2:
hosts:
ws2.public.example.com
# EC2 back-ends
backend_ec2_1:
hosts:
be1.internal.example.com
backend_ec2_2:
hosts:
be2.internal.example.com
backend_ec2_3:
hosts:
be3.internal.example.com
[Ansible v2.9.7]
解决方案
您可以使用该jq
命令解析来自 的 json 输出ansible-inventory --list
,如下所示:
$ ansible-inventory -i hosts --list | jq .all.children
[
"backend_ec2_1",
"backend_ec2_2",
"backend_ec2_3",
"ungrouped",
"webserver_1",
"webserver_2"
]
或者,如果您只想要裸名:
$ ansible-inventory -i hosts --list | jq -r '.all.children[]'
backend_ec2_1
backend_ec2_2
backend_ec2_3
ungrouped
webserver_1
webserver_2
推荐阅读
- javascript - 我无法将 mongodb 数据保存在文档数组中
- postgresql - 在 PG 中的 SELECT 中进行比较时,为什么参数不能为 null 或空字符串?
- vue.js - Vue.js 发出,将数组传递给子项,将数组映射到子项并将事件发送给父项,开发人员工具显示数组已更新但页面未更新
- typescript - 使用 Webpack 和 ForkTsCheckerWebpackPlugin 在开发期间进行 Typescript 类型检查?
- c# - 切换到另一个表单时禁用 C# Winform 标签
- typescript - typescript 文件被识别为 MPEG-2 ts 文件
- php - 箭头和输入键在 datalist 上无法正常工作如何修复
- stripe-payments - 在本期结束时降级 Stripe 订阅?
- angular - Angular 8根据父类禁用按钮
- java - 在 reduce 操作中使用 StringBuilder(...) 作为标识值会产生不可预测的结果