1.1Ansible简介
ansible最新出现的自动化运维工具,是一个基于配置管理和应用的部署工具,基于python开发,集合了众多运维工具puppet,chef,saltstack等的优点,ansible是给予模块工作,本身没有批量部署能力。
1.2Ansible在生产环境中应用:
1自动化部署应用
2自动化管理配置
3自动化持续交付
4自动化(aws)云服务器管理
1.3Ansible的优点
为什么现在越来越多的运维工作人员使用ansible来部署运维自动化主要因为他有一下几个优点
1.ansible揉合了众多老牌运维工具的优点,基本上puppet和saltstack能实现的功能全都能实现
2.轻量级:不用在被管理端安装agent(代理程序)更新时,只需在操作管理机进行一次,而不用频繁的在被管理端一个个更新
3.ansible是一个工具,ansible本身不是服务而是一个工具,ansible不需启动服务,仅仅是个工具,可轻松实现分布式扩展
4.批量任务执行可以写成脚本,而且不用分发到远程就可以执行
5.ansible是一致性,高可靠性,安全性设计的轻量级自动化工具
6.ansible使用python语言编写,维护更加简单
1.4Ansible的特性
1.no agents:不需要在被管理主机上安装任何客户端或者代理程序
2.no server:无服务端,使用时直接运行命令即可
3.modules in any languages:基于模块工作,可使用任意语言开发模块
4.yaml:使用yaml语言定制剧本playbook
5.ssh by default:基于ssh工作
6.strong muti-tier solution:可实现多级指挥
2Ansible架构以及执行流程
2.1Ansible的基本架构
1.Host inventory(主机清单):定义ansible需操作主机的范围
2.Playbook (剧本)ansible的配置文件,将多个任务定义在剧本中,由ansible自动执行,类似于我们拍电影时的剧本,写入一些电影内容,但还是需要请演员来演
3.Core Modules(核心模块)连接主机实现操作下载ansible时这个模块自带
4.Custom Modules(自定义模块)当核心模块满足不了用户或者企业需求时,可以根据自身需求自定义编写模块然后由playbook调用,可支持大部分语言编写 如Java/C++/Python等
5.Plugins(插件)完成模块功能的补充
6.Connection Plugins (连接插件)用于连接主机/连接被管理端
最重要的一点是:ansible是模块化的,它所有的操作都依赖于模块
2.2Ansible的工作流程
1.在Host inventory(主机清单中)指定我们需要执行的主机范围 文件位置位于/etc/ansible/hosts
2.在Playbook(剧本)文件中确定要对目标主机做的事情,如创建文件复制文件安装服务等
3.调用模块(Core Modules)中的模块,如要创建或删除文件调用file模块,复制调用copy模块,安装服务应用调用yum模块等。
4.将前三步加载到Ansible模块里
5.Ansible将收到的前三步编译成自己的语言打包发送给连接插件(Connection Plugins)
6.连接插件(Connection Plugins)发送给连接的主机/被管理端
7.主机(Host)主机执行playbook中调用模块产生的动作,如批量安装apache web服务yum install httpd -y
注:这里没有使用Custom Modules模块,因为此模块是自定义模块,一般情况下的Core Modules模块可以满足大部分用户的需求,如果不能够满足则可以自行进行编写,再由playbook剧本文件去调用已经编写好的自定义模块