本文介绍了如何完成配置并提交 使用 Terraform 进行部署
确定如何创建部署包
我们建议您使用 Producer Portal 的引导式配置选项 直接在 Google Cloud 控制台中创建部署包。
引导式配置选项支持简单的虚拟机产品,例如单虚拟机 但不支持一些复杂的部署, 例如具有多个虚拟机和非计算资源的部署。如果 您需要使用引导式配置不支持的功能,可以使用 创建部署包或 通过添加其他功能来自定义现有软件包。
在引导式配置和手动配置之间切换
如果您使用 Producer Portal 的引导式配置选项,并且稍后想 切换到手动配置部署包,请点击 前往手动配置。
完成引导式配置
要使用 Google Cloud 控制台,请完成以下步骤:
在 Producer Portal 中,前往 Deployment package(部署包)部分。
在 Terraform configuration(Terraform 配置)下方标有 Cloud Storage 存储分区,点击浏览。
如果您已创建 Cloud Storage 存储桶,请选择该存储分区 此处。
如果您没有 Cloud Storage 存储桶,请点击标记为创建新存储桶的图标。创建新存储桶时,您需要执行以下操作:
为存储桶选择名称。
指定存储桶在其中存储数据的一个或多个区域。
指定数据的存储类别。
确定要应用于 对存储桶的数据拥有 Identity and Access Management (IAM) 权限。
配置可选的高级设置,例如加密或数据保留政策。
确保您已为 Cloud Storage 存储桶启用对象版本控制。
保存存储桶设置并继续配置部署 软件包,点击 Configure。
在选择机器类型下,您必须指定默认可用区。 虚拟机的最小机器类型和默认机器类型 及其启动磁盘的大小和类型。
在指定操作系统下,您必须指定虚拟机映像使用的操作系统的名称和版本,以及虚拟机映像的版本号。
(可选)在设置虚拟机访问权限下,您可以指定网站和管理员。 网址以及用户名和密码 在部署后的虚拟机
(可选)在配置网络下,您可以指定 IP 转发的设置并配置防火墙规则。
(可选)在定义后续步骤下,您可以提供 以指导他们开始使用您的产品。 他们部署您的产品后,将可以看到这些说明。
完成上述步骤后,点击生成以创建您的 部署包
如果您以后需要对部署包进行其他更改, 您可以点击修改进行更改,然后点击生成 应用这些更改后,重新生成部署包。
在 Producer Portal 中验证部署包。
在 Cloud Marketplace 对部署包的验证完成后, 成功完成后,点击发布即可开始测试您的部署 软件包。
完成手动配置
本部分介绍了如何使用手动配置选项 并提交软件包以供审核。
指定是使用默认 Terraform 模块还是自定义 Terraform 模块
您可以选择客户在部署您的产品时是使用默认 Terraform 模块还是自定义 Terraform 模块。
如果您选择使用默认的 Terraform 模块,Google Cloud 会为您的客户提供自动生成的 Terraform 代码,以便他们部署您的产品。
如果您选择使用自定义 Terraform 模块,则必须提供自己的模块 将 Terraform 模板发送给客户。您可以选择提供这些模板 客户可以使用命令行界面 (CLI) 进行部署, 或者通过额外的元数据,让客户能够直接通过 Cloud Marketplace。
指定您的客户应使用默认 Terraform 还是自定义 Terraform 模块;对于自定义 Terraform 模块,还要指定您希望客户如何部署 请完成以下步骤:
在 Producer Portal 中,前往部署包部分。
在 Terraform configuration(Terraform 配置)下的 Type(类型)下,选择 Default(默认)。 自定义(CLI 部署)或自定义(界面部署)。
自定义 Terraform 模块的要求
如果您选择使用自定义 Terraform 模块,您的自定义模块必须符合 以下要求:
您的自定义模块必须包含一个模块,Cloud Marketplace 可以使用该模块来验证其是否符合要求。如需了解详情,请参阅 测试您的模块是否通过验证。
您的模块必须具有一个名为
project_id
的变量,用于存储项目的 客户用于部署模块的 ID。您必须将对映像名称的引用指定为 Terraform 变量,格式为
projects/PROJECT_NAME/global/images/IMAGE_NAME
。 您必须将default
的值设置为虚拟机映像的名称,才能确保 可将 Cloud Marketplace 拥有的映像副本替换为 模块。您的模块不得依赖于未与其打包的外部模块。
您的模块只能使用以下已获批准的提供方:
archive
cloud-init
dns
google
google-beta
http
null
random
time
tls
有关符合这些要求的自定义模块的示例,请访问 自定义 Terraform 模块示例。
针对界面部署的自定义 Terraform 模块的其他要求
如果自定义模块支持界面部署,则必须满足以下要求 其他要求:
您的模块必须包含一个名为
goog_cm_deployment_name
的变量。 Cloud Marketplace 使用此变量来为您客户的 部署页面您应该使用此变量来避免 一个项目中的多个部署之间的资源命名冲突。对于 示例,请参阅goog_cm_deployment_name
中的 自定义 Terraform 模块示例。在文件
metadata.display.yaml
中,您必须将ET_GCE_DISK_IMAGE
指定为所有图片变量的xGoogleProperty
类型。例如: 请参见metadata.display.yaml
,了解 自定义 Terraform 模块示例。如果您的产品包含多虚拟机映像或支持多个 CPU 的映像 您必须添加
enumValueLabels
,以便客户可以 选择要使用的虚拟机映像有关示例,请参见 自定义 Terraform 模块示例。您的模块不得依赖于 Terraform 预配工具。
自定义 Terraform 模块的额外步骤
如果您选择使用自定义 Terraform 模块,则必须完成以下操作 配置要部署的虚拟机映像的附加步骤:
在 Producer Portal 中,前往 Deployment package(部署包)部分。
在 Terraform configuration 下的 Image Variables 下,点击 添加变量。
要为产品启用 Terraform 部署,您必须 启用了 Marketplace 自有映像。 Cloud Marketplace 使用您在此处添加的变量来替换 客户部署您的虚拟机映像时,Marketplace 拥有的虚拟机映像版本 产品。
在图片变量文本字段中,输入变量的名称,例如 “image”。
在您的自定义 Terraform 模块中,设置 复制到您的容器映像的虚拟机映像的名称 商品,格式为
projects/YOUR_PROJECT/global/images/YOUR_IMAGE
。在指定 GCS 对象位置下,点击浏览。
如果您已创建 Cloud Storage 存储桶,请在此处选择该存储分区。
如果您没有 Cloud Storage 存储桶,请点击标记为创建新存储桶的图标。创建新存储桶时,您需要执行以下操作:
为存储桶选择名称。
指定存储桶在其中存储数据的一个或多个区域。
指定数据的存储类别。
确定应用于存储桶数据的Identity and Access Management (IAM) 权限的粒度级别。
配置可选的高级设置,例如加密或数据保留政策。
确保您的 Cloud Storage 存储桶已启用对象版本控制。
保存存储桶设置并继续配置部署 软件包,点击 Configure。
在所需角色下,指定您的客户的 IAM 角色 部署产品时所必须具备的要素
(仅限界面部署)为您的自定义 Terraform 模块创建元数据
要让您的自定义模块支持界面部署,您必须创建 Cloud Marketplace 用于正确解析模块和 在界面中为客户呈现
如需创建并添加此类元数据,您可以使用开源 CFT CLI 工具。 如需使用 CFT 创建元数据并将其添加到您的自定义模块,请完成 操作步骤:
安装 CFT CLI 工具。如需了解详情,请参阅 CFT CLI 文档。 我们建议您将
VERSION
的值设置为latest
,并且 将PLATFORM
设置为以下值之一:linux
windows
darwin
运行以下命令:
cft blueprint metadata -p TF_PACKAGE_PATH -q -d --nested=false
在上一个命令中,
-p
标志为 Terraform 提供了路径 则-q
标志可生成元数据,而无需提供 远程仓库,-d
标志会生成metadata.display.yaml
文件,--nested=false
标志会生成根模块的元数据, 跳过modules/
文件夹中的所有模块。
完成上述步骤后,CFT CLI 工具会生成两个新文件:
metadata.yaml
和metadata.display.yaml
。
自定义自定义 Terraform 模块的元数据
Cloud Marketplace 使用文件 metadata.display.yaml
来自定义
表单。如果您想
自定义此表单,则在创建元数据后,您可以更改
metadata.display.yaml
中的字段。如需详细了解可用的自定义选项,请参阅开源 BlueprintUI 文档,或查看 BlueprintUI 架构。
我们建议您使用该扩展程序
GooglePropertyExtensions
修改元数据。借助 GooglePropertyExtensions
,您可以使用 Google Cloud 专用验证,例如强制要求客户只能选择其项目中已存在的 Virtual Private Cloud (VPC) 网络。有关示例,请参见
自定义 Terraform 模块示例。
验证自定义模块的元数据
如需验证自定义模块的元数据,请运行以下命令:
cft blueprint metadata -p TF_PACKAGE_PATH -v
在上一个命令中,-p
标志为 Terraform 提供了路径
软件包,-v
标志用于验证所提供的路径下的所有元数据文件
共
BlueprintMetadata
架构。
测试您的模块是否通过了验证
如果运行以下命令,您的自定义模块将通过验证 成功:
terraform plan -var project_id=YOUR_PROJECT -var-file marketplace_test.tfvars
在上一个命令中,marketplace_test.tfvars
是一个 Terraform 变量文件
仅用于验证
模块。如果模板声明的任何变量都没有默认值
如果您没有为这些变量设置值,则该命令不会运行
成功。要确保该命令成功运行,您可以创建一个
marketplace_test.tfvars
文件,用于为您希望运行的变量设置值
。如需查看 marketplace_test.tfvars
文件示例,请参阅
自定义 Terraform 模块示例。
(可选)(仅限 CLI 部署)添加测试模块
可选:如果您的自定义模块支持 CLI 部署,您可以选择添加名为 examples/marketplace_test
的文件夹。如果遇到以下情况,您可能需要这样做:
您的产品需要包含一个单独的测试模块,用于验证其
功能。如果您添加了此文件夹,则您的模块
则必须成功运行下列命令:
terraform -chdir=examples/marketplace_test plan -var project_id=YOUR_PROJECT
验证和测试部署
创建和配置部署包后,您必须验证 并进行测试,然后 Cloud Marketplace 团队才能审核并批准 。
在 Producer Portal 中,前往部署包部分。
点击验证。验证流程最长可能需要 2 小时才能完成 完成后,您可以在运行时退出界面。
成功完成验证后,点击部署预览 来测试您的部署
后续步骤
成功验证和测试部署后,您可以点击 发布:提交您的整个商品以供审核和发布 Cloud Marketplace。有关详情,请参阅 提交您的商品。