使用 Packer 构建虚拟机映像

Packer 是一种开源工具,可以通过单一源配置为多个平台创建相同的虚拟机 (VM) 映像。本页面介绍了如何使用 Packer 和 Cloud Build 创建用于 Compute Engine 的虚拟机映像。

准备工作

本页面的说明假定您熟悉 Packer。此外:

  • 准备好包含 Packer 模板的源代码。
  • 如果您要使用本页面中的 gcloud 命令,请安装 Google Cloud CLI
  • 启用以下 API:

    gcloud services enable sourcerepo.googleapis.com gcloud services enable compute.googleapis.com gcloud services enable servicemanagement.googleapis.com gcloud services enable storage-api.googleapis.com 

必需的 IAM 权限

创建 Packer 构建器映像

Cloud Build 提供 Packer 社区构建器映像,可用于在 Cloud Build 中调用 packer 命令。在 Cloud Build 配置文件中使用此构建器之前,您必须构建映像并将其推送到 Artifact Registry:

  1. 克隆 cloud-builders-community 代码库:

    git clone https://github.com/GoogleCloudPlatform/cloud-builders-community.git 
  2. 导航到 Packer 构建器映像:

    cd cloud-builders-community/packer 
  3. 将构建器提交到您的项目:

    gcloud builds submit . 

使用 Packer 构建器

  1. 确保您拥有 packer.json 文件以及源代码。

  2. 在项目根目录中,创建一个名为 cloudbuild.yamlcloudbuild.json构建配置文件

  3. 在构建配置文件中,添加构建步骤以调用 packer build 命令:

    YAML

    steps: - name: 'gcr.io/[PROJECT_ID]/packer'   args:   - build   - -var   - image_name=[IMAGE_NAME]   - -var   - project_id=[PROJECT_ID]   - -var   - image_family=[IMAGE_FAMILY]   - -var   - image_zone=[IMAGE_ZONE]   - packer.json 

    JSON

    {   "steps": [    {       "name": "gcr.io/[PROJECT_ID]/packer",       "args": [         "build",         "-var",         "image_name=[IMAGE_NAME]",         "-var",         "project_id=[PROJECT_ID]",         "-var",         "image_family=[IMAGE_FAMILY]",         "-var",         "image_zone=[IMAGE_ZONE]",         "packer.json"        ]     }    ] } 

    其中:

    • [PROJECT_ID] 是您的 Google Cloud 项目 ID。
    • [IMAGE_NAME] 是您要构建的虚拟机映像的名称。
    • [IMAGE_FAMILY] 是虚拟机映像的映像系列
    • [IMAGE_ZONE]映像地区
  4. 使用构建配置文件启动构建:

    gcloud builds submit --region=[REGION] --config [CONFIG_FILE_PATH] [SOURCE_DIRECTORY] 

    其中:

    • [CONFIG_FILE_PATH] 是构建配置文件的路径。
    • [SOURCE_DIRECTORY] 是源代码的路径或网址。
    • [REGION]支持的 build 地区之一。

    如果您未在 gcloud builds submit 命令中指定 [CONFIG_FILE_PATH][SOURCE_DIRECTORY],则 Cloud Build 会假定配置文件和源代码位于当前工作目录中。

构建映像后,您可以在 Google Cloud 控制台的 Compute Engine 映像页面中查看它们。

后续步骤