一、 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命令