Ansible可同时操作属于一个组的多台主机。组和主机之间的关系通过Inventory文件配置。Ansible Inventory分为静态Inventory和动态Inventory。当被管理主机比较少的情况下,直接在静态Inventory的host文件中管理即可;当主机越来越多,不断变化时,可以通过动态Inventory来管理。

静态Inventory

静态Inventory指的是在一个静态文件中预先配置主机名称、主机地址和连接信息等。默认文件路径为/etc/ansible/hosts

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

host文件中方括号里的内容是组名,用于对系统进行分类,便于对不同系统进行个别的管理。

# Ex 1: Ungrouped hosts, specify before any group headers.  ## green.example.com ## blue.example.com ## 192.168.100.1 ## 192.168.100.10  # Ex 2: A collection of hosts belonging to the 'webservers' group  ## [webservers] ## alpha.example.org ## beta.example.org ## 192.168.1.100 ## 192.168.1.110  # If you have multiple hosts following a pattern you can specify # them like this:  ## www[001:006].example.com  # Ex 3: A collection of database servers in the 'dbservers' group  ## [dbservers] ## ## db01.intranet.mydomain.net ## db02.intranet.mydomain.net # ## db-[99:101]-node.example.com

动态Inventory

动态Inventory指的是通过外部脚本自动获取主机列表,并按照设置的分组方式自动对主机列表进行分组,同时按照Ansible所要求的格式返回给Ansible命令。

以下是阿里云动态Inventory获取到的一部分的主机信息。

{   "_meta": {     "hostvars": {       "i_bp171m264ryt9*******": {         "ansible_ssh_host": "47.98.xx.xx",          "availability_zone": "cn-hangzhou-g",          "block_device_mapping": [           ...         ],          ...         "host_name": "iZbp171m264ryt9******Z",          "id": "i-bp171m264ryt9*******",          "image_id": "ubuntu_16_0402_64_20G_alibase_20180409.vhd",          "inner_ip_address": "",          ...         "tags": {           "env": "dev"         }      },        "i_bp1i1aitghkkq*******": {         "ansible_ssh_host": "47.96.xx.xx",          "availability_zone": "cn-hangzhou-g",          "block_device_mapping": [           ...         ],          "eip": {           ...           "ip_address": "47.96.xx.xx"         },          ...         "host_name": "terraform",          "id": "i-bp1i1aitghkkq*******",          "image_id": "m-bp1243pi65bw8*****",          "inner_ip_address": "",          ...       },        ...     }   } }, "alicloud": {   "children": [     "i_bp1i1aitghkkq*******",      "i_bp171m264ryt9*******"   ] }, "cn-hangzhou": [   "i_bp1i1aitghkkq*******",    "i_bp171m264ryt9*******" ], "cn-hangzhou-g": [   "i_bp1i1aitghkkq*******",    "i_bp171m264ryt9c******" ]

动态Inventory通常通过调用服务API或者接入库查询的方式,自动查询返回主机列表,并更新Inventory的主机信息,以应对主机资源动态的增减的场景。

阿里云已经提供了动态Inventory文件,利用该文件可实现对指定过滤条件的主机信息的动态获取。更多详细信息,请参见使用动态Inventory