库存的默认位置是/etc/ansible/hosts。您还可以同时使用多个库存文件,或从动态源、云源不同格式(YAML、ini 等)中提取库存。使用ansible命令行时,可以使用-i
本文主要介绍清单文件的INI格式
INI格式 基础格式这种格式比较少见,一般建议将机器进行分组。
192.168.1.100 192.168.1.101 192.168.1.102分组格式
定义了两个分组lqgroup1、lqgroup2。单台机器可以出现在多个主机组中。
182.168.1.100 [lqgroup1] 192.168.1.1 182.168.1.2 [lqgroup2] 192.168.1.11 182.168.1.12嵌套组
想将多个组中的机器合成一个组来使用。不需要把多个组中的机器再重新写道一个新组里。可以使用嵌套组来形成新的组。
格式 [组名:children]
[mastergroup:children] lqgroup1 lqgroup2 [lqgroup1] 192.168.1.1 182.168.1.2 [lqgroup2] 192.168.1.11 182.168.1.12
-
任何属于子组成员的主机都会自动成为父组的成员。
-
组可以有多个父母和孩子,但不能有循环关系。
ansible有两个默认组:all、ungrouped
all 包含inventory中的所有机器
ungrouped 包含inventory中所有未被分组的机器
主机定义 添加主机组范围可以将多台连续的主机添加为一个范围,而不是单独列出每个主机名。并且可以定义范围的步长:
[lqgroup1] 192.168.1[01:50] www[01:50].example.com [lqgroup2] 192.168.1[51:99:2] www[51:99:2].example.com主机变量 常用系统参数
ansible_ssh_user 指定ssh用户
ansible_ssh_host 指定ssh的主机
ansible_ssh_port 指定ssh的端口
ansble_ssh_private_key_file 指定ssh key文件
host_key_checking=False 当第一次链接远程主机时,会提示yes/no。忽略跳过。
[my-etcd] 172.24.31.22 ansible_ssh_user=root ansible_ssh_private_key_file=/xx.pem ansible_become=true ansible_become_user=root 172.24.31.24 ansible_ssh_user=root ansible_ssh_private_key_file=/xx.pem ansible_become=true ansible_become_user=root 172.24.31.25 ansible_ssh_user=root ansible_ssh_private_key_file=/xx.pem ansible_become=true ansible_become_user=root
更多变量:How to build your inventory — Ansible Documentation
自定义变量[atlanta] host1 http_port=80 maxRequestsPerChild=808 host2 http_port=303 maxRequestsPerChild=909分组变量
可以使用:vars定义主机组的变量
格式 [组名:vars]
[lqgroup1] 192.168.1.1 182.168.1.2 [lqgroup1:vars] host_type=nginx host_port=8888
-
子组的变量将具有更高的优先级(覆盖)父组的变量。
优先级从低到高:
-
all group (because it is the ‘parent’ of all other groups)
-
parent group
-
child group
-
host
当要合并变量的组处于同一级时,默认情况下按ASCII顺序合并,后合并的分组会覆盖前面分组的变量。
可以通过设置分组变量ansible_group_priority修改分组优先级。优先级越大时,分组合并发生越晚。默认优先级为1。



