(8)hostname 模块
//用于管理远程主机上的主机名 ansible dbservers -m hostname -a "name=mysql01"
(9)ping 模块
//检测远程主机的连通性 ansible all -m ping
(10)yum 模块
//在远程主机上安装与卸载软件包 ansible-doc -s yum ansible webservers -m yum -a 'name=httpd' #安装服务 ansible webservers -m yum -a 'name=httpd state=absent' #卸载服务
(11)service/systemd 模块
//用于管理远程主机上的管理服务的运行状态 ansible-doc -s service
常用的参数:
参数 | 说明 |
name | 被管理的服务名称 |
state=started / stopped / restarted | 动作包含启动关闭或者重启 |
enabled=yes / no | 表示是否设置该服务开机自启 |
runlevel | 如果设定了enabled开机自启去,则要定义在哪些运行目标下自启动 |
ansible webservers -a 'systemctl status httpd' #查看web服务器httpd运行状态 ansible webservers -m service -a 'enabled=true name=httpd state=started' #启动httpd服务
(12)script 模块
//实现远程批量运行本地的 shell 脚本 ansible-doc -s script
vim test.sh #!/bin/bash echo "hello ansible from script" > /opt/script.txt chmod +x test.sh ansible webservers -m script -a 'test.sh' ansible webservers -a 'cat /opt/script.txt'
(13)setup 模块
//facts 组件是用来收集被管理节点信息的,使用 setup 模块可以获取这些信息 ansible-doc -s setup ansible dbservers -m setup #获取mysql组主机的facts信息 ansible dbservers -m setup -a 'filter=*ipv4' #使用filter可以筛选指定的facts信息
四、inventory 主机清单
Inventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义在任何一个或多个主机组内。
如果是名称类似的主机,可以使用列表的方式标识各个主机。
vim /etc/ansible/hosts [webservers] 192.168.147.106:2222 #冒号后定义远程连接端口,默认是 ssh 的 22 端口 192.168.147.10[2:5] [dbservers] db-[a:f].example.org #支持匹配 a~f
inventory 中的变量
(1)主机变量
[webservers] 192.168.147.105 ansible_port=22 ansible_user=root ansible_password=abc1234
(2)组变量
[webservers:vars] #表示为 webservers 组内所有主机定义变量 ansible_user=root ansible_password=abc1234 [all:vars] #表示为所有组内的所有主机定义变量 ansible_port=22
(3)组嵌套
[nginx] 192.168.147.104 192.168.147.105 192.168.147.106 [apache] 192.168.147.10[0:3] [webs:children] #表示为 webs 主机组中包含了 nginx 组和 apache 组内的所有主机 nginx apache