修剪线程:从Puppet Enterprise迁移到Ansible Tower。第1部分

国家环境卫星信息服务(NESDIS)通过从Puppet Enterprise迁移到Ansible Tower,将其Red Hat Enterprise Linux(RHEL)配置管理成本降低了35%。在有关“我们如何做到”类别的视频中,系统工程师Michael Rau证实了这种迁移的实现,分享了从一种SCM过渡到另一种SCM所获得的有用的技巧和经验。

通过此视频,您将学到:

  • 如何证明管理从人偶企业迁移到Ansible Tower的可行性;
  • 最平滑过渡使用什么策略;
  • 在Ansible Playbook中对PE清单进行转码的技巧;
  • 安装Ansible Tower的最佳做法。



大家好,我叫Michael Rau,我是ActioNet的高级系统工程师,该公司为NESDIS的国家海洋与大气管理局(NOAA)工作。今天,我们将讨论裁线-我自己从Puppet Enterprise迁移到Ansible Tower的经验。这次演讲的主题是“看一下我的疤痕”,这是我在年初进行这种过渡后留下的。我想说一下我在此过程中学到的知识。因此,根据我的经验,当您执行此操作时,可以轻松完成过渡。

在Ansible Fest的每场演讲开始时,您都会看到类似的幻灯片。这张幻灯片显示了我公司自动化的历史。我对这个行业并不陌生,因为自2007年以来我一直在使用Puppet / Puppet Enterprise。我于2016年开始使用Ansible,与该产品的许多其他用户一样,我对使用命令行和简单脚本(剧本)的“欺骗”的可能性也很感兴趣。 2017年底,我转向领导层,了解搬到Ansible Tower的充分理由。一分钟后,我将讨论促使我采取此步骤的原因。在获得管理层的同意后,又花了几个月的时间来完成该计划,我于今年1月至2月进行了过渡。因此,我们完全放弃了Puppet,转而支持Ansible,这是一件了不起的事情。



Ansible最吸引我的是编写和使用角色和脚本(剧本)的能力。角色非常适合创建不同但相互关联的任务(任务)并将与这些任务相关的所有数据放在一个地方。 Playbook是YAML语法,这是一个脚本文件,描述了一个或多个主机的操作。我向用户(主要是软件开发人员)谈论这些功能。 Ansible Tower使您可以说:“不,您无权访问Shell,但我有机会启动所有Tower进程并在需要时重新启动服务。”我将告诉您有关工作环境和我们使用的设备的信息。



这是一个联邦局域网,通过基于云的MPLS连接了7个物理站点,140个RHEL服务器,其中99%是虚拟(vSphere),SuperMicro硬件,NexentaStore NAS,每个站点上的一组Cisco,Arista和Cumulus交换机以及Fortinet UTM统一威胁管理工具。

联邦网络意味着我必须使用立法法规定的所有信息保护手段。您应该记住,Puppet Enterprise不支持我们使用的大多数设备。我们被迫使用预算硬件,因为政府机构在为此项支出提供资金时遇到了问题。因此,我们购买了超微类的硬件,并从各个部件组装了我们的设备,其维护由政府合同保证。我们使用Linux,这是切换到Ansible的重要原因之一。

我们在Puppet的历史就是这样。



在2007年,我们有一个20-25个节点的小型网络,我们在其中部署了Puppet。基本上,这些节点只是RedHat的“盒子”。在2010年,我们开始将Puppet Dashboard Web界面用于45个节点。随着网络的不断扩展,2014年我们切换到PE 3.3,通过重写75个节点的清单进行了完全过渡。之所以必须这样做,是因为Puppet喜欢更改游戏规则,在这种情况下,他们完全更改了语言。一年后,当停止对Puppet Enterprise版本3的支持时,我们被迫迁移到PE 2015.2。我再次不得不重写新服务器的清单,并购买具有100个节点备用的许可证,尽管当时我们只有85个节点。

仅2年过去了,我们又不得不做很多工作才能切换到PE 2016.4的新版本。我们购买了300个节点的许可证,总共130个节点。我们再次必须对清单进行重大更改,因为新版本的语言语法与2015年版本的语言不同。结果,我们的SCM从SVN版本控制系统切换到Bitbucket(Git)。那就是我们与木偶的“关系”。

因此,我不得不向管理层解释为什么我们需要使用以下参数切换到另一个SCM。首先是服务的高昂价格。我与RedHat的人交谈,他们说使用Ansible Tower维护300个节点的网络的成本是Puppet Enterprise成本的一半。如果您购买另一台Ansible Engine,成本将大致相同,但您将获得比PE多得多的功能。由于我们是一家由联邦预算资助的国有公司,因此这是一个非常重要的论点。



第二个论点是多功能性。 Puppet仅支持带有Puppet代理的硬件。这意味着您需要在所有交换机上安装代理,并且它必须是最新版本。如果您的交换机的一部分支持一个版本,而另一部分则支持另一版本,则您将需要在它们上安装新版本的PE代理,以便它们都可以在同一SCM系统上工作。

Ansible Tower系统的工作原理有所不同,因为它没有任何代理,但是有些模块支持Cisco交换机和所有其他交换机。该SCM支持Qubes OS,Linux和4.NET UTM。 Ansible Tower还支持基于Illumos内核(基于Unix的开源操作系统)的NexentaStore NAS。这几乎没有支持,但是Ansible Tower还是这样做。

对我和我们的行政管理都非常重要的第三个论点是易于发展。我掌握了Puppet清单模块和代码已有10年了,但是我学习了Ansible一周,因为使用此SCM更加容易。如果您运行可执行文件,当然,如果您不必要地执行它,那么合理且响应迅速的处理程序将与它们一起工作。基于YAML的剧本脚本易学易用。那些以前从未听说过YAML的人可以简单地阅读脚本并轻松了解其工作原理。

老实说,Puppet使您作为开发人员的工作变得复杂,因为它是基于Puppet Master的使用。这是唯一有权与Puppet代理通信的计算机。如果对清单进行了任何更改并想要测试代码,则必须重写Puppet Master的代码,即,配置Puppet主文件/ etc / hosts以连接所有客户端并启动Puppet Server服务。只有这样,您才能在一台主机上测试网络设备的运行。这是一个相当痛苦的过程。
在Ansible中,一切都变得更加简单。所有需要做的就是为可以通过SSH与被测主机通信的机器开发代码。这更容易使用。

Ansible Tower的下一个优点是能够利用您现有的支持系统并保存现有的硬件配置。该SCM无需任何其他操作即可使用有关您的基础结构和设备,虚拟机,服务器等的所有可用信息。它可以与RH Satellite服务器通信(如果有的话),并为您提供使用Puppet时永远无法获得的集成。

另一个重要的事情是详细控制。您知道Puppet是一个模块化系统,它是一个客户端-服务器应用程序,因此您必须在一个很长的清单中确定所有机器运行的现有方面。在这种情况下,必须每半小时测试一次系统各个元素的状态-这是默认时间。这就是Puppet的工作方式。

塔可以帮助您免于此。您可以不受限制地在各种设备上执行各种过程,可以执行主要工作,启动其他重要过程,配置安全系统以及使用数据库。您可以执行Puppet Enterprise中某些困难所带来的一切。因此,如果您在一台主机上进行了配置,则更改将需要一段时间才能在另一台主机上生效。在Ansible中,所有更改同时生效。

最后,考虑安全模块。在Ansible Tower中,它以惊人的方式实现,具有很高的准确性和彻底性。您可以为用户提供对特定服务或特定主机的访问权限。我与习惯于在Windows上工作的员工一起执行此操作,从而限制了他们对Linux Shell的访问。我为他们提供了进入Tower的通道,以便他们只能执行工作并仅运行其权限范围内的那些服务。



让我们看一下为过渡到Ansible Tower之前需要做的事情。首先,有必要准备您的设备。如果基础结构中的任何元素尚未在数据库中,则需要在其中添加它们。有些系统不会更改其特性,因此在Puppet数据库中不存在,但是如果您在移至Tower之前未在其中添加它们,则将失去许多优势。这可能是一个“脏”的初步数据库,但其中应包含有关您拥有的所有设备的信息。因此,您应该编写一个动态硬件脚本,该脚本将自动对数据库进行所有基础结构更改,然后Ansible将知道新系统中应包含哪些主机。您无需通知此SCM,您添加的主机和哪些主机已不存在,因为她将自动知道所有这些信息。数据库中的数据越多,Ansible越有用和灵活。它就像从数据库中读取设备状态的条形码一样工作。

花一些时间来了解Ansible中的命令行。运行一些特殊的命令来测试硬件脚本,编写并运行一些简单但有用的剧本脚本,并在适当的地方使用Jinja2模板。尝试使用常见的标准硬件配置为复杂的多阶段过程编写角色和脚本。玩这些东西,测试它如何工作。这样,您将学习如何使用工具来创建Tower中使用的库。我已经说过,我花了大约3个月的时间为过渡做准备。我认为,根据我的经验,您将能够更快地做到这一点。不要考虑这段时间的浪费,因为以后您会感觉到所做工作的所有好处。

接下来,您需要确定您对Ansible Tower的期望,以及该系统应该为您做什么。



您是否需要在空的硬件,空的虚拟机上部署系统?还是要保留原始工作条件和现有设备的设置?这对于国有公司的工作而言是非常重要的一个方面,因此必须确保能够在现有配置上迁移和部署Ansible。确定要自动化的例行管理过程。找出是否需要在新系统上部署特定的应用程序和服务。列出您要执行的操作并确定优先级。

然后开始为脚本和角色编写代码,以帮助您完成计划的任务。将它们结合在Projects中,这是相关剧本脚本的逻辑集合。每个项目将与一个单独的Git存储库或另一个存储库相关,具体取决于您使用的代码管理器。您可以通过以下方式管理剧本脚本和剧本目录:将它们手动放置在Tower服务器上的Project Base Path中,或将剧本放置在任何Tower Source Code Management System(SCM)中,包括Git,Subversion,Mercurial和Red Hat Insights。在一个项目中,您可以放置​​任意数量的脚本。例如,我创建了一个基本项目,其中放置了RedHat主要元素的脚本,Linux基础的脚本,其余基准的方案。因此,在一个项目中,可以从一个Git存储库管理各种各样的角色和脚本。

通过命令行运行所有这些内容,这是测试其性能的好方法。这样,您就可以为塔式安装做好准备。

让我们谈谈对Puppet清单进行代码转换的原因,因为我花了很多时间在它上面,然后才弄清楚真正需要做些什么。



如前所述,Puppet将所有设置和设备参数存储在一个长清单中,该清单包含此SCM应该执行的所有操作。在过渡期间,您无需将所有任务都放在一个列表中,而只需考虑新系统的结构:角色,脚本,标签,组以及应该放置的内容。某些独立的网络元素应分组为可以创建脚本的组。可以将涉及大量资源(包括自治类)的更复杂的基础结构元素组合为角色。在迁移之前,您需要对此进行决定。如果创建的角色或脚本不适合一个屏幕,则应使用标签来捕获基础结构的各个部分。

18:00

整理线程:从Puppet Enterprise迁移到Ansible Tower。第2部分

一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的VPS,最低价格为4.99美元这是我们为您发明的入门级服务器 独特类似物:关于VPS(KVM)E5-2697 v3(6核)的全部真相10GB DDR4 480GB SSD 1Gbps从$ 19还是如何划分服务器?(RAID1和RAID10提供选件,最多24个内核和最大40GB DDR4)。

阿姆斯特丹的Equinix Tier IV数据中心的戴尔R730xd便宜2倍吗?在荷兰2台Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100电视戴尔R420-2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB-$ 99起!阅读有关如何构建基础设施大厦的信息。使用Dell R730xd E5-2650 v4服务器花费一欧元9000欧元的c类?

All Articles