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

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

通过此视频,您将学到:

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



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



我有用于全部运行的初始部署的标签。我有一些标签,用于检查80%的工作时间中是否发生了20%的基础结构更改。与角色相似的情况。有一个维护代码,第二个代码组织部署,第三个代码每天启动一次设备。角色检查所有要部署的设备的更改,并且每两个小时检查一次可能更改的设备。这适用于防火墙,一些管理性内容等。

使用为Puppet编写代码时获得的好习惯,因为它们会为Ansible派上用场。例如,幂等性是对象或操作的属性,当再次将操作应用于对象以得到与第一个对象相同的结果时。在我们的情况下,这意味着当您再次运行相同的剧本脚本时,没有任何变化,并且系统会告诉您没有任何变化。如果已提交更改,则意味着您的代码有问题。也就是说,幂等将帮助您在开始相同的例行操作时检测出什么地方出了问题。
使用事实和模式,避免使用硬编码的数据。 Ansible允许您使用脚本来做到这一点,灵活地处理数据集并实时捕获更改。 Puppet中没有这样的东西,您必须将所有重要数据放在源代码中。因此,使用角色,这将大大简化您的任务。

使用由配置更改引起的事件处理程序。好处是处理程序可以使用受保护的序列。记录您所做的一切。当我遇到六个月前写的代码时,我讨厌它,当时没有任何文档,而且我根本不记得为什么写它。因此,任何任务都应该有描述。您编写的每个角色和脚本都应具有自己的自述文件,该文件将记录如何使用它们以及它们做什么。相信我,以后对您将非常有用。



您必须利用Ansible提供的新自由。如有必要,您可以多次影响同一文件。例如,如果您需要在一个包含其他脚本重要参数的脚本中更改sshd_config文件的多个参数,则可以执行此操作。木偶不允许这样做。
使用Ansible,您可以获得可预测的程序执行。它们完全按照您的期望工作,并且您不需要监视代码执行错误。如果您使用EXEC,请注意Ansible处理程序比Puppet处理程序更聪明。使用Ansible技巧,例如我最喜欢的“委托”功能。例如,您为服务器A启动了一个剧本,但是此脚本中的部分步骤应在服务器B上独立执行。我使用了委托功能将其从人偶迁移到Ansible。使用此功能,您可以在另一台主机上配置任务的执行,而不是在使用委托_to键配置的主机上。该模块仍将为每台计算机执行一次,但是它将在委托主机上工作,而不是在目标计算机上工作,此外,所有可用事实将适用于当前主机。这将大大减少手动系统设置的数量。

您的Puppet Hiera库数据可以用作Ansible事实,这是有关已连接节点的信息。事实-这是执行过程中Gather事实模块收集的信息:磁盘空间量,操作系统的版本和类型,主机名,可用内存量,处理器体系结构,IP地址,网络接口及其状态。我并不是说服务信息隐藏在数据的深处-只是使用设备的脚本来形成组和变量节点。我的硬件脚本告诉系统它包含哪些物理站点。后来我使用了角色,例如,其中一个角色包含每个物理站点的基础结构事实,例如NTP资源,DNS服务器,模块化设备的IP地址,Nessus扫描器等。如果将公共变​​量放在多个位置,并将它们作为文件/etc/ansible/facts.d/放置在主机上,则以一种角色收集公共变量。

因此,我们将考虑实际的迁移过程。我重复一遍-对我来说,这花费了很多时间,但是您可以减少它。首先,您需要购买和部署塔。这是一个非常容易理解的过程,只需遵循安装文档即可。



安装Tower之后,您将立即访问Web界面。接下来,您需要安装清单脚本并创建设备列表。您可以将现有脚本复制并粘贴到塔中。

接下来,通过授予Tower直接访问存储剧本的Git存储库来设置Git权限。因此,您将允许Tower立即从脚本中接收有关更改的信息并立即实施它们。您无需告诉Tower,它只需检查系统状态并运行最新版本的配置即可。

在主机上为SSH安装标准的Tower帐户。我使用远程访问,因此我使用标准帐户和SUDO系统管理程序来设置特权。当然,Tower有一个密码,因此使用SUDO密码不会带来安全风险。

根据组织的访问结构配置塔式身份验证。决定部门,团队的访问权限,角色访问权限的分配,特殊权限的处理。根据组织的规模,这是一项非常艰巨的任务,但是请记住,从管理塔式服务器的角度来看,由于访问的灵活配置,它可以大大简化您的生活。

现在您已经部署了Git存储库,安装并配置剧本的工作模板。测试您使用Tower所做的一切的性能。确认脚本顺序正确后,即可继续进行主机迁移。使用Ansible删除Puppet代理,并使用特殊脚本从Puppet服务器“清理”节点。这很简单。



我创建了一个名为Tower的组,将其添加到Ansible脚本中,并将其发送给所有主机。之后,此剧本停止了Puppet服务,卸载了所有Puppet Enterprise软件包,并清除了目录。他还删除了Puppet用户-由于我们删除了PE,因此我们也删除了PE用户。

我们看到委派功能正在发挥作用。现在,我可以进入Puppet Master并使用2-3命令清除注册表,然后截屏以显示该SCM已被删除的屏幕截图。这将作为我们不再使用PE的书面证据。

现在,让我们看看应该给予最大的关注-应该避免的错误。这主要与方案之间的依赖性有关。一个剧本的变量可能取决于另一个剧本的变量。请记住,您可以在每个方案中插入要求,以允许使用不同的方案或角色。我为我们所有站点的变量创建了角色,并且每个角色都包含许多变量。因此,我使用了requirements.yml文件来集中通用变量。它使您可以与一个团队一起安装多个Ansible内容集合。



如果我们更改默认网关或NTP服务器,这些更改将立即反映在基础结构的所有元素中。

避免使用庞大而笨重的角色和脚本。针对特定任务的简短场景和角色更加有效,可靠,易于管理和跟踪。

注意另一件事-启动Tower并转到其页面时,您会看到许多参数显示为红色。这种颜色是一个警报,但这是事实。您在数百台主机上启动该过程,如果其中99台成功运行,而一台没有成功,Tower将报告进程失败。他将在屏幕上放置一个鲜红色的标记,以说明该工作。不要惊慌,但请尝试找出为什么此单个节点不起作用。当您查看Puppet Master屏幕时,看到99绿灯和一红灯,您认为一切都正常,系统运行正常。 Tower更加严格,但是关于错误消息的信息较少。也许在Ansible的未来版本中,这一缺点将被消除,但是目前,请尝试找出警报的原因,并记住这样的警报本身不能携带任何重要信息-仅以此方式,系统就报告一台主机发生故障。

如果您有不总是在线的临时主机,请小心。例如,我的系统有几台笔记本电脑。我们使用Ansible Tower与永久主机相同的方式对其进行管理,但是由于它们是移动设备,因此它们并不总是存在于网络中。如果您在执行标准过程时使用临时主机,但是启动系统时Tower在网络上未检测到它们,则警报和过程失败消息将立即显示在其屏幕上。 Tower不知道这些笔记本电脑当前已关闭。这样做没有问题,只要记住这种情况会引起警报消息即可。

有一种使用Tower API的好方法。当笔记本电脑作为标准系统启动过程的一部分启动时,它将使用API​​告诉Tower:“嘿,我在这里,有什么需要我做的吗?”,之后Tower将检查该特定计算机的任务,因为知道她在线。

我们最初遇到的另一件事是并行操作的执行。默认情况下,Ansible使用5个并行主机来完成一项工作。因此,通过检查主要配置的参数,每台主机启动100台机器的相同计划工作最多需要20分钟。因此,首先我们在5台主机上启动配置,然后再在5台主机上启动配置,依此类推。起初,这种情况使我们感到非常紧张,因为在50个主机上部署了该系统仅需2个小时。该问题的解决方案如下。
只需将Ansible Tower服务器上的并行主机的数量设置为与5不同即可。由于我同时运行150台主机,因此将该值设置为25。此后,很快安装了6个补丁。如果愿意,可以将此参数设置为50-这完全取决于您的计算能力和拥有的RAM。通过这种方式,Tower允许您自定义并行流程的执行以适合您的需求。



如果您对报告的主题有任何疑问,请随时与指定的联系人联系。您会看到电子邮件地址,可以在其中发送电子邮件,描述从Puppet切换到Ansible时出现的问题,我将尽力尽快答复您。感谢您的参与,并祝您迁移成功!

一点广告:)


感谢您与我们在一起。你喜欢我们的文章吗?想看更多有趣的资料吗?通过下订单或向您的朋友推荐给开发人员的基于云的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