【发布时间】:2026-01-07 20:40:02
【问题描述】:
我试过用python写一个动态库存脚本,如下:
[root@satellite code]# python3 dynamic_inventory.py --list > hosts
[root@satellite code]# cat hosts
{"k8s-master": ["k8s-master.example.com"], "k8s-worker": ["worker-1.example.com", "worker-2.example.com"], "satellite": ["satellite.example.com"], "all": ["satellite.example.com", "worker-2.example.com", "k8s-master.example.com", "worker-1.example.com"], "Centos7": ["k8s-master.example.com", "worker-1.example.com", "worker-2.example.com", "satellite.example.com"]}
现在,当我尝试使用库存时,我收到以下错误:
[root@satellite code]# ansible-playbook -i hosts sample.yaml
[WARNING]: Skipping 'Centos7' as this is not a valid group definition
[WARNING]: Skipping 'k8s-worker' as this is not a valid group definition
[WARNING]: Skipping 'satellite' as this is not a valid group definition
[WARNING]: Skipping 'k8s-master' as this is not a valid group definition
[WARNING]: Skipping 'all' as this is not a valid group definition
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
PLAY [all] *************************************************************************************************************************************************************
skipping: no hosts matched
PLAY RECAP *************************************************************************************************************************************************************
也试过了:
[root@satellite code]# ansible-playbook -i dynamic_inventory.py sample.yaml
[WARNING]: * Failed to parse /root/code/dynamic_inventory.py with ini plugin: /root/code/dynamic_inventory.py:1: Expected key=value host variable assignment, got: os
[WARNING]: Unable to parse /root/code/dynamic_inventory.py as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
PLAY [all] *************************************************************************************************************************************************************
skipping: no hosts matched
PLAY RECAP *************************************************************************************************************************************************************
脚本将主机名从 MySQL 数据库中提取为 JSON 格式。我在官方 ansible 文档中找不到任何插件。任何人都可以帮助解决这个问题吗?有什么办法可以将脚本输出渲染成ini格式。
【问题讨论】: