gpt4 book ai didi

ansible-inventory --list 主机组命令行

转载 作者:行者123 更新时间:2023-12-04 08:15:57 27 4
gpt4 key购买 nike

我想从 ansible-inventory 获取主机组名称列表(仅),但是我必须使用 grep 根据已知的组名称模式来修剪列表 - 例如

  • 干净的输出但凌乱的命令行,需要提前知道组名模式:

  • ansible-inventory -i inventory/production --list --yaml | grep webserver_.*:$


  • 干净的命令行,不需要知道组名模式,但是输出很乱:

  • ansible-playbook my-playbook.yml -i inventory/production --list-hosts


    有没有一种干净的方法可以从 list 中提取组名?
    示例 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解析来自 ansible-inventory --list 的 json 输出的命令, 像这样:

    $ 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

    关于ansible-inventory --list 主机组命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65700050/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com