Ansible介绍与入门学习
一、Ansible的介绍(Ansible is a radically simple IT automation engine 极简的IT自动化工具)
1.Ansible是一款 运维的自动化工具,常用于软件部署自动化、配置自动化、管理自动化等,其内置大量的功能模块来满足日常的工作需要。
二、Ansible被选择原因
1.Ansible完全基于python开发,而python已经被逐渐普及,因此方便大众对其的二次开发
2.有丰富的内置模块
3.去中心化的特点可以使其使用简单的复制操作即可完成配置中心的迁移
4.Agentless(无客户端),客户端无需任何配置,管理端配置好后即可使用
三、Ansible的工作过程
1.使用者认证通过后在管理节点通过Ansible工具调用各应用模块将指令推送到管理端执行,并在执行完成之后自动删除产生的临时文件。
2.Ansible使用的不同角色:使用者、Ansible工具集、作用对象
使用者
CMDB(配置管理数据库):通过CMDB直接下发指令调用工作集完成任务
PUBLIC/PRIVATE:基于公有云/私有云的方式调用API语言接口
使用Ad-Hoc临时命令集来完成任务
预先编好Ansible playbooks,通过其中的任务集按序完成任务
Ansible工具集
ansible命令只是执行任务的入口,可以调用inventory(命令执行的目标对象配置文件)、API(应用编程接口)、Modules(丰富的内置模块)、Plugins(内置和可自定义的插件)
作用对象
各种操作系统的主机和各类公有云/私有云以及各种网络设备
Ansioble工作过程概述:Ansible会遵循预先编排的规则将playbooks逐条拆解为play,再将play组织成可识别的任务(Task),然后调用任务设计的所有模块和插件,最后根据inventory中定义的主机通过ssh将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,若使临时文件则执行完成后会自动删除。
四、Ansible通信发展史
1.发展背景:Ansible通信方式是基于SSH的安全连接且SSH是每台linux主机系统必有的软件,则Ansible无需在远程主机端安装任何额外的进程。
Ansible执行命令时通过底层的传输连接模块将一个或多个文件通过定义的play或者command命令传输到远程服务器的临时目录上然后对其进行执行,其主要的特点是:
无客户端,只需要安装ssh和python就可以
基于openssh通信,底层基于ssh传输协议
支持密码和ssh的安全认证,可以通过系统账户密码认证或公钥认证,一般使用公私钥认证方式,因为密码认证需要明文的配置文件
支持windows,但仅支持客户端,服务端必须是linux
2.发展历程
paramiko通信模块,python的第三方库,安全性低于openssh
openssh,支持持续管理
加速模式,抛弃SSH的多次连接的方式,通过SSH的初始化后,带着AES key的初始化连接信息通过特定的端口执行命令传输文件,另外开启加速模式必须先设置sudo文件的nopasswd的配置,即禁用sudo后的password的交互认证过程,此种方式的前提是要在控制机安装ZeroMQ服务并且该服务不支持sudo操作
Faster OpenSSH,通过openssh发送执行命令,将所有的操作附带在ssh的连接过程中同步实现
五、Ansible的应用场景
1.应用部署:Ansible内置网络、应用、系统等完善的功能模块,可以协助运维人员及快速的完成应用的安装卸载升级配置等部署类工作。
2.配置管理:对软件产品的开发过程和生命周期进行控制和规范的一系列措施。
3.任务流编排:保证Tasks任务流按照既定的规则和顺序完成实现指定的目标和计划
六、Ansible的安装部署
1.安装python-pip和python-devel程序包
yum install python-pip python-devel -y
2.安装Ansible服务
yum install gcc glibc-devel zlib-devel rpm-build openssl-devel -y(服务的开发环境,几乎所有的软件包的编译环境基于gcc)
yum install ansible -upgrade
上述的安装方式为二进制安装方式
七、Python的多环境扩展管理
1.多环境扩展管理的需求在于第三方库依赖的python的版本和系统的python的版本不一致的情况且因为底层需要调用当前的版本即不能随便的更换当前系统封的版本时需要python的多版本共存的情况。
2.python多环境管理工具有:pyenv和Vituralenv,前者对于python的版本进行管理实现不同版本的切换和使用,后者时创建虚拟环境实现与系统环境以及其他python环境的隔离避免相互干扰。
3.pyenv的部署和使用(不支持windows系统)
设置独立的某个文件同时创建python的虚拟环境工作在用户层,不需要任何sudo操作
pyenv install -list 查看可安装的版本列表
pyenv install 3.4.1 安装指定的python的版本
pyenv local 3.4.1 切换当前的目录的python版本为3.4.1
pyenv global 3.4.1 切换全局目录python版本为3.4.1
pyenv rehash 刷新shims
2.Virtualenv的部署和使用
pip install virtualenv
该种管理的方式是通过在工作目录中虚拟完整的python环境实现python多环境并存