本人由于接手了某公有云devops项目的ops一端的求助,关于自动化部署的。最终经过N久的选项,筛选。最终进入我眼帘的就是Ansible。什么是Ansible?
曾比较火的部署工具
pupet, cloudify, saltstack.....
他们的特色,出来了很久了,需要在目标机装agent。但是对于运维人员来讲,特别是某openstack的某些项目,几百台,几千台的机器。单单是部署agent,那是要了他们的命。
然后这个Ansible就横空出世了:
他的前辈能做的,它也能做。他的前辈需要agent,它不需要。就这一点,就被本次选型选中了。
运维人员怎么会喜欢需要安装agent的部署工具?绝不。
Ansible的运作方式
Ansible的运作方式,很多网页都说的很明白了,这里就引用一个:
" ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。"
学习ansible需要的技能背景
- 知道linux,比如ubuntu,centos等,能熟练使用它们,因为ansible对linux的支持是天生的。windows?对于高端维护人员来说,windows能干啥??
- shell,必须过关的技能,至少你能自己写个复杂的部署某某项目的脚本。
- python, 会用,会写,最重要的会读。没准你需要写ansible的自定义module也说不定
- yaml, 这个你要明白它的语法,干啥用的
- jinja2,这个也需要你明白它的语法。
我们开始吧!
下面我们就准备开始ansible的使用办法介绍了。