使用 Terraform 设置 CI 工具链
通过本教程,您可以将持续集成 (CI) 的工具链模板与 Security and Compliance Center 中的 DevSecOps 相关实践一起用于基础设施即代码 (IaC) Terraform。 它已为持续部署(CD)进行了预配置,包括库存集成、使用 Git Repos and Issue Tracking 进行变更管理、证据收集以及将基础架构部署到 IBM Cloud。
准备工作
在开始本教程之前,请完成以下步骤。
- 完成 设置先决条件。 有关详细信息,请参阅 CI 对IaC 的重要性。
- 观看 在 IBM Cloud 中开始使用 DevSecOps- 第 1 部分 视频。
启动 CI 工具链设置
Continuous Delivery服务提供的模板可引导您完成工具链设置,并按逻辑顺序创建流程。 进度指示器显示完成配置的步骤。 按照以下步骤访问 CI 工具链模板。
- 访问 IBM Cloud 控制台。
- 单击 Menu
,然后选择 DevOps。
- 在工具链页面,单击 创建工具链。
- 选中 基础设施即代码。
- 单击 CI - 使用 DevSecOps 实践开发安全的基础架构即代码 瓷砖。
设置 CI 工具链设置
欢迎页面概述了工具链的目的,以及指向文档和相关材料的指针。
-
单击启动。
-
在 IBM Cloud 中为同一区域和资源组输入工具链中的 工具链名称。
-
从下拉列表中选择一个地区。
-
从下拉列表中选择一个资源组。
-
单击继续。
仅当当前步骤的配置完成且有效时,才能前进到下一步。 您可以随时单击 Back 查看引导安装程序中的前几步。 工具链安装程序将保留后续步骤中的所有配置设置。
某些步骤包括 切换到高级配置切换按钮。 默认情况下,这些步骤将为您提供最低配置。 不过,需要更精细控制的高级用户可以单击 切换到高级配置切换按钮,显示底层集成的选项。
设置 CI 工具集成
查看默认设置,并在必要时提供用户自定义配置,以设置 CI 工具集成。 在设置过程中配置多个存储库。 您可以克隆样本存储库,也可以使用自己的存储库,但工具链仅支持 Git Repos and Issue Tracking 存储库。
基础架构代码
基础架构代码库是 CI 工具链和管道构建、测试和交付目标工件的项目或模块。 基础架构代码库托管在 GitHub Enterprise 上。 为了实现一致性,本教程引用了 Git Repos and Issue Tracking。
查看基础设施代码的默认信息:
- 接受 使用默认样本。 如果要为工具链链接现有的 IaC 资源库,请选择 自带基础架构代码,并提供作为 Repository URL 字段的输入。 该工具链目前仅支持链接到现有的 Git Repos and Issue Tracking 资源库。 有关详细信息,请参阅 将您自己的基础架构代码引入 DevSecOps。
- 输入 新版本库名称的名称。
- 单击继续。
清单
清单存储库记录了由 CI 工具链创建的工件的详细信息。
- 您可以接受模板中提供的默认配置。
- 单击继续。
问题
问题存储库会记录在 CI 管道运行时发现的问题。
- 您可以接受模板中提供的默认配置。
- 单击 继续
密钥
如 Managing IBM Cloud secrets 中所述,使用切换按钮指定要添加到工具链的秘密保管库集成。
- 本教程使用 IBM Cloud® Secrets Manager 作为私钥的保险库文件。 将根据可用选项自动填充 区域,资源组和 服务名称 字段。 单击下拉指示符以查看其他选项。
- 键入您的 Secrets Manager 实例名称。
- 从下拉列表中选择 授权类型。
- 单击继续。
证据存储
证据库存储 DevSecOps CI 管道生成的所有证据和工件。
- 切换 IBM Cloud Object Storage 邮筒滑块,将所有证据存储到 IBM Cloud Object Storage 邮筒中,可在下一页进行配置。
- 接受默认设置。
- 单击继续。
云 Object Storage 存储区
您必须拥有 IBM Cloud Object Storage 实例 和一个 水桶 作为合规证据保管箱。
- Cloud Object Storage 实例、Bucket 名称和 Cloud Object Storage 端点字段将自动填充。
- 输入您的 Service ID API 密钥。
- 首选:点击密钥图标,即可从保密库导入现有密钥。
- 可复制和粘贴现有密钥。
- 单击继续。
端点字段不是必填字段。 您可以在工具链设置过程中或管道运行过程中选择或提供端点。
部署
配置维护 Terraform 状态的目标 Schematics 工作区。 如果未提供工作区名称,则工具链会创建一个默认的 Schematics 工作区,其中包含 ToolchainName-ToolchainId-PipelineID
。
-
键入您的 IBM Cloud API 密钥。 如果 API 密钥有足够的访问权限。 Schematics 工作区、Git 资源库和 资源组详细信息将自动填充。 您可以更改其中任何字段,以符合您的配置。
- 首选:点击密钥图标,即可从保密库导入现有密钥。
- 可复制和粘贴现有密钥。
- 点击 新建 + 可以创建新密钥。
新生成的 API 密钥可立即保存到保密库中。
-
输入 Schematic 工作区名称。
-
单击继续。
签署
工具链创建并记录在清单中的工件在部署到生产环境之前必须经过签名。
- 输入 GnuPG 专用密钥。 或者,您也可以单击 NEW 创建一个新的 GPG 密钥。 有关详细信息,请参阅 生成 GPG 密钥。
- 单击继续。
可选工具
Slack
配置 Slack 以接收有关拉取请求或 CI 管道事件的通知。 您也可以在创建工具链后添加 Slack 工具。
- 输入您的 Slack 网络钩子。 有关更多信息,请参阅 Slack webhook。
- 输入您的黑客频道来发布消息。
- 输入空白队名。 例如,如果您的团队 URL 是
https://team.slack.com
,团队名称就是team
。 - 为希望接收通知的事件选择 Automated Slack Notifications。
- 单击继续。
此外,您还可以在 CD 管道中使用 0 = off, and 1 = on
来切换 slack-notifications
环境属性发送通知。
创建 CI 工具链
-
在摘要页面,单击 创建工具链。
-
等待工具链创建。
可以在创建管道后配置其他工具链集成。
浏览 CI 工具链
CI 工具链包含 pr-pipeline
和 ci-pipeline
。 当有新的合并请求提交或合并到基础架构代码库的主分支时,这些管道就会触发。
请按照以下步骤访问您的工具链:
-
单击 Menu
> 选择 DevOps。
-
在工具链页面,单击 创建工具链。
-
如屏幕截图所示,点击工具链查看输出。
本教程中使用的示例希望使用
resource_group
创建 Key Protect 实例。 缺省resource_group
名称为Default
。 如果默认值不适合您的账户,请替换variables.tf
文件中的默认resource_group
变量。 否则,通过将 PR 管道和 CI 管道中的TF_VAR_resource_group
环境属性设置为相应的资源组名称,指定resource_group
变量。图 1。 DevSecOps CI 工具链
运行 pr 管道
要启动 pr-pipeline
,请在应用程序存储库中创建一个合并请求:
-
从 CI 工具链页面,单击应用程序资源库磁贴。 默认情况下,创建的名称为
compliance-app-<timestamp>
。 -
从主分支创建分支。
-
更新应用程序中的部分代码或添加自述文件,并保存更改。
-
提交 合并请求。
-
在 CI 工具链页面上,单击 pr-pipeline 磁贴。 验证合并请求的创建是否触发了 PR 管道。
-
等待
pr-pipeline
运行完成。 应用程序版本库中的相应合并请求处于Pending
状态,直到 PR 管道的所有阶段都成功完成。 -
PR 管道运行成功后,单击管道可查看已完成的众多步骤,并查看屏幕截图所示页面。
图 2。 DevSecOps PR 渠道成功 -
返回合并请求。
-
合并请求,以便将更改复制到应用程序版本库的主分支。 确保自动触发 CI 管道。
运行 CI 管道
通过下列其中一种方式启动 CI 管道:
- 自动: 在 PR 管道成功后,通过核准 PR 并将其合并到主分支。
- 手动:要手动触发 CI 管道,请选择 Delivery Pipeline 卡,然后单击 Run Pipeline 并选择 Manual Trigger。
在本教程中,CI 管道是在您将代码更改合并到应用程序版本库的主分支后触发的。
-
在“CI 工具链”页面上,单击 ci-pipeline 磁贴。
-
针对管道名称单击 Run。 观察管道运行情况。 等待管道运行完成。
-
CI 管道运行成功后,单击管道探索已完成的步骤,查看页面,如屏幕截图所示。
图 3。 DevSecOps CI 管道
来自 CI 管道中所有合规性检查的证据都会上载到证据锁存储库,同时也会上载到 IBM Cloud Object Storage 桶中。
要评估管道运行中是否有任何故障,请检查管道的最后一步。
定制管道
有关管道自定义的更多信息,请参阅 用户如何自定义管道?
后续步骤
您成功为 Terraform 创建了 DevSecOps CI 工具链,编辑了基础架构代码库中的代码,运行 ci-pipeline
以构建、测试并将更改部署到开发环境。
现在,请浏览 为 Terraform 设置 CD 工具链。