Ansible Inventory介绍
Ansible可同时操作属于一个组的多台主机。组和主机之间的关系通过Inventory文件配置。Ansible Inventory分为静态Inventory和动态Inventory。当被管理主机比较少的情况下,直接在静态Inventory的host文件中管理即可;当主机越来越多,不断变化时,可以通过动态Inventory来管理。动态Inventory指的是通过外部脚本自动获取主机列表,并按照设置的分组方式自动对主机列表进行分组,同时按照Ansible所要求的格式返回给Ansible命令。
华为云已经提供了动态Inventory文件,利用该文件可实现对指定过滤条件的主机信息的动态获取。更多详细信息,请参见使用动态Inventory。
华为云动态Inventory
以下是华为云动态Inventory获取到的一部分的主机信息。
{ "_meta": { "hostvars": { "ecs_ansible_test_0001": { "ansible_ssh_host": "45.9.xx.xx", "id": "d9bdd7ef-dfa2-4ab2-abae-1cb25788813f", "name": "ecs-ansible-test-0001", ... }, "ecs_ansible_test_0002": { "ansible_ssh_host": "37.18.xx.xx", "id": "c1936f99-469b-4d96-9e20-89fa816b310c", "name": "ecs-ansible-test-0002", ... } } }, "c1936f99-469b-4d96-9e20-89fa816b310c": [ "ecs_ansible_test_0002" ], "d9bdd7ef-dfa2-4ab2-abae-1cb25788813f": [ "ecs_ansible_test_0001" ], "huaweicloud": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ], "image_id_cf9a291d_a62e_4df6_a7c5_0f6d2f16f351": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ], "cn-north-4": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ], "cn-north-4a": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ], "security_group_id_2ac34ff2_a923_465c_8591_f618f5c250bf": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ], "vpc_id_e98a5194_b270_4cad_b233_99486744f3ac": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ] }
华为云的动态Inventory提供了多个组到实例的映射:
- Global
"huaweicloud": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ]
- 实例ID
"c1936f99-469b-4d96-9e20-89fa816b310c": [ "ecs_ansible_test_0002" ], "d9bdd7ef-dfa2-4ab2-abae-1cb25788813f": [ "ecs_ansible_test_0001" ],
- Region
"cn-north-4": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ],
- 可用区
"cn-north-4a": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ],
- 安全组
实例可属于一个或多个安全组。每一个组的前缀都是 security_group_id_。例如:
"security_group_id_2ac34ff2_a923_465c_8591_f618f5c250bf": [ "ecs_ansible_test_0001", "ecs_ansible_test_0002" ]
除此之外,还有很多类似属性用于划分主机组,如 VPC ID,镜像ID等。