官网地址:https://docs.ansible.com/
一、ansible简介(了解)
1、为什么使用ansible
01.安装部署过程特别简单,学习曲线很平坦;
02.管理主机便捷,支持多台主机并行管理;
03.避免被管理主机上安装客户代理,打开额外端口,采用无代理方式,只是利用现有的SSH后台进程;
04.用于描述基础架构的语言无论对机器还是对人都是友好的;
05.关注安全,很容易对执行的内容进行审计、评估和重写;
06.能够立即管理远程被管理主机,不需要预先安装任何软件;
07.非root账户也可以使用;
08.最简单、易用的IT自动化系统。
补充:自动化运维的几大关键领域
①配置管理
配置管理的目标就是确保被管理的主机尽可能快速、按照正确方式达到配置文件中描述的状态,这对管理IT环境至关重要。
②服务即时开通
③应用部署
这个领域重点关注如何尽可能地零停机部署应用。
④流程编排
流程编排主要是进行部署的时候如何保证基础架构中的各种组件协调一致。例,在你对web服务器部署新的软件的版本的时候,需要确保web服务器从负载均衡器上移除,这是很常见的场景。
⑤监控告警
监控告警工具已经发展到能够快速处理大规模服务器的环境。
⑥日志记录
集中日志数据确保能够正确地收集跨系统和应用的日志,同时能够按照规则进行智能过滤、根本原因分析、告警等。
2、ansible批量管理服务意义
01. 提高工作的效率
02. 提高工作准确度
03. 减少维护的成本
04. 减少重复性工作
3、ansible能做什么
01. 可以实现批量系统操作配置
02. 可以实现批量软件服务部署
03. 可以实现批量文件数据分发
04. 可以实现批量系统信息收集
二、ansible工作原理(理解)
1、ansible架构
ansible维护模式:包括控制机和被管机。控制机使用SSH协议对被管机进行管理,控制机通过剧本playbook来进行配置管理;被管机通过资源清单inventory来进行分组管理。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种架构。
●核心引擎:即Ansible。
●核心模块(core Modules):Ansible自带的模块。
●自定义模块(custom modules):如果核心模块不足以完成某种功能,可以添加自定义模块。
●插件(plugins):完成模块功能的补充,借助于插件完成日志记录、邮件等功能。
●剧本(playbook):定义Ansible任务的配置文件。如果ansible模块作为你的工作室工具,playbook是你的设计方案。在基本层面上,剧本可用于管理配置和部署远程机器;在更高级的应用中,可以序列多层应用及滚动更新,并可以把动作委托给其他主机,与监控服务器和负载均衡器交互。
●连接插件(connection plugins):ansible基于连接插件连接到各个主机上,负责与被管节点实现通信。控制主机与被管节点之间支持local、SSH、zeroMQ三种连接方式,默认使用基于SSH的连接,在规模较大的情况下使用zeroMQ连接方式会明显改善执行速度。
●主机清单(host inventory):定义ansible管理的主机策略。
2、ansible工作机制
1)ansible在管理节点将ansible模块通过SSH协议(或者kerberos、LDAP)推送到被管理端执行,执行之后自动删除,可以使用SVN等来管理自定义模块及编排。
2)任务执行模式
①ad-hoc模式:使用单个模块,支持批量执行单条命令。
②playbook模式:是ansible的主要管理方式,也是ansible功能强大的关键所在,通过多个task集合完成一类功能。可以简单地把playbook理解为通过组合多条ad-hoc操作的配置文件。
3)ansible执行流程
3、ansible组件调用关系
注:使用ansible或ansible-playbook时,在服务器终端输入ansible的ad-hoc命令集或playbook后,ansible会遵循预先编排的规则将playbook逐条拆解为play,再将play组织成ansible可识别的任务(task),随后调用任务涉及的所有模块(module)和插件(plugin),根据Inventory中定义的主机列表通过SSH(linux默认)将任务集以临时文件或命令的形式传输到远程客户端执行并返回结果,如果是临时文件则执行完毕后自动删除。
三、ansible安装与配置(操作)
1、环境准备
1)从GitHub获取ansible
https://github.com/ansible/ansible
2)准备控制主机
安装了Python2.6或以上版本
SSH
3)查看被管节点
类UNIX:安装Python2.6或以上版本 SSH
windowns:powershell3.0
注:①如果被管节点上启用了Selinux,需要安装libselinux-python,这样才可以使用ansible中的copy、file、template相关的函数。可以通过ansible的yum模块在需要的托管节点上安装libselinux-python。②关于python版本,建议安装python2。
2、安装ansible
1)直接用源码安装
①从GitHub源码库安装方式
git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
如果想要安装过程中减少告警/错误消息输出,可以在安装时加上-q参数:
source ./hacking/env-setup -q
②tar包安装方式
tar包下载地址:http://release.ansible.com/ansible
2)包管理工具安装(*****)
yum安装——需要依赖epel的yum源
yum install -y ansible
3、主要配置文件
/etc/ansible/ansible.cfg --- ansible服务配主配置文件
/etc/ansible/hosts --- 主机清单文件。定义可以管理的主机信息,需先分发公钥
/etc/ansible/roles --- 角色目录
/usr/share/ansible_plugins --插件目录
四、ansible命令说明(熟悉)
五、ansible组件介绍(掌握)
六、ansible生产实践
七、ansible常见问题分析与处理
1、远程主机无法管理问题分析
常见原因:
① 管理端没有分发好主机的公钥;
② 被管理端远程服务出现问题;
③被管理端维护ansible远程连接的进程出现僵死情况;
ssh服务进程说明:
/usr/sbin/sshd -D --- 负责建立新的远程连接
sshd: root@pts/0 --- 用于维护远程连接(windows--linux)
sshd: root@notty --- 用于维护远程连接,在被管理端主机上(ansible--被管理端)
④被管理端selinux服务没有关闭
此时需要关闭被管理端selinux服务;或在管理端安装libselinux-python,让selinux开启的状态也可以使用ansible程序。
2、