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)在同一主机上操做屡次,结果也是相同的。python