跳到主要内容
博客开发者工具设计IaC基础设施的最佳实践

设计你的IaC基础设施的最佳做法

设计你的IaC基础设施的最佳做法

基础设施即代码(IaC)是在云时代部署和管理网络的一种理念和一套做法。IaC旨在最大限度地发挥云计算的优势,并利用自动化配置和部署工具的能力,如 Puppet,厨师Salt, Ansible、、和 Terraform.这些工具所提供的完全自动化的安装和配置允许管理员用配置文件来定义完整的系统。

配置文件是一些指令集,其中有关于如何组装和配置系统的规范。这个指令集可以采取许多不同的形式,并根据工具的不同而有不同的名称(例如,Chef中的cookbookplaybook 中的 Ansible).无论平台之间的差异如何,这种提前定义完整配置的能力导致了一种新的基础设施愿景,其中系统的知识以代码形式存在,并在云中快速部署,而不需要传统的安装或用控制台命令重新配置。

部署你自己的解决方案的步骤将取决于你的自动化平台和你的网络细节,但在你开始探索IaC的可能性时,请记住这些原则。

  1. 简单和模块化的系统

在硬件时代,办公室可能会采用单一的服务器系统来处理电子邮件、文件存储和其他一些任务,但IaC的第一课就是要摆脱多合一的思维模式。大型、多用途的系统会增加复杂性,而复杂性会导致错误和安全问题。把你的IaC基础设施设计成简单、精简和模块化,然后像搭积木一样部署它们,以满足你的环境需求。

  1. 真理的单一来源

同一配置文件的多个版本会造成混乱并导致错误。每个配置应该有一个单一的来源。这意味着使用版本控制系统(如Git)来实现清晰有效的版本管理。然而,单一真理源的哲学意味着不仅仅是版本控制。重点应该放在标准模板的中央星座上,通过一个清晰和可预测的过程来进行定制,而不是随心所欲。

  1. 没有外部文件

配置文件本身应该包含理解内容所需的所有信息。把关于配置的说明和评论放在不同的文件中,需要团队跟踪和平行维护不同的文件。先改变配置,后更新文件的古老习惯会造成额外的工作,导致错误,并招致配置和文件不同步的可能性。

大多数IaC平台提供了向代码添加注释的方法,但对于团队成员来说,熟悉IaC平台使用的界面工具和声明性语言,以阅读和理解配置的细节也很重要。

  1. 通过自动测试保证

自动测试是DevOps和IaC理念的核心原则。建立在IaC环境中的模块化和可重复性使得在测试环境中对生产环境进行建模变得容易。测试应该在你对配置进行修改后开始,在新版本的系统被部署前,应该系统地进行单元测试、功能测试、集成测试和回归测试。

  1. 精益求精,追求完美

在IaC中,配置存在于代码中。我们的目标是通过配置文件来表达配置的细节。一旦系统运转起来,你就会被诱惑去管理和重新配置它,就像你管理其他的计算机系统一样,但统一性原则是最好不要去管它。本地雪花状的重新配置可能导致错误,并使系统难以被其他人保护和维护。理想情况下,你应该通过配置文件进行所有更改,然后在需要更新时重新部署,而不是调整运行中的系统。

  1. 为合作设计你的流程

关于整体配置和目标的知识应该在整个团队中共享,而不是被单个用户所束缚。版本控制是协作环境的一个关键组成部分,但它只是一个开始。你应该以一种最大化信息和共享责任的方式来部署互动过程和协作工具,同时仍然保持合理的安全和审计政策。一个拥有不共享或不可转移的信息的人是对运营的连续性的威胁。

在你探索IaC的可能性和设想自己的IaC基础设施的部署过程时,请记住这些原则。


注释

留下回复

您的电子邮件地址将不会被公布。 必须填写的字段被标记为*