运维的未来是让研发人员能够借助工具、自动化和流程,在运维人员干预极少的情况下部署和运营服务,从而实现自助服务。每个角色都应该女里使功过实现自动化。——运维的未来
1.自动化运维工具
自动化运维工具能够帮助运维人员肉眼可见的提高工作效率,并减少人为错误。
常见自动化运维工具:
- Ansible:python,中小型应用环境
- Saltstack:python,需要部署agent,执行效率高
- Puppet:ruby,功能强大,配置复杂,重型,适合大型环境
2.Ansible
Ansible是最近几年特别火的一款开源自动化运维工具,操作简单、容易上手,能够用来挂里各种资源。
Ansible基于SSH远程会话协议,不需要客户端程序,只要是到managed node的IP地址、账号和密码,就能直接用SSH协议你进行远程控制。
Ansible服务本身并没有批量部署的功能,它仅仅是一个框架,真正具有批量部署能力的是其所运行的模块。Ansible内置了上千个模块,在安装Ansible时一并安装,通过调用指定的模块实现特定的功能。
3.Ansible特点
3.1 优点
- 功能模块丰富。
- 使用和部署简单,无需安装专用代理软件,基于python和SSH实现。
- 安全,基于OpenSSH实现安全通讯无需专用协议。
- 幂等性:一个任务执行1遍和执行n遍效果一样,不会因为重复执行带来意外情况。
- 2012年被红帽购买,背景强大。
3.2 缺点
- 管理主机较多时,执行效率不如saltstack高
- 不支持事务回滚。
4.术语
- Control node:控制节点,安装了Ansible的主机。
- managed node:受控节点,被远程管理的主机。
- inventory:主机清单,受控节点列表。
- module:模块,用于实现特定功能的代码。
- task:任务,要在受控节点上执行的操作。
- playbook:剧本,通过YAML语言编写的可重复执行的任务列表。
- role:角色,用于结构化地组织剧本。