Ansible是一个广泛应用的自动化平台,在devops和自动化方面具有特别的优势。
如果有“改进的IT编排和配置管理工具最多”的奖项,红帽的Ansible将成为最具竞争力的竞争者。自2012年由Michael DeHaan首次发布以来,它已经从Linux系统上比Puppet更简单的自动化的工具,发展成为一个广泛应用的自动化平台,其在devops和自动化方面具有特别的优势。
Ansible的开发人员将Ansible描述为“极其简单的IT自动化平台,使应用程序和系统更易于部署。避免编写脚本或自定义代码来部署和更新应用程序--使用SSH以简单的英语进行自动化,无需在远程系统上安装代理程序。“
这是真的。Ansible使得服务器自动化远没有竞争对手那么复杂。
Ansibleplaybook
你不用为Ansible编写脚本,而是编写YAML playbook,尽管有人会说这是一个没有区别的区别。如果你有开发者的潜质,竞争产品Ruby现在用于某些子集的脚本的并不比YAML复杂得多;只有一点点的语法可以学习。Ansible的反驳是,组织中的每个人都应该能够阅读脚本并理解他们所做的事情。当然,Ansible最初的流行大部分来自于playbook的简单性,以及Fedora Linux发行版的采用。
无代理的自动化
你不必在Ansible客户端上安装代理,而是在类Unix系统(Linux和MacOS)上连接到现有的SSH守护进程,在Windows系统上连接到WinRM(Windows远程管理),或连接到云系统和网络设备上的API。原生OpenSSH已经在Windows上提供,你可以从Ansible使用它,但就Microsoft而言,它仍然是一个测试版功能。
在没有SSH守护进程的受限系统上,你可以连接到Paramiko,一个用于SSH2的Python库。 Ansible是用Python实现的。
在客户端使用代理的其他配置管理和编排系统报告,代理比他们自己的无代理选项更快,更有用。Ansible批评agent有一定的有效性,因为要求在使用代理程序之前在客户端上安装代理程序并在版本更改时更新它们以“管理代理程序”。Ansible宣称其无代理体系结构可以减轻中央服务器的负担,提高安全性,避免代理可能导致的客户端CPU和内存负载。
如果你真的想在“拉模式”下运行Ansible节点,你可以。不幸的是,需要在节点上安装Ansible并安排Cron作业(或同等作业)从Git存储库下载并运行playbook。
AnsibleTower
Ansible Tower(“Ansible的任务控制”)通过视觉仪表板,基于角色的访问控制,作业调度,集成通知和图形库存管理增强了Ansible。它还为可编程性以及与其他产品的集成提供了REST API和CLI。在Ansible所有者红帽模型之后,Ansible AWX是Ansible Tower的上游开源项目。
AnsibleTower向Ansible Engine添加了仪表板,RESTAPI,基于角色的访问控制,集中式日志记录和其他企业功能。 Ansible通过SSH或WinRM进行无代理自动化。
Ansible模块
Ansible自2015年被Red Hat收购以来,其功能大大增强。例如,Ansible现在配备了450多个模块,这些模块是用于执行特定任务的小部分代码,Ansible Galaxy公共存储库包含约1,600个模块。
在这1,600个模块中,约有360个用于联网,并涵盖约33个网络平台。自动化对Ansible来说是一件大事--该公司的客户在大多数情况下使用其他编排工具,但运行Ansible进行自动化。
另一个改进与可伸缩性有关。如果使用Ansible Tower,则可以对服务器进行群集以获得容量和冗余,并部署远程执行节点以获得更多的本地容量以及跨网络区域的访问。推送模式的“1,000节点限制”已成为过去。
Ansible和devops
Devops是Ansible的另一个重要组成部分。因为playbook即使对于非程序员也很容易理解,整个组织的角色(开发人员,操作,质量保证和管理)都可以读取和使用相同的脚本。
在基本的开源Ansible中,通过将系统列入文件来管理节点库存。在Ansible Tower中,还可以从AWS,Azure,GCP,OpenShift,OpenStack,VMware,RedHat Satellite或Red Hat CloudForms等提供库。Ansible Tower的配置回调允许节点根据需要请求配置,实现自动调节,Tower的凭据委托允许开发人员配置他们自己的开发和测试环境。
可以使用Tower CLI轻松地将AnsibleTower与Jenkins或其他CI / CD工具集成,或者使用Tower REST API将Tower与构建工具集成。 Ansible没有自己的专用CI / CD,但OpenStack包含Zuul CI / CD系统。
Ansible编排
Ansible Tower可以处理的其中一个用例是滚动更新。该脚本会将特定应用程序的服务器划分为多个组,然后将一个组一次拉出负载平衡,更新组中的节点,检查更新的状态,将组重新设置为负载平衡,以及继续下一个小组。在每个步骤中,脚本并行运行跨节点,但这些步骤按顺序运行。
如果Galaxy无法在1600中找到所需的模块,则可以使用新模块扩展Ansible。虽然Ansible附带的模块是用Python和PowerShell编写的,但只要它们输出JSON,模块可以使用任何语言。
Ansible和Docker
Ansible容器能够构建Docker容器映像并仅使用Ansible playbook编排它们--playbook将生成必要的Docker文件。 Ansible在OpenShift上与Kubernetes集成,并且playbook可以从模板生成Kubernetes规范。docker_service模块可以在单个Docker守护进程或Swarm上编排容器。
与大多数竞争对手不同,Ansible对无服务器体系结构提供了广泛的支持。有AWS CloudFormation,AWS Lambda函数以及与提供程序无关的无服务器框架的模块。甚至可以在AWS Lambda中运行playbook。
Ansible和Windows
Ansible中的Windows支持大多独立于Linux支持。用于Windows的Ansible模块通常用PowerShell而不是Python编写。虽然有十几个核心模块支持Windows,但也有超过一百个专用于Windows的模块,涵盖Windows功能,如IIS管理,事件日志和注册表编辑。 Ansible的客户拥有全Windows基础架构,只有少数运行Ansible Tower和Ansible的RHEL服务器。
Ansible安装和设置
只要你的Linux或BSD机器装有最新的Python,安装一个开源的Ansible控制器就非常简单。可以使用系统模块管理器,例如Yum或APT,Python包管理器Pip或从源代码安装。
Ansible Tower的安装略微有点困难。需要红帽企业Linux 7.2或更高版本64位,CentOS7.2或更高版本64位,Ubuntu 14.04 LTS 64位或Ubuntu 16.04 LTS 64位。 Yum或APT安装过程会安装所有依赖项,包括Ansible,PostgreSQL,Django和Nginx。 RHEL有一个先决条件来为Yum启用额外的存储库。还可以从在线库安装Tower,以及从AMI安装AWS。
成本:
Ansible社区版:免费。
Ansible Engine Standard,每年5000美元,最多100个节点;
Engine Premium,每年7000美元,最多100个节点。
Ansible AWX(tower的开源上游版本):免费。
Ansible Tower自助服务,5000美元/年,最多100个节点,10,000美元/年,最多250个节点。
Ansible Tower Standard,每年10000美元,最多100个节点,
Ansible Engine每年13,000美元。
Ansible Tower Premium,14,000美元/年,最多100节点,
Ansible Engine每年17,500美元。
Ansible Networking和更多节点请联系Ansible。
平台:
Ansible控制器机器运行于Linux,BSD,MacOS或Windows 10WSL Bash shell,
Python 2或3.节点运行在上述所有环节以及本地Windows上。
Ansible Tower需要RHEL 7,CentOS 7,Ubuntu 14.04 LTS或Ubuntu 16.04 LTS。
总结
Ansible是一个广泛应用的自动化平台,在devops和网络自动化方面具有特别的优势。
优点
对各种节点的无代理控制
简单的YAML剧本很容易理解
全面支持无服务器云架构
在AWS上作为AMI提供
缺点
Ansible Tower服务器需要RHEL,CentOS或UbuntuLTS操作系统
出自:https://mp.weixin.qq.com/s/g1tof3qUy1SoYymB4sTZeA