使用 Terraform 設定 CI 工具鏈
透過本教學課程,您可以使用工具鏈範本與下列工具進行持續整合 (CI):Security and Compliance Center相關實踐在DevSecOps基礎設施即代碼 (IaC)地形。 它經過預先配置,可實現持續部署 (CD),包括庫存整合、變更管理Git Repos and Issue Tracking、證據收集和基礎設施部署IBM Cloud。
開始之前
在開始本教學之前,請完成以下步驟。
- 完全的 設定先決條件。 欲了解更多信息,請參閱 CI 的重要性IaC。
- 查看 開始使用DevSecOps在裡面IBM Cloud- 第1部分 影片。
啟動 CI 工具鏈設定
這Continuous Delivery服務提供的範本可引導您完成工具鏈設定並以邏輯順序建立流程。 進度指示器會顯示完成配置的步驟。 請依照下列步驟存取 CI 工具鏈的範本。
- 訪問 IBM Cloud安慰。
- 點選選單
並選擇 DevOps。
- 在工具鏈頁面上,按一下建立工具鏈。
- 查看基礎設施即程式碼。
- 點選 CI - 開發安全基礎設施即程式碼DevSecOps實踐瓦。
設定 CI 工具鏈設置
這歡迎頁面總結了工具鏈的用途以及文件和相關材料的指針。
-
按一下啟動。
-
進入一個工具鏈名稱在同一區域和資源組的工具鏈中IBM Cloud。
-
選擇地區從下拉清單中。
-
選擇資源組從下拉清單中。
-
按一下繼續。
只有在現行步驟的配置完成且有效時,您才能進入下一步。 您可以隨時點擊後退查看引導安裝程式中的先前步驟。 工具鏈安裝程式會保留後續步驟中的所有配置設定。
一些步驟包括切換到進階配置切換按鈕。 預設情況下,這些步驟為您提供最低配置。 但是,需要更細粒度控制的進階使用者可以點擊切換到進階配置切換以顯示底層整合的選項。
設定 CI 工具整合
檢查預設設定並在必要時提供使用者定義的配置以設定 CI 工具整合。 在設定過程中配置多個儲存庫。 您可以複製範例儲存庫,也可以使用您自己的儲存庫,但工具鏈僅支援 Git Repos and Issue Tracking 儲存庫。
基礎架構程式碼
基礎設施程式碼儲存庫是 CI 工具鍊和管道建置、測試和交付目標工件的專案或模組。 基礎設施程式碼儲存庫託管在GitHub Enterprise。 為了一致性,本指導教學參照 Git Repos and Issue Tracking。
查看基礎設施代碼的預設資訊:
- 接受使用預設範例。 如果您想連結現有的IaC工具鏈的儲存庫,選擇自帶基礎設施代碼,並提供作為輸入儲存庫網址場地。 該工具鏈目前僅支援連結到現有的Git Repos and Issue Tracking儲存庫。 有關更多信息,請參閱 將您自己的基礎設施代碼引入DevSecOps。
- 輸入名稱新儲存庫名稱。
- 按一下繼續。
庫存
庫存儲存庫記錄 CI 工具鏈建立的工件的詳細資訊。
- 您可以接受模板中提供的預設配置。
- 按一下繼續。
問題
問題儲存庫會記錄在 CI 管線執行時發現的問題。
- 您可以接受模板中提供的預設配置。
- 點選繼續
密碼
使用切換按鈕指定要新增至工具鏈中的秘密保管庫集成,如中所述 管理IBM Cloud秘密。
- 本指導教學使用 IBM Cloud® Secrets Manager 作為密鑰的儲存庫。 區域、資源群組及 服務名稱 欄位會根據可用的選項自動移入。 按一下下拉指示器以查看其他選項。
- 輸入你的 Secrets Manager實例名稱。
- 選擇授權類型從下拉清單中。
- 按一下繼續。
證明儲存體
證據儲存庫儲存了由系統產生的所有證據和工件。DevSecOpsCI 管道。
- 切換IBM Cloud Object Storage存儲桶滑塊將所有證據存儲在IBM Cloud Object Storage可以在下一頁配置的儲存桶。
- 接受預設設定。
- 按一下繼續。
雲端 Object Storage 儲存區
您必須擁有 IBM Cloud Object Storage實例 和一個 桶 充當合規證據櫃。
- 這雲Object Storage實例,桶名,和雲Object Storage終點欄位會自動填入。
- 輸入您的服務 ID API 金鑰。
- 首選:可以透過點選金鑰圖示從機密庫匯入現有金鑰。
- 可以複製和貼上現有密鑰。
- 按一下繼續。
端點字段不是強制性的。 您可以在工具鏈設定期間或管道運作期間選擇或提供端點。
部署
配置目標Schematics維護 Terraform 狀態的工作空間。 如果未提供工作區名稱,則工具鏈會建立預設的工作區名稱Schematics工作區與 ToolchainName-ToolchainId-PipelineID
。
-
輸入你的 IBM Cloud API金鑰。 如果 API 金鑰有足夠的存取權限。 這Schematics工作區,Git儲存庫,和資源組詳細資訊會自動填入。 您可以更改這些欄位中的任何一個以符合您的配置。
- 首選:可以透過點選金鑰圖示從機密庫匯入現有金鑰。
- 可以複製和貼上現有密鑰。
- 可以透過點擊從此處建立新密鑰新+。
新產生的 API 金鑰可以立即儲存到機密庫中。
-
輸入原理圖工作區名稱。
-
按一下繼續。
簽署
由工具鏈建立並記錄在清單中的工件必須在部署到生產之前進行簽署。
- 輸入 GnuPG私鑰。 或者,您可以透過點擊建立新的 GPG 金鑰新的。 有關更多信息,請參閱 產生 GPG 金鑰。
- 按一下繼續。
選用工具
Slack
配置 鬆弛 接收有關拉取請求或 CI 管道事件的通知。 您也可以在建立工具鏈後新增 Slack 工具。
- 輸入您的 Slack webhook。 有關更多信息,請參閱 Slack webhook。
- 輸入您的鬆弛通道發布訊息。
- 輸入鬆弛團隊名稱。 例如,如果您的團隊 URL 是
https://team.slack.com
,隊名是team
。 - 選擇自動 Slack 通知對於您想要接收通知的事件。
- 按一下繼續。
或者,您可以使用以下命令切換發送通知 slack-notifications
CD 管道中的環境屬性,使用 0 = off, and 1 = on
。
建立 CI 工具鏈
-
在摘要頁面上,按一下建立工具鏈。
-
等待工具鏈創建。
建立管線之後,可以配置其他工具鏈整合。
探索 CI 工具鏈
CI 工具鏈包含 pr-pipeline
和 ci-pipeline
。 當新的合併請求提交或合併到基礎設施程式碼儲存庫中的主分支時,這些管道就會觸發。
請依照以下步驟存取您的工具鏈:
-
來自 IBM Cloud安慰。
-
點選選單
> 選擇 DevOps。
-
在工具鏈頁面上,按一下建立工具鏈。
-
點擊您的工具鏈以查看輸出,如螢幕截圖所示。
本教程中使用的範例需要
resource_group
來創建Key Protect實例。 預設resource_group
名稱為Default
。 如果預設值不適合您的帳戶,請替換預設值resource_group
變數在variables.tf
文件。 否則指定resource_group
變數透過設定TF_VAR_resource_group
將 PR 管道和 CI 管道中的環境屬性設定為適當的資源群組名稱。圖1。 DevSecOpsCI工具鏈
執行 pr 管線
要開始 pr-pipeline
,在您的應用程式儲存庫中建立合併請求:
-
在 CI 工具鏈頁面中,按一下應用程式儲存庫磁貼。 預設情況下它是用名稱創建的
compliance-app-<timestamp>
。 -
從主要分支建立分支。
-
更新應用程式中的一些程式碼或添加自述文件並保存更改。
-
提交合併請求。
-
在 CI 工具鏈頁面上,按一下 pr-pipeline 磚。 驗證 PR 管道是否由合併請求的建立觸發。
-
等待
pr-pipeline
運行即可完成。 應用程式儲存庫中對應的合併請求位於Pending
狀態直到 PR 管道的所有階段成功完成。 -
PR 管道運行成功後,按一下管道以瀏覽已完成的多個步驟並查看螢幕截圖中所示的頁面。
圖 2. DevSecOps公關管道成功 -
導航回到合併請求。
-
合併請求,以便將變更複製到應用程式儲存庫的主分支。 查看您的 CI 管道是否自動觸發。
執行 CI 管線
使用下列其中一種方式來啟動 CI 管線:
- 自動: 在順利完成 PR 管線之後,透過核准 PR 並將其合併至主要分支。
- 手動:若要手動觸發 CI 管道,請選擇Delivery Pipeline卡並點擊運行管道並選擇手動觸發。
在本教程中,將程式碼變更合併到應用程式儲存庫的主分支後,會觸發 CI 管道。
-
在 CI 工具鏈 頁面上,按一下 ci-pipeline 磚。
-
點選跑步針對您的管道名稱。 觀察管道正在運作。 等待管道運行完成。
-
CI 管道運行成功後,請按一下管道以瀏覽已完成的步驟以查看螢幕截圖中所示的頁面。
圖 3. DevSecOpsCI 管道
CI 管道中所有合規性檢查的證據都會上傳到證據儲物櫃儲存庫,同時也會上傳到IBM Cloud Object Storage桶。
若要評估管道運作中是否有任何故障,請檢查管道的最後一步。
自訂管線
有關管道定制的更多信息,請參閱 用戶如何自訂管道?
下一步
您成功創建了一個DevSecOpsTerraform 的 CI 工具鏈,編輯基礎設施程式碼儲存庫中的程式碼,運行 ci-pipeline
建置、測試並將變更部署到開發環境。
現在,探索 為 Terraform 設定 CD 工具鏈。