一、Ansible概述
1、Ansible是什么
Ansible是一款轻量级的管理软件,使用SSH和节点进行通信,不需要在节点中安装任何客户端,对多台主机进行同时操作,借助自身各模块实现批量系统配置、程序部署、运行命令等功能。
2、Ansible特点
- Ansible基于Python语言开发,只在一台服务器上运行即可,由于Ansible基于SSH远程管理,因此不需要为配置工作添加额外的支持。
- Ansible安装使用非常简便,基于上千个插件和模块实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。通过优化SSH连接速度及使用Ansible加速模块,满足企业上万台服务器的维护和管理。
3、Ansible工作原理
Ansible分为控制端和被控端,基于SSH协议管理客户端,被控端不需要安装Agent插件,Ansible读取控制端hosts文件,根据文件中定义IP列表信息,调取本地各模块对被控端机器实现批量、并发的配置管理和维护,若任务比较复杂,则写成PlayBook剧本进行分发管理。
二、Ansible安装
修改主机名、关闭系统防火墙及安全防护机制
#192.168.88.10
[root@localhost ~]# hostnamectl set-hostname ansible
[root@localhost ~]# su -
上一次登录:四 9月 30 16:03:59 CST 2021从 192.168.88.1pts/2 上
[root@ansible ~]# systemctl stop firewalld.service
[root@ansible ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@ansible ~]# setenforce 0
#192.168.88.20主机名改为web,其他操作与192.168.88.10相同
#192.168.88.30主机名改为mysql,其他操作与192.168.88.10相同
安装epel扩展源及ansible自动化运维工具
[root@ansible ~]# yum -y install epel-release
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: ftp.iij.ad.jp
软件包 epel-release-7-14.noarch 已安装并且是最新版本
无须任何处理
[root@ansible ~]# yum -y install python-jinja2
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: ftp.iij.ad.jp
无须任何处理
[root@ansible ~]# yum -y install ansible
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: ftp.iij.ad.jp
软件包 ansible-2.9.25-1.el7.noarch 已安装并且是最新版本
无须任何处理
安装树型结构查询工具
[root@ansible ~]# yum -y install tree
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: ftp.iij.ad.jp
软件包 tree-1.6.0-10.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@ansible ~]# tree /etc/ansible/ #查看ansible目录结构
/etc/ansible/
├── ansible.cfg #主配置文件
├── hosts #主机清单
└── roles #存放角色目录
1 directory, 2 files
编辑主机清单配置文件
vim /etc/ansible/hosts
#配置主机清单
#主机名定义组名,及对应的主机IP
[web]
192.168.88.20
[mysql]
192.168.88.30
生成密钥对
#使用非对称秘钥加密生成密钥对
ssh-keygen -t rsa
#上传公钥到被控端
ssh-copy-id root@192.168.88.20
ssh-copy-id root@192.168.88.30
使用ssh-agent代理,避免每次查询都需要输入密钥
[root@ansible ~]# ssh-agent bash
[root@ansible ~]# ssh-add
Enter passphrase for /root/.ssh/id_rsa:
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
#查询web和mysql组中日期
[root@ansible ~]# ansible web -m command -a 'date'
192.168.88.20 | CHANGED | rc=0 >>
2021年 09月 30日 星期四 17:29:39 CST
[root@ansible ~]# ansible mysql -m command -a 'date'
192.168.88.30 | CHANGED | rc=0 >>
2021年 09月 30日 星期四 17:29:45 CST