

欢迎关注微信公众号:数据科学与艺术 作者WX:superhe199
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括: (1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; (3)、各种模块核心模块、command模块、自定义模块; (4)、借助于插件完成记录日志邮件等功能; (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
天天说运维,究竟是干什么的?先看看工作流程呗。一般来说,运维工程师在一家企业里属于个位数的岗位,甚至只有一个。面对生产中NNN台服务器,NN个人员,工作量也是非常大的。 所以嘛,图中的我好歹也会配置盔甲的。

这就是我主要干的事情(呵呵)

就算你会很厉害的脚本,面对成百上千,甚至上万的主机,效率问题将会困扰你的。 因此,有没有解放的工具呢?
Ansible 简单的说是一个配置管理系统(configuration management system)。你只需要可以使用 ssh 访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像 puppet 等 那样使用拉取安装agent的方式。你可以将代码部署到任意数量的服务器上!
ansible可以帮助我们完成一些批量任务,或者完成一些需要经常重复的工作。 比如:同时在100台服务器上安装nginx服务,并在安装后启动它们。 比如:将某个文件一次性拷贝到100台服务器上。 比如:每当有新服务器加入工作环境时,你都要为新服务器部署某个服务,也就是说你需要经常重复的完成相同的工作。 这些场景中我们都可以使用到ansible。
模块化:调用特定的模块,完成特定任务 有Paramiko,PyYAML,Jinja2(模板语言)三个关键模块 支持自定义模块 基于Python语言实现 部署简单,基于python和SSH(默认已安装),agentless 安全,基于OpenSSH 支持playbook编排任务 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况 无需代理不依赖PKI(无需ssl) 可使用任何编程语言写模块 YAML格式,编排任务,支持丰富的数据结构 较强大的多层解决方案


PLAYBOOKS: 任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件 INVENTORY: Ansible管理主机的清单/etc/anaible/hosts MODULES: Ansible执行命令的功能模块,多数为内置的核心模块,也可自定义,ansible-doc –l 可查看模块 PLUGINS: 模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用 API: 供第三方程序调用的应用程序编程接口 ANSIBLE: 组合INVENTORY、 API、 MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具
执行ansible的主机一般称为主控端,中控,master或堡垒机 主控端Python版本需要2.6或以上 被控端Python版本小于2.4需要安装python-simplejson 被控端如开启SELinux需要安装libselinux-python windows不能做为主控端