Terraform专题精讲——为什么使用 Terraform

为什么使用 Terraform

一、什么是基础设施即代码?

https://aws.amazon.com/cn/what-is/iac/

  亚马逊 Amazon Web Services(AWS)最早提出了基础设施即代码(Infrastructure as Code,简称IaC)的概念。基础设施即代码(IaC)是指使用代码而不是手动流程和设置来配置和支持您的计算基础设施的能力。任何应用程序环境都需要许多基础设施组件,例如操作系统、数据库连接和存储。开发人员必须定期设置、更新和维护基础设施,以开发、测试和部署应用程序。 

  手动管理基础设施既耗时又容易出错,尤其是在大规模管理应用程序时。基础设施即代码允许您定义基础设施的所需状态,而无需纳入获得该状态的所有步骤。它可以自动实现基础设施管理,因此开发人员可以专注于构建和改进应用程序,而不是管理环境。组织使用基础设施即代码来控制成本、降低风险并快速响应新的商机。

二、基础设施即服务的优势有哪些?

https://aws.amazon.com/cn/what-is/iac/

  自动化是任何计算环境的关键目标。基础设施即代码(IaC)用于基础设施自动化以创建环境。IaC 最常见的用途是在软件开发中构建、测试和部署应用程序。

  传统上,系统管理员组合使用脚本和手动流程来设置基础设施环境。这个过程既复杂又耗时。如今,您可以使用 IaC 在几分钟内自动设置环境并提高管理效率。接下来我们将提供一些优势。

2.1、轻松复制环境

  只要基础设施资源可用,就可以使用相同的 IaC 将同一个环境部署到其他位置的不同系统上。

  例如,假设一家企业的区域分支机构有 IaC 来描述整个分支机构的企业环境,包括服务器、网络和自定义配置。如果企业开设其他区域分支机构,他们可以使用 IaC 来复制完全相同的环境,并快速使分支机构上线并投入运营。IaC 删除了过去需要的重复手动步骤和清单。

2.2、减少配置错误

  由于人为参与,手动配置容易出错。人都会犯错。或者,如果一种设置(例如开发人员环境)中发生更改,而在另一种设置(例如测试环境)中没有这些更改,则可能会出现配置偏差。

  相比之下,IaC 可以减少错误并简化错误检查流程。如果由于 IaC 代码更新而出现错误,您可以通过将代码库滚动到最后一个已知的稳定配置文件来快速修复问题。出于其他原因(例如部署较旧的应用程序版本),也可以使用以前版本的 IaC 配置文件回滚环境。

2.3、在最佳实践环境上进行迭代

  源代码控制允许软件开发人员轻松地在环境中进行构建和分支。例如,假设某个应用程序添加了一个包含可选的机器学习模块。开发人员可以对应用程序的 IaC 进行分支,以启动、使用和停止高性能的 Amazon Elastic Compute Cloud(Amazon EC2)Trn 1 实例。他们可以根据应用程序部署的区域来设置部署区域。

三、基础设施即代码的工作原理是什么?

https://aws.amazon.com/cn/what-is/iac/

  就像软件代码描述应用程序及其工作原理一样,基础设施即代码(IaC)描述系统架构及其工作原理。基础设施架构包含服务器、网络、操作系统和存储等资源。IaC 通过将配置文件当作源代码文件来控制虚拟化资源。您可以使用它编码式、可重复的方式管理基础设施。 

  IaC 配置管理工具使用不同的语言规范。您可以像 Python 或 Java 中的应用程序代码一样开发 IaC。您还可以在具有内置错误检查功能的集成式开发环境(IDE)中编写 IaC。而且您可以在源代码控制下对其进行维护,并在每次代码更改时进行提交。IaC 文件包含在更广泛的代码库中。

3.1、IaC 的方法

  基础设施即代码有两种不同的方法。

3.2、声明式

  声明式 IaC 允许开发人员描述构成所需系统最终状态的资源和设置。然后,IaC 解决方案根据基础设施代码创建此系统。这样,只要开发人员知道运行他们的应用程序需要哪些组件和设置,声明式 IaC 就很方便使用。

3.3、命令式

  命令式 IaC 允许开发人员描述设置资源并达到所需系统和运行状态的所有步骤。虽然编写命令式 IaC 并不像声明式 IaC 那么简单,但在复杂的基础设施部署中,命令式方法变得必不可少。当事件顺序至关重要时,尤其如此。

四、Iac 在 DevOps 中扮演什么角色? 

https://aws.amazon.com/cn/what-is/iac/

  DevOps 是改善软件开发和 IT 运营团队之间协作的过程。它旨在缩短应用程序开发生命周期并提供高质量软件的持续交付。DevOps 团队将运营活动与开发者工具和代码提交集成,因此应用程序的发布周期可以非常快。

  DevOps 的一个关键目标是在整个开发过程中自动执行基础设施任务。您可以将基础设施即代码(IaC)集成到持续集成和持续部署(CI/CD)管道中。这样,当软件完成其构建和发布过程时,可以同时进行必要的基础设施更改。

  DevOps 团队将基础设施即代码用于多种目的:

    • 快速设置从开发到生产的完整环境
    • 帮助确保在不同环境之间实现一致的可重现配置
    • 与云提供商无缝集成,并根据需求高效地向上或向下扩展基础设施资源

  IaC 为开发人员和操作人员提供了一种通用语言。更改可以通过透明的方式进行审查,从而促进在 DevOps 环境中实现更好的协作。

五、AWS 如何支持您的 IaC 需求?

https://aws.amazon.com/cn/what-is/iac/

  Amazon Web Services(AWS)产品在设计时考虑了基础设施即代码(IaC)。因此,您可以通过在代码中定义和运行复杂的云架构来安全地管理它们。

  以下是可以帮助您满足 IaC 需求的 AWS 服务:

    • 借助 AWS Cloud Development Kit(AWS CDK),开发人员可以使用熟悉的编程语言和交互式配置工具来定义云应用程序资源,并且全都在 IDE 中进行。这就无需学习新的语言和工具来操作云资源。
    • 借助 AWS CloudFormation,开发人员可以在 AWS 基础设施之外进行构建和扩展。开发人员可以使用 IaC 来定义和管理在 CloudFormation 注册表、开发者社区和内部库中发布的云资源。
    • AWS CodeCommit 是一项安全、可扩展的服务,用于托管您的私有 Git 存储库,可实现对 IaC 和所有应用程序代码进行完全托管的源代码控制。

六、华为云如何支持您的 Iac 需求?

https://support.huaweicloud.com/productdesc-terraform/index.html

https://registry.terraform.io/providers/huaweicloud/hcs/latest

七、阿里云如何支持您的 Iac 需求?

https://help.aliyun.com/document_detail/95820.html?spm=a2c4g.11186623.0.i1

https://registry.terraform.io/providers/aliyun/alicloud/latest

八、腾讯云如何支持您的 Iac 需求?

https://cloud.tencent.com/product/tiat

https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest

posted @ 2023-11-22 10:12  左扬  阅读(97)  评论(0编辑  收藏  举报
levels of contents