1,ansible的介绍
ssh密钥认证+脚本批量管理,特点是:简单,实用。但是看起来比较low,需要人工写脚本,类似实时复制的inotify工具。
MySQL高可用,MHA集群,要求所有机器互相秘钥认证。大数据集群也需要。
2,批量管理工具历史
SSH+脚本:08年以前
CFEngine:07-08年
Puppet:10-13年
saltstack:14-17年(python开发)
ansible:16年开始(python开发)
3,为什么用ansible(作用)?
ansible:简单、方便、容易学习、功能和其他工具相比同样强大。ansible有配置文件,可以多线程直接实现。不需要写脚本,类似实时复制的sersync。
4,什么是ansible(定义)?
ansible是一个用来批量部署远程主机上服务的工具。这里“远程主机(Remote Host)”是指任何可以通过SSH登录的主机,所以它既可以是远程虚拟机或物理机,也可以是本地主机。简要总结就是:ansible是一个用来远程管理服务器的工具软件。
ansible通过SSH协议实现管理节点与远程节点之间的通信。理论上来说,只要能通过SSH登录到远程主机来完成的操作,都可以通过ansible实现批量自动化操作。
涉及管理操作:复制文件、安装服务、服务启动停止管理、配置管理等。
5,为什么要用批量管理工具运维?
提高效率,比如百度和阿里云服务器很多几万台或者几十万台。使用ansible简单好管理。
6,ansible的特点
ansible基于python语言实现,由Paramiko和PyYAML两个关键模块构建。
1)安装部署过程特别简单,学习曲线很平坦。
2)不需要单独安装客户端,知识利用现有的SSHD服务(协议)即可。
3)不需要服务端(no servers)。
4)ansible playbook,采用yaml配置,提前编排自动化任务。
5)ansible功能模块较多,对于自动化的场景支持丰富。
7,ansible架构介绍( ansible是模块化的 它所有的操作都依赖于模块)
1)连接插件connectior plugins用于连接主机 用来连接被管理端
2)核心模块 core modules 连接主机实现操作, 它依赖于具体的模块来做具体的事情
3)自定义模块 custom modules,根据自己的需求编写具体的模块
4)插件 plugins,完成模块功能的补充
5)剧本 playbooks,ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
6)主机清单 inventor,定义ansible需要操作主机的范围
8,ansible实践
三台虚拟机,使用m01-61管理nfs01-31和backup-41。image.png
9,安装ansible
m01管理机:如果安装不了需要先安装epel源:yum install epel-release -y,然后再安装ansible。image.png
10,主机列表配置
image.png
image.png
11,执行命令
image.png
1)上面报错主机验证失败
2)这个命令是基于SSH秘钥认证的前提下,可以直接执行
image.png
image.png
image.png
image.png
3)删除出公钥重启前可以,重启后不行
12,修改hosts增加用户和密码,不需要免秘钥认证
image.png
image.png
image.png