创建可部署体系结构
在完成 规划和设计体系结构 以及 决定要创建的组件类型 的步骤之后,您可以开始创建使体系结构运行的自动化代码。 本主题指导您创建由模块组成的可部署体系结构。
要创建可部署架构,您必须定义所需的文件,在 GitHub, 中创建一个发行版,然后将其载入私有目录,以便与组织内外的其他人共享。
创建可部署架构有几种选择:
- 自己构建使用以下说明从头开始构建自己的可部署架构。
- 修改现有代码:从现有架构中下载代码,对其进行修改以满足您的需求,然后根据您的修改创建一个新的可部署架构。
- 堆栈架构:如果目录中已经提供了 可部署架构,那么您还可以将这些架构堆叠在一个项目中。
了解可部署体系结构的结构
本文档描述的可部署体系结构由 1 或更多模块组成。 可部署体系结构由源存储库中的以下内容组成:
{: caption="基于地形的可部署" caption-side="bottom"}剖析
- Terraform 代码
- 源存储库包含 Terraform 文件。 这些文件声明所需的基础架构 (最终状态),并依赖于执行实际 API 请求的 Terraform 提供者来创建,更新和删除基础架构。 使用的一些最常见提供程序是 IBM Cloud® Terraform 提供程序和 Helm/Kubernetes/Rest API 提供程序。
- 脚本 (可选)
- 用作可能不存在的函数 (Bash/Python) 或特别操作任务 (Ansible) 的停止间隔。 有关更多信息,请参阅 为可部署体系结构创建脚本。
- 自动化测试
- 用于部署,验证和销毁基础结构的验证测试。 有关示例,请参阅 sample-deployable-体系结构 样本存储库中的
tests
目录。 - 文档
- 需要在源存储库中包含体系结构图和自述文件。
- 目录清单文件
- 定义如何在 IBM Cloud 目录中公开可部署体系结构。 除了常规目录详细信息 (例如,名称,描述和功能部件) 外,它还包含指向底层 Terraform 配置的变体定义,使用 IBM Cloud® Security and Compliance Center加载到目录期间验证的合规性声明以及运行可部署体系结构所需的 IAM 许可权。 有关更多信息,请参阅 本地编辑目录清单。
- 变体
- 可部署体系结构可以包含功能或复杂性的变体。 例如,您可以创建具有基本功能的快速启动变体,用于简单且低成本的部署,然后您可能具有具有将在生产中使用的更复杂的体系结构的标准变体。 其中每个变体本身都是可部署的体系结构,该体系结构已加载并配置为一起显示在目录中。 这些变体源自不同工作目录中的同一存储库,并在
ibm_catalog.json
文件中定义。 更多信息,请参阅 创建变体。
指定依赖关系和扩展架构
试验版
如果您的可部署架构依赖于另一个架构,您可以在将可部署架构加入目录时加入有关该依赖关系的信息。 您还可以加入可选架构,针对不同的用例扩展自己的架构。 结果就是为用户提供了一个可定制的解决方案,因为用户可以选择他们想要的体系结构,也可以选择你的体系结构。 如需了解更多信息,请参阅 在入职过程中扩展可部署架构。
您还可以在可部署架构的目录清单文件中,提供您想与自己的架构一起包含的其他架构的信息,然后再将其加入。
使用目录清单文件中的 dependencies
部分,创建具有可选和必需架构的可定制解决方案。 确保目录清单文件中 dependency_version_2
设置为 true
。 目录清单文件中仍然支持以前的依赖关系处理方式。 将 dependency_version_2
设置为 false
后,可将 install_type
设置为 extension
,并在 dependencies
部分提供有关依赖关系的信息。 如果这样做,依赖项列表中的每个架构都需要部署自己的架构。 有关设置这些值的更多信息,请参阅 本地编辑目录清单。
创建可部署体系结构
您可以期望在创建可部署体系结构时完成以下高级任务:
- 创建源存储库并添加代码。
- 创建
ibm_catalog.json
清单文件以准备在目录中创建磁贴。 - 创建发布。
- 通过查看和验证代码来加载代码,以在专用目录中创建目录磁贴。
- 选择要共享或发布可部署体系结构的位置。
以下有关创建可部署体系结构的指示信息使用公共样本存储库进行示例教学。
创建源存储库
通过使用组织定义的需求,创建可用于保存可部署体系结构的源代码的 GitHub 存储库。 有关创建存储库的帮助,请参阅 GitHub 文档。 如果您已有要使用的存储库,那么可以跳过此步骤。 您可以选择使用其他组织来托管您的源代码,例如 GitLab, 但在本文档中,使用的是 GitHub。
创建必需的 Terraform 文件
查看以下部分以了解在 GitHub 源存储库中需要哪些基本 Terraform 文件,以创建将可部署体系结构加载到专用目录的过程中所需的 .tgz
文件。
main.tf
main.tf
文件是您放置用于供应要创建的资源的代码的位置。 您可以直接从 terraform-ibm-modules
或外部模块或提供程序资源调用模块。
请参阅示例:
outputs.tf
outputs.tf
文件包含可以包含在可部署体系结构中的输出值。
请参阅示例:
provider.tf
provider.tf 文件包含提供程序配置,例如代码期望的提供程序名称,API 密钥和区域。
请参阅示例:
README.md
自述文件包含有关可部署体系结构的背景和用法信息,包括需求,模块,资源,必需访问权,输入和输出部分。
如果源存储库位于 terraform-ibm-modules
组织中,那么将生成大部分自述文件。 因此,您不会像输入和输出一样手动添加信息。 变量名称和描述从 variables.tf 文件生成到自述文件中。
请参阅示例:
variables.tf
variables.tf
文件包含可部署体系结构的必需变量和可选变量。
请参阅示例:
version.tf
version.tf
文件存储有关运行可部署体系结构所需的 Terraform 版本和提供程序版本的信息。
应将可部署体系结构所需的任何 Terraform 提供程序锁定到准确的版本中,而不是使用范围来确保与可部署体系结构一致的结果。
请参阅示例:
创建目录清单文件
目录清单是存储库根目录中名为 ibm_catalog.json
的文件。 此文件定义用于在目录中创建磁贴的必需元数据,例如,指向底层 Terraform 配置的名称,描述,功能部件,变体定义,使用 Security and Compliance Center加载期间将验证的合规性声明以及部署体系结构所需的 IAM 许可权。 它还定义了当用户尝试从目录部署体系结构时要在缺省情况下选择的配置。 有关更多信息,请参阅 将目录详细信息映射到清单文件。
查看显示全堆栈和扩展类型变体的 样本存储库中的示例。
您可以使用两种不同的方法来创建目录清单文件:
-
您可以使用 模板 从头开始创建此文件。
-
您可以在源存储库中使用以下基本样本启动加载过程,然后在加载期间在控制台中进行更改以将更新后的文件添加到源存储库后 下载清单文件。
以下是可以添加到存储库并进行编辑以帮助您开始使用此选项的基本清单文件。
{ "products": [ { "flavors": [ { "architecture": {}, "compliance": {}, "install_type": "fullstack" } ], "label": "catalog-create-sample-da-0.0.1", "name": "catalog-create-sample-da-0.0.1", "offering_icon_url": "url", "product_kind": "solution", "provider_name": "Community", "short_description": "A simple deployable architecture.", "tags": [ "dev_ops" ], "version": "0.0.1" } ] }
后续步骤: 将可部署体系结构加载到专用目录
通过创建包含源存储库中所需文件的 Git 发行版,您可以加载可部署体系结构的版本以及所有包含的变体。 加载是通过查看目录详细信息并在 IBM Cloud中验证测试部署和合规性声明来在专用目录中创建目录磁贴的过程。 有关逐步过程,请参阅 启用可部署体系结构。