1.ansible前言
1.1运维工具分类(一)
1.1.1OS Provisioning(用来提供操作系统)
PXE:整合集中服务提供了系统的预执行环境,dhcp(udp 67,68),tftp(udp 69),http或者ftp服务
Cobbler:把单个使用的pxe环境做了进一步的抽象,除了可以提供dhcp和解析服务除了dhcp和bind的话,还有一种软件叫dnsmasq,这个软件既可以提供dhcp服务也可以提供域名解析服务。
RedHat Satellite:需购买红帽服务,一般金融类的公司使用的多。
1.1.2OS Config(用来统一配置)
Puppet:在执行任务方面能力相当薄弱
Saltstack
func
1.1.3Task Excute(任务执行)
fabric
Func,也具有这个功能,可以归类到两类工具汇总
Saltatck,这个也可以完成统一配置,也可以任务执行
Deployment(部署应用)
Fabric
Ansible,尚未实现的功能就是os provisioning,据说也在研发中,本身也是轻量级的。不像puppet,chef,func,指挥其它主机配置,称为管理主机,必须有专门的安全通道。基本都是基于ssl
1.2运维工具分类(二)
1.2.1 Agent
puppet,func,salatstac
1.2.2 Agentless
(1)依赖于每个被管理主机需要运行ssh服务
(2)需要账号和密码,尤其是root账号
ansible,fabric,依赖于ssh
2.ansible简介
(1)2012年问世
(2)源代码托管在github上,有很多追随者
(3)2012 top 10优秀开源项目
(4)使用python语言编写
3.ansible特性
(1)不需要专门部署agent,也不需要部署专门的服务器
(2)融合了众多功能,实现多层联动,可以说是将多种工具集于一身
①configuration:cfengine(网络配置),chef(大厨),puppet(木偶,傀儡)
②deployment:capistrano(人名,卡皮斯特拉诺),fabric(组织,构造)
③ad-hoc tasks:func(函数)
④multi-tier (多层)orchestration(管弦乐队):juju,(护符,小玩物)sort of
(3)轻量级
(4)前后没有次序,自己定义动作,依赖关系。只要任何一个任务出错,可以马上停止,来进行修改
(5)因为是基于ssh,所以不会用到ssl,也就不依赖于证书
(6)功能都是模块化的,实现任何功能都是调用模块。而且模块可以使用任何编程语言来编写,包括shell脚本
(7)yaml,使用标签来定义格式,也可以根据角色来进行构建
4.ansible组件
4.1 Host Inventery
(1)文本文件
(2)包含主机的ip地址,掩码,ssh服务监听的地址,端口号,账号密码等,有了这些让远程管理成为可能。
4.2 Core Modules
(1)完成大部分的日常管理任务,但并不是所有任务
(2)例如希望主机1来新建一个账户,ansible并不能指挥host1来做这件事,而是要调用这个模块。
4.3 Custom Modules
自定义模块,可以使用任何编程语言来编写。
4.4 Connection Plugins
(1)与其它主机进行通信,调用的是python里边的Paramiko模块
(2)默认使用ssh协议,基于ssh协议的客户端。
4.5 plugs
(1)Login:进入到日志中
(2)Email:通知相关管理员
(3)Other:自行开发
4.6 Playbooks
(1)使用的是PyYAML和 jinja2这两个模块。将多个任务写入yaml文件中,可以多次调用
(2)在同一主机上操作多次,结果也是相同的。