使用 Ansible 进行大规模部署
使用 Ansible 进行大规模部署
Ansible 的简洁性在于易于理解、学习和分享。它关乎人。经常有人宣称“Ansible 无法扩展到 500 台主机以上”,但这被我们拥有超过 100,000 个节点的客户所掩盖。但认为扩展纯粹是关于主机数量的想法并没有认识到更大的相关性。扩展远不止于此,扩展关乎您业务中的上下文。
什么是扩展?
根据大多数词典,扩展是一个名词,表示事物的相对大小或程度。
技术扩展
在 IT 领域,“扩展”的结论通常等同于某些技术的数量。客户经常会问类似“我们需要 Ansible 扩展到 70,000 台主机”之类的问题。
但是,当我们深入研究这个数字时,现实情况是不会同时对所有主机进行技术操作。对于如此规模的企业来说,冒险让所有系统都面临故障的风险太大。出于安全原因,大规模操作会分批进行——滚动更新不仅是一种更安全的操作方式,而且我们还能更快地看到结果。
业务功能、地理位置、应用程序和网络都会影响这个大数字,并且都可以以最大程度降低风险的方式“分割”——同时还能实现大规模操作。
从等式的另一面来看,技术本身也具有细微差别。与小型简单任务相比,大型复杂操作需要更多资源——内存、计算能力等。我们能够并行操作的主机数量将根据需求而变化。
人力扩展
在 IT 领域,至少有六种不同的方法可以实现任何目标。我们最终选择的方法可能取决于许多因素,但一个强大的影响因素将是人。
初创企业可能会选择高级编程语言来编写其应用程序,因为这样可以快速轻松地上手。少量代码可以产生大量结果——这与用 C 甚至汇编语言编写不同!我们都知道用 C 编码将产生更快的程序,需要更少的计算资源。这将使我们能够更好地利用给定的硬件。但是编程行为可能会更慢,人才库也会更浅。为了启动项目,“速度较慢”的语言可以带来更快的增长。随着业务的增长,它将添加具备现有语言技能的编码人员,因为他们将最快地掌握速度。
某些技术比其他技术更难学习。但是,任何人都可以理解的语言,无论是否有现有技能,都将更快地掌握。
马尔科姆·格拉德威尔的《异类:成功的故事》一书中有一章标题为“稻田和数学测试”。简而言之,他告诉我们,中文数字系统意味着孩子们可以更快地掌握数学,因此他们更喜欢数学。这种乐趣意味着他们乐于进一步沉浸其中。很容易看出滚雪球效应。
当技术以很少的努力就能产生结果时,我们就会获得这种乐趣——它并不局限于儿童:)。这促使我们投入更多时间,从而产生更快的结果。
当人们喜欢使用某种技术时,在大组织中扩展其使用速度会更快,覆盖范围更广。随之而来的是快速采用。
扩展 Ansible
跨组织扩展将具有特定于上下文的特性,但您可以从一些基本要素开始。
扩展技术
确保您使用的硬件适合用例。将提供帮助的文档……
最重要的是您管理清单的方式(您如何对主机进行分组)。花时间考虑最小可行范围。如果您必须升级整个堆栈,哪些部分可以独立于其他部分进行升级?
Ansible 从根本上来说是一个协调器——它不必执行实际操作。您可能已经拥有 Ansible 可以指示的工具,因此可以利用这一事实,无需任何新的学习。您可以获得所有世界的最佳体验,尤其是高级指令集是一个易于阅读的 Ansible Playbook。
扩展人力覆盖范围
在大公司中扩展任何技术都归结为两个基本根源。
- 教育
- 组织
其他所有内容都源于这两个起点。
教育
从这里出现了两个分支——首先是采用。对于一项新技术来说,要想站稳脚跟,就需要快速启动和运行,并且易于学习。当您能在几分钟内解决问题时,就可以轻松地向其他人展示——并且采用范围就会扩大。
其次,教育需要持续进行。而这就是在您所做的事情周围实施其他工具和实践可以提供帮助的地方。例如,将您的 Ansible playbook 和角色存储在源代码存储库中,可以让其他人共享和学习。我们曾经看到一位客户实施了一个很棒的系统,帮助其员工从同事那里学习 Ansible。新的提交必须作为“拉取请求”提交到源代码存储库,并由更有经验的员工进行审查。引入了并加强了模仿开源文化的反馈循环。我们还看到客户将其提交消息推送到其聊天系统。这又是一种鼓励共享的好方法。
组织
“只要是黑色,您就可以选择任何颜色”。正如我相信亨利·福特会告诉我们的那样,统一性是可扩展性的朋友。人们喜欢有创意,完成一天的编码并坐下来欣赏完成的工作令人欣慰。同时,为了扩展,我们确实需要对我们生产的产品进行一些组织。
安全、审计和问责制在大型公司中都占据一席之地。我们需要能够向合适的人员授予合适的访问权限,这在很大程度上是为了防止事故发生。如果没有技术的帮助,管理对数万台设备的访问将很麻烦。
源代码存储库、编码标准、凭据管理和访问控制都可以帮助在 Ansible 周围建立组织结构。将完成工作的简单性结合起来,但将其包裹在安全毯中,以实现安全、受管理的扩展。
扩展后的 Ansible
扩展任何事物都会带来新的挑战,而不仅仅是主机数量。但是,我们的客户每天都在应对很多这些挑战。如果您手头有扩展方面的挑战,并且需要一些帮助,请与我们联系。我们的咨询团队遍布各个业务领域,从世界上最小的公司到最大的公司。我们有一些您可以关联的故事,我们可以帮助您解决这些难题。