附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請以雲端環境特有的值取代這些值。
整合 Oracle Cloud Infrastructure Resource Manager 與自動化流程
簡介
Oracle Cloud Infrastructure (OCI) 資源管理程式服務可將所有 OCI 資源的部署和作業自動化。此服務使用基礎架構即程式碼 (IaC) 模型,以 Terraform 為基礎,這是一種開放原始碼業界標準,可讓 DevOps 工程師隨時隨地開發及部署其基礎架構。
Terraform 組態會將您的基礎架構編碼為宣告式組態檔。OCI 資源管理程式服務可讓您跨多個團隊和平台共用及管理基礎架構組態和狀態檔案。
透過 OCI 資源管理程式,您可以在 OCI 主控台中執行 Terraform 命令檔。您也可以撥打 REST 呼叫或使用 Oracle Cloud Infrastructure Command Line Interface (OCI CLI),藉此擴展與自動化工具 (例如 OCI Devops、Jenkins、GitHub 等) 整合的可能性。
在本教學課程中,我們將透過 OCI 保存庫加密密碼安全地取得資料庫管理員密碼,以自動部署 Oracle Autonomous Database 執行處理,而不會在檔案中公開該密碼,因此 OCI 資源管理程式執行使用者可以正確存取建立資料庫和儲存的密碼。
目標
- 透過 Terraform 設定自動化,以便使用適當的存取證明資料建立執行處理,但無須儲存任何機密資訊 (例如密碼),讓只有獲得授權的使用者才能在 Terraform 命令檔內使用。
必要條件
-
使用者群組內沒有原則的使用者。此使用者將被授予在 OCI 資源管理程式中執行 Terraform 的適當權限。
-
特定區間中的 OCI 物件儲存的儲存桶 (若要在此儲存桶中產生 Terraform 命令檔)。
-
Terraform 命令檔將透過 OCI 資源管理程式執行,使用者必須具備下列權限:
- 在區間中建立資源。
- 建立 Oracle Autonomous Database 執行處理。
- 讀取 OCI 保存庫密碼。
- 執行 Terraform 命令檔。
作業 1:在 OCI 保存庫中建立 Oracle Autonomous Database 的加密密碼
我們將在 OCI Vault 中建立密碼,以說明如何在 Terraform 中設定新資源,而不會公開機密資料。
加密密碼是與 OCI 服務搭配使用的證明資料,例如密碼、憑證、SSH 金鑰或認證記號。將加密密碼儲存在 OCI Vault 中的安全性比您在程式碼或組態檔等其他地方儲存加密密碼更高。如果需要加密密碼才能存取資源或其他服務,您可以從 OCI 保存庫服務擷取加密密碼。
您可以使用 OCI 主控台、OCI CLI 或 API 建立加密密碼。加密密碼的加密密碼內容會從外部來源匯入服務。OCI 保存庫服務會將加密密碼儲存在保存庫中。
注意:對於此工作,我們必須在 OCI 主控台中以管理使用者身分登入。您必須具備在 OCI 保存庫中建立密碼的權限。
-
登入 OCI 主控台,按一下識別與安全和保存庫。
-
選取要儲存加密密碼的區間,然後按一下建立保存庫。
-
輸入保存庫的名稱,確認區間並按一下建立保存庫。
-
確認已建立 Vault 並建立金鑰。按一下主要加密金鑰和建立金鑰。
-
確認區間並輸入金鑰的名稱。例如,輸入
autonomouskey
作為名稱,然後按一下建立金鑰。確認已建立金鑰。
-
按一下加密密碼和建立加密密碼。
-
系統將會建立自治式管理員密碼。輸入下列資訊,然後按一下建立加密密碼。
- 區間: 選取區間。
- 名稱:輸入您第一個加密密碼的名稱。
- 選取手動產生加密密碼以包含密碼。
- 秘密類型範本:輸入
Plain-Text
。 - 秘密內容:輸入您的密碼。
-
您將需要加密密碼 OCID 。若要複製 OCID,請按一下複製。
作業 2:為 OCI 使用者建立原則
在本教學課程中,請考慮您的使用者名稱 TestUser
包含在名為 TestGroup
的群組中。現在,請建立名稱為 TestPolicy
的原則。
這項工作非常重要,因為這會控制保證 Terraform 自動化安全所需的所有權限。
注意:對於此工作,我們必須在 OCI 中以管理使用者登入。
-
前往 OCI 主控台,按一下識別與安全和原則。
-
按一下建立原則。
-
在對帳單區段中,輸入下列政策。
-
這些原則會授予先前在 OCI 資源管理程式中管理堆疊和工作的群組
TestGroup
的權限。- Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration - Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration - Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy
-
此原則有權在區間整合中建立 Oracle Autonomous Database 執行處理。
- Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
-
群組可以透過 Terraform 命令檔讀取 OCI 保存庫中儲存的密碼。
- Allow group 'Default'/'TestGroup' to use secret-family in tenancy
-
此原則有權將 Terraform 命令檔儲存至特定區間。
- Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
-
此原則可讓
TestGroup
的使用者在 OCI 程式碼編輯器中編輯程式碼。- Allow group 'Default'/'TestGroup' to use cloud-shell in tenancy
-
作業 3:從樣板建立堆疊
建立 Oracle Autonomous Database 執行處理的堆疊。我們可以使用此範本。第一步是以「任務 2」中建立的使用者身分登入。
-
前往 OCI 主控台,然後按一下漢堡功能表。
-
按一下開發人員服務和堆疊。
-
選取您的區間,然後按一下建立堆疊。
-
在堆疊資訊頁面中,選取樣板,然後按一下選取樣板以產生 Oracle Autonomous Database 的 Terraform 命令檔。
-
在服務頁籤中,選取 Autonomous Transaction Processing 資料庫,然後按一下選取樣板。
-
您可以產生 Terraform 命令檔並儲存在 OCI 物件儲存的儲存桶中。選取使用自訂 Terraform 提供者,輸入儲存桶區間和名稱,然後儲存您的堆疊。
已儲存您的堆疊。
-
此樣板未讀取您 OCI 保存庫中儲存的加密密碼。若要讓 Terraform 讀取加密密碼,我們需要變更程式碼。
按一下編輯,然後選取在程式碼編輯器編輯 Terraform 組態。
-
您可以編輯代碼。預設程式碼會為密碼產生隨機字串。
-
main.tf
檔案。您必須新增名為
oci_secrets_secretbundle
的新資料,並將其指派給下列屬性:admin_password
,位於autonomous_data_warehouse
和autonomous_database
區段。password
,位於autonomous_database_wallet
區段。
-
main.tf
-autonomous_data_warehouse
區段。data "oci_secrets_secretbundle" "bundle" { secret_id = var.secret_ocid } admin_password = base64decode(data.oci_secrets_secretbundle.bundle.secret_bundle_content.0.content)
-
main.tf
-autonomous_database
區段。 -
main.tf
-autonomous_database_wallet
區段。
在
variables.tf
檔案中新增下列程式碼,並取代在「工作 1」中產生之加密密碼的 OCID。variable "secret_ocid" { default = "ocid1.vaultsecret.oc1.iad.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
-
variables.tf
檔案。
注意:儲存您的檔案。將滑鼠游標移至堆疊上方 (位於編輯器右側的 Autonomous Transaction Processing... 標題),按一下滑鼠右鍵並儲存您的專案。如果您不儲存便離開,執行會假設您在原始程式碼命令檔中使用隨機字串。
-
作業 4:測試權限
您可以測試這些原則,並瞭解如何在特定區間中控制 OCI 資源管理程式、OCI 保存庫及 Oracle Autonomous Database 執行處理。
-
使用您的管理使用者證明資料登入 OCI 主控台,並移除
TestPolicy
原則中TestGroup
群組的所有原則。按一下刪除並確認。 -
現在,使用您的 user 在
TestGroup
群組登入,您看不到堆疊,所以無法執行。 -
使用 Admin user 新增下列敘述句。
Allow group 'Default'/'TestGroup' to manage orm-stacks in compartment integration Allow group 'Default'/'TestGroup' to manage orm-jobs in compartment integration Allow group 'Default'/'TestGroup' to read orm-config-source-providers in tenancy Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes
下列敘述句授予您的
TestGroup
使用者使用 OCI 資源管理程式堆疊的權限。 -
我們已移除授權,讓您的使用者能夠建立 Oracle Autonomous Database 執行處理及讀取 OCI 保存庫中的加密密碼。因此,您可以執行堆疊,但不用成功。若要進行測試,請按一下堆疊詳細資訊頁面中的套用。
-
在
TestPolicy
上新增 Oracle Autonomous Database 和 OCI Vault 權限。Allow group 'Default'/'TestGroup' to manage all-resources in compartment kubernetes Allow group 'Default'/'TestGroup' to manage autonomous-database in compartment integration
-
按一下堆疊詳細資訊頁面中的套用,即可在不顯示任何密碼的情況下,控制所有資源。
工作 5:使用 REST 呼叫 OCI 資源管理程式自動化
OCI 中的所有資源都具有 OCI REST API 或 OCI CLI 命令來呼叫 OCI 主控台中執行的服務。
如需有關 OCI REST API 的詳細資訊,請參閱 OCI REST API 。您可以在此處查看 OCI CLI 命令清單:Oracle Cloud Infrastructure CLI 命令參考。
現在,我們可以選擇使用 OCI REST API 或 OCI CLI 命令執行 OCI 資源管理程式堆疊。若要建立工作,請參閱 CreateJob ,或者您可以使用下列範例程式碼 curl-oci.zip 與使用 OCI 參數準備的 curl-oci.sh
。
您必須建立 REST 要求的簽名。如需詳細資訊,請參閱 Oracle Cloud Infrastructure (OCI) REST 呼叫逐步解說。
-
建立名為
STACK-RUN.sh
的檔案。這將會是您使用curl-oci.sh
的 REST 要求 (此工具將會使用您的 OCI 資訊準備您的授權字串)。 -
使用您的堆疊 ID 和區間 ID 建立一個名為
request.json
的檔案。 -
開啟
curl-oci.sh
檔案並變更下列參數。這些參數與您的 OCI CLI 安裝相同。現在,執行該命令檔。
您可以查看成功結果。
相關連結
認可
- 作者 - Cristiano Hoshikawa (Oracle LAD A 團隊解決方案工程師)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Integrate Oracle Cloud Infrastructure Resource Manager with Automation Process
F98161-01
May 2024