————————————————

Ansible Inventory主机清单

一、 Ansible Inventory
Inventory由ansible所管理的主机的清单,称为ansible inventory,ansible inventory由主机清单文件进行描述,当为ansible指定了本次运维所涉及的主机名/主机地址/主机组名后,ansible将自动在主机清单文件中进行查找,以获得相关主机的具体信息

默认主机清单文件:/etc/ansible/hosts
注:如果在命令行中不指定具体的主机清单文件,ansible将默认从/etc/ansible/hosts中查找主机信息

自定义主机清单文件:ansible -i 主机清单文件路径
注:运维人员可根据需要,自行创建主机清单文件,在命令中指定所使用的主机清单文件
eg:

vim ./myhosts
[group1]
192.168.1.100 ansible_ssh_user=root ansible_ssh_pass=123456
192.168.1.110 ansible_ssh_user=root ansible_ssh_pass=123456

命令行指定主机清单执行
ansible group1 -m ping -i myhosts

Inventory默认主机组
all——包含了清单文件中的所有主机
ansible all -m ping -i myhosts
ungrouped——包含了清单文件中所有未分组的主机
ansible ungroup -m ping -i myhosts

主机组的划分(一台主机,可以同时属于多个主机组)

1)根据主机的功能、用途划分
比如将Apache服务器划分为一组,将mysql数据库服务器划分为一组
2)根据主机所在位置划分
比如将北京的服务器划分为一组
3)根据主机所处的阶段划分
比如将在测试环境的主机划分为一组,将生产环境的划分为一组

二、Inventory主机变量
针对不同的主机,为主机变量赋予不同的值

主机变量定义:在主机清单文件中定义
变量名=值
注:变量名必须是字母、数字和下划线组合;第一个字符必须是字母

引用方式:{{变量名}}
eg1:

vim ./myhosts
[group1]
192.168.1.100 ansible_ssh_user=root ansible_ssh_pass=123456
192.168.1.110 ansible_ssh_user=test ansible_ssh_pass=123456
#不同主机,可以采用不同用户和密码登录

eg2:

vim ./myhosts
[group1]
192.168.1.100 dir=/root ansible_ssh_user=root ansible_ssh_pass=123456
192.168.1.110 dir=/tmp ansible_ssh_user=root ansible_ssh_pass=123456
#使用shell模块,针对主机Host1查询其/root目录信息,针对主机Host2查询其/tmp信息
ansible group1 -m shell  -a "ls -l {{dir}}"
#引用主机变量

三、Inventory主机组变量
针对主机组定义的变量,该主机组中所有主机共享该主机组变量
主机组变量定义:
[主机组名:vars]
变量名1=值1
变量名2=值2

变量名n=值n

eg:

vim ./myhosts
[group1]
192.168.1.100 file=/etc/reslov.conf ansible_ssh_user=root ansible_ssh_pass=123456
192.168.1.110 file=/root/hostname ansible_ssh_user=root ansible_ssh_pass=123456
[group1:vars]
dir=/root/files
#使用fetch模块,针对主机Host1获得其/etc/reslov.conf文件,针对主机Host2获得其/etc/hostname文件,并将收集的文件放置在控制节点的/root/files目录下
ansible group1 -m fetch  -a "src={{file}} dest={{dir}}" -i myhosts
#引用主机变量
posted @ 2022-11-19 00:07  Tjane'Blogs  阅读(214)  评论(0编辑  收藏  举报