要从零开始在IBM Cloud上实施IaC
首先
我认为现在使用IaC已经变得非常普遍,许多人正在尝试开始使用。但是,您可能不知道从哪里开始以及如何学习。我面临了同样的困扰,并探索了一些方法,现在将分享给大家。
我选择在IBM Cloud上使用Schematics开始,因此我将分享使用Schematics(本文使用Terraform)从零开始学习的方法。
预设假设:
・我曾经使用云计算环境
・我对虚拟私有云(VPC)等概念有一定的理解
首先,“Schematics”是指
这是由IBM Cloud提供的实现基础设施即代码(IaC)的服务。您可以使用Terraform和Ansible,在IBM Cloud上自动配置、更新、删除资源以及安装软件。由于我只使用Terraform,所以在本篇文章中将以Terraform为中心进行讨论。
请参考官方文件以了解有关原理图的更多详细信息。
总体趋势
进行亲身实践
请原生的中文方式解释以下内容,只需要一个选项:
↓
我們可以參考Terraform的文件來進行擴展。
请将以下内容用中文进行释义:只需要一种选项:
1. Could you provide just one alternative option for the following?
能否为下面提供一个备选方案?
2. Can you offer just one alternative choice for the following?
你能为以下内容提供仅一个备选选择吗?
参考Github,进行扩展。
请用中文为下列内容进行释义,只需提供一种版本:
↓
请将以下内容进行中国原生语言的表述,只需要一种选项:
调查和修订最佳实践。
最开始是从亲身实践中开始
※请注意,通过本次操作所创建的资源将产生费用。
最初最容易理解和使用的方式还是亲身实践。在IBM Cloud的情况下,他们提供了教程,只要按照教程进行实施,你就能对服务有个大概的了解。
在VPC上创建IBM云Kubernetes服务的步骤。
在本次实操中,我们将介绍在IBM Cloud的VPC环境中创建Kubernetes Service(一种托管服务)的步骤。在实操中,你可以获取以下Terraform模板文件:
https://github.com/IBM-Cloud/terraform-provider-ibm/tree/master/examples/ibm-cluster/vpc-gen2-cluster
由于规模较小,所以没有拆分模块,也没有按环境分离。
虽然远离了Terraform的最佳实践,但我认为对于初次尝试还不错。
请参考Terraform的文档并进行扩展。
Terraform文件指的是以下内容:
https://registry.terraform.io/providers/IBM-Cloud/ibm/latest/docs
如您可以在上述链接中确认的一样,您可以创建IBM Cloud几乎所有的服务。
您可以查看每个服务创建时可以进行的设置。
特别是VPC资源,您可以进行配置,这对您会有所帮助。
※请注意:文档内容稍显不完善。例如,在创建名为[ibm_iam_authorization_policy]的资源时,可能需要填写源服务名称和目标服务名称。然而,文档中并未提供填写服务名称的指南。我在GitHub上查询了相关信息,确认了应填写的值。
参考Github,并进行扩展。
这是terraform ibm模块的GitHub链接。
https://github.com/terraform-ibm-modules
我将介绍如何创建一个安全的OpenShift集群的示例。
您可以通过以下链接访问:
https://github.com/terraform-ibm-modules/terraform-ibm-cluster/tree/v1.4.0/examples/secure-roks-cluster
为了理解链接中的Terraform文件,需要理解模块的概念。作为参考,请查阅以下ChatGPT的回答。
TerraformのModuleは、インフラストラクチャのコードを再利用可能で分離された単位にまとめたものです。モジュールを使用することで、複数のTerraformのコードをまとめて管理し、コードの再利用性を高めることができます。
モジュールは、通常、共通の目的や機能を持つインフラストラクチャを作成するために使用されます。例えば、複数のAWSリソースを含むVPCを作成するモジュールを作成することができます。このモジュールを使用することで、複数のTerraformのコードで同じVPCを再利用することができます。
モジュールは、入力変数、出力変数、リソースブロックなどの構成要素を含みます。モジュール内のリソースブロックは、Terraformの通常のコードと同じように定義され、入力変数は、モジュールが期待する値を指定するために使用されます。出力変数は、モジュールが作成するリソースの属性をエクスポートするために使用されます。
モジュールを使用することで、再利用可能なコードを作成し、コードの保守性を向上させることができます。また、モジュールを作成して公開することで、他のユーザーが同じインフラストラクチャの作成に役立てることができます。
您可以通过以下链接查看各个模块的内容,这对您来说非常有参考价值。
https://github.com/terraform-ibm-modules/terraform-ibm-cluster/tree/v1.4.0/modules
请先集中精力在创建和配置资源上,而不是考虑在这个阶段将模块分离或分割环境。
如果资源能够按照预期正常创建,那么下一步请参考最佳实践。
调查并修正最佳实践。
这个链接可以作为参考。
※注意:由于没有绝对正确的结构,因此请根据实际运用和工具进行修改。
根据Schematics的特点,还有一种使用Terraform的方法,我将在此另外介绍。
概述
我已经介绍了使用IaC在IBM云上构建资源的流程。实际项目中使用IAC时,会面临许多挑战,如变更管理,资源删除等,因此请关注Terraform等IaC工具的其他功能。