Ansible管理主机的清单------------inventory

发布于:2024-03-19 ⋅ 阅读:(66) ⋅ 点赞:(0)

目录

一、 Ansible组成

二、inventory 主机清单

(1)主机变量使用

(2)inventory 中的变量含义

(3)组变量使用

(4)组嵌套使用 

三、ansible命令


一、 Ansible组成

  • INVENTORY:Ansible管理主机的清单 /etc/ansible/hosts 需要管理的服务清单,(将你需要管理的主机 、地址 或者名字 写入此文件)

  • MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义

  • PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用

  • API:供第三方程序调用的应用程序编程接口

二、inventory 主机清单

ansible的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory 主机清单文件中将其分组组织

默认的inventory file 位置在:  /etc/ansible/hosts

inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。

如果是名称类似的主机,可以使用列表的方式标识各个主机,

(1)主机变量使用

写法1:
[webservers]
192.168.30.11 ansible_port=22 ansible_user=root ansible_password=abc123
192.168.30.12 ansible_port=22 ansible_user=root ansible_password=abc123
#webservers组中被控制端192.168.30.11的端口号为22登录时用户是root密码为abc123
写法2:
[webservers]
192.168.30.1[1:2] ansible_port=22 ansible_user=root ansible_password=abc123
#如果是名称类似的主机,可以使用列表的方式标识各个主机
写法3
[webservers]
192.168.30.11:22
192.168.30.12:22
#默认ssh管理时的端口为22,若不是22则直接在被管理ip后加冒号和对应端口号

[webservers]
192.168.20.11:2222        #冒号后定义远程连接端口,默认是 ssh 的 22 端口
192.168.20.1[2:5]

[dbservers]
db-[a:f].example.org    #支持匹配 a~f

(2)inventory 中的变量含义


Inventory变量名                  含义
ansible_host                    ansible连接节点时的IP地址
ansible_port                    连接对方的端口号,ssh连接时默认为22
ansible_user                   连接对方主机时使用的用户名。不指定时,将使用执行ansible或ansible-playbook命令的用户
ansible_password              连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效
ansible_ssh_private_key_file     指定密钥认证ssh连接时的私钥文件
ansible_ssh_common_args       提供给ssh、sftp、scp命令的额外参数
ansible_become                        允许进行权限提升
ansible_become_method          指定提升权限的方式,例如可使用sudo/su/runas等方式
ansible_become_user               提升为哪个用户的权限,默认提升为root
ansible_become_password       提升为指定用户权限时的密码

(3)组变量使用

[webservers:vars]     
ansible_user=root
ansible_password=abc123
#表示webservers 组内所有主机定义变量控制时使用root账户密码为abc123
[all:vars]       
ansible_port=22
#表示为所有组的所有主机定义变量使用ssh远程管理时都是22端口

(4)组嵌套使用 

#nginx组
[nginx]
192.168.30.11
192.168.30.12
#httpd组
[httpd]
192.168.30.13
192.168.30.14
#组内嵌为web
[web:children]
nginx
httpd
#表示web组的成员即children的直译‘孩子’包括nginx和httpd组

三、ansible命令

本文含有隐藏内容,请 开通VIP 后查看