“运维的未来是,让研发人员能够借助工具、自动化和流程,并且让他们能够在运维干预极少的情况下部署和运营服务,从而实现自助服务。每个角色都应该努力使工作实现自动化。”——《运维的未来》
公司的服务器越来越多, 维护一些简单的事情都会变得很繁琐。用shell脚本来管理少量服务器效率还行, 服务器多了之后, shell脚本无法实现高效率运维。这种情况下,我们需要引入自动化运维工具, 对多台服务器实现高效运维。
场景:
假设我要去1000台服务上做一个操作(如nginx服务器修改配置文件里的某一个参数), 下面两种方法缺点明显:
1.传统的方法, 手工去装:ssh到每台服务器上去手动操作。
缺点:
2.写个shell脚本来做。
缺点:
如果出了错误,需要自己手工去收集信息然后解决,脚本更新了以后又要重新下载一遍去执行,不方便而且效率低。
有没有一种工具,能把任务批量给主机去执行,然后还能收集执行过程中的具体信息?
1.ansible
基于python语言,Agentless,中小型应用环境。简单快捷,被管理端不需要启服务。直接走ssh协议,需要验证所以机器多的话速度会较慢。
2.puppet
基于ruby语言,功能强大,成熟稳定,配置复杂、重型,适合于大型架构。
3.saltstack
基于python语言,一般需部署agent,执行效率更高;相对简单,大并发能力比ansible要好, 需要维护被管理端的服务。如果服务断开,连接就会出问题。
4.Fabric:python,agentless。
5.Chef:ruby,国内应用少。
ansible集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
自动化运维: 将日常IT运维中大量的重复性工作,小到简单的日常检查、配置变更和软件安装,大到整个变更流程的组织调度,由过去的手工执行转为自动化操作,从而减少乃至消除运维中的延迟,实现“零延时”的IT运维。
作者:Michael DeHaan,也是Cobbler 与 Func 的开发者。
ansible 的名称来自科幻小说《安德的游戏》中跨越时空的即时通信工具,使用它可以在相距数光年的
距离,远程实时控制前线的舰队战斗。
2012-03-09,发布0.0.1版,2015-10-17,Red Hat 宣布1.5亿美元收购。
官网: https://www.ansible.com/
官方文档: https://docs.ansible.com/
Ansible 简单的说是一个配置管理系统(configuration management system)。你只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式。你可以将代码部署到任意数量的服务器上!
PLAYBOOKS: 任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件。
INVENTORY: Ansible管理主机的清单/etc/anaible/hosts 。
MODULES: Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块
PLUGINS: 模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用。
API: 供第三方程序调用的应用程序编程接口。
ANSIBLE: 组合INVENTORY、 API、 MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具。
现时最新的版本为 4,但若是红帽系列使用者,建议使用 2.9的版本。
实验过程
此操作在 RHEL 或 CentOS上执行。
yum安装ansible需要配置好 epel源 或 可用的 Ansible Engine仓库。
# yum install epel-release
可配置国内EPEL源
安装ansible
# yum -y install ansible
确保安装成功并查看版本
# ansible --version
ansible 2.9.23
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Aug 7 2019, 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
注意事项
官网地址:
https://docs.ansible.com/ansible/2.9/installation_guide/intro_installation.html#installing-ansible-on-rhel-centos-or-fedora
可查看不同版本的情况和python版本的最低要求,也可查看各平台上的安装方法
阅读量:2006
点赞量:0
收藏量:0