使用 Terraform 配置Databases for PostgreSQL實例
在本教程中,您將學習如何使用 Terraform 來佈建 Databases for PostgreSQL 實例。
可用工具概觀
在開始使用 Terraform 配置資料庫之前,您需要有一個IBM Cloud帳戶。
在本教程中,您將使用 Terraform 來配置資料庫,這使您能夠安全且可預測地建立、變更和改進基礎架構。 它是一個開放原始碼工具,可將 API 編譯成可在團隊成員間共用的宣告式組態檔案,這些檔案會被視為程式碼、進行編輯、審查和版本控制。 這屬於基礎架構即程式碼。 您寫下基礎架構應該是什麼樣子,Terraform 就會根據需要建立、更新和移除雲端資源。 有關更多信息,請參閱 了解 Terraform 的基礎知識。
為了支援多雲端方法,Terraform 會與提供者合作。 提供者負責理解 API 互動並公開資源。IBM Cloud®擁有 Terraform 的提供程序,使IBM Cloud®的使用者能夠使用 Terraform 管理資源。 雖然 Terraform 被分類為基礎架構即程式碼,但適用範圍並不局限於基礎架構即服務資源。 有關更多信息,請參閱 ibm_database。
安裝 Terraform
- 請依照 安裝 Terraform中的步驟安裝 Terraform。
配置IBM Cloud® Provider 插件
-
建立或檢索IBM Cloud® API 金鑰。 API 金鑰用於向IBM Cloud®平台進行驗證,並確定您對IBM Cloud®服務的權限。
-
在IBM Cloud資料庫專案目錄中建立 Terraform。 該目錄包含您在本教程中建立的所有設定檔。 本教程中的目錄名為
tf-postgres,但您可以使用該目錄的任何名稱。mkdir tf-postgres && cd tf-postgres -
在您的專案目錄中,建立一個名為
terraform.tfvars的變數定義文件,並指定您檢索到的IBM Cloud API 金鑰。 此外,您也可以指定要在其中建立IBM Cloud資源的區域。 如果未指定區域,則IBM Cloud® Provider 外掛程式會自動在 us-south 區域建立您的資源。 當IBM Cloud Provider 外掛程式初始化時,Terraform 會自動載入terraform.tfvars檔案中定義的變量,您可以在使用的每個 Terraform 設定檔中引用它們。由於變數定義檔包含機密訊息,請勿將此文件推送到版本控制系統。 此檔案只能存在本機系統中。
terraform.tfvars檔案範例ibmcloud_api_key = "<IBMCLOUD_API_KEY>" region = "us-east"us-east區域僅作為範例提供,而不是必需的。 使用最適合您的實例部署的區域。 -
建立一個提供者設定檔,名稱為
provider.tf。 使用此檔案透過terraform.tfvars檔案中的IBM Cloud IBM Cloud Provider 外掛程式。 該外掛程式使用此金鑰存取IBM Cloud並使用您的IBM Cloud服務。 要從terraform.tfvars檔案存取變數值,必須先在provider.tf檔案中聲明該變量,然後使用var.<variable_name>語法引用該變數。範例
provider.tf文件terraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = ">= 1.28.0" } } } variable "ibmcloud_api_key" {} variable "region" {} provider "ibm" { ibmcloud_api_key = var.ibmcloud_api_key region = var.region }
佈建 Databases for PostgreSQL 實例
建立名為 postgres.tf 的 Terraform 配置檔案。
postgres.tf 檔案範例
```terraform {: codeblock}
resource "ibm_resource_group" "resource_group" {
name = "tutorialRG"
}
resource "ibm_database" "postgresql_db" {
resource_group_id = ibm_resource_group.resource_group.id
name = "terraform_postgres"
service = "databases-for-postgresql"
plan = "standard"
location = "us-east"
service_endpoints = "public"
adminpassword = "password123456789"
group {
group_id = "member"
host_flavor {
id = "multitenant"
}
cpu {
allocation_count = 2
}
memory {
allocation_mb = 4096
}
disk {
allocation_mb = 5120
}
}
}
data "ibm_database_connection" "icd_conn" {
deployment_id = ibm_database.postgresql_db.id
user_type = "database"
user_id = "admin"
endpoint_type = "public"
}
output "Postgresql" {
value = data.ibm_database_connection.icd_conn
}
```
- resource_group_id- 您聲明的資源組值。
- name- 服務名稱可以是任何字串,並且是在 Web 和 CLI 中用於識別新部署的名稱。
- 服務- 對於Databases for PostgreSQL,服務 ID 為
databases-for-postgresql。 為您的部署選擇正確的服務 ID。 - 計劃- 本教程使用標準計劃。 有關更多信息,請參閱 IBM Cloud®定價。
- 位置- 為您的部署執行個體選擇適當的區域。
- service_endpoint- 您的部署的服務端點。本教程中使用了
public,但建議在生產中僅使用private端點。 - adminpassword- Databases for PostgreSQL服務由管理員使用者配置,因此您可以使用其命令列工具
psql來管理PostgreSQL。 有關詳細信息,請參閱 設定管理員密碼。 - 組- 縮放組代表分配給部署的各種資源。 若要查看配置和部署使用
group屬性的資料庫的範例,請參閱 使用群組屬性的範例資料庫實例。 - 群組值- 記憶體、磁碟和 CPU 值皆基於配置Databases for PostgreSQL共享計算實例的最低要求。
- 輸出- 當 terraform 程序完成時,新資料庫的連接資訊將顯示在終端中。
另外,您也可以使用 Terraform IBM Modules(TIM)for Databases for PostgreSQL,這是生產環境的建議方法。 與原始資源不同,此模組提供下列功能:
- 包含 README 檔案和範例的完整說明文件
- 使用不同範例的多重部署情境
- 受控制的版本安全更新和更容易的相依性管理
- 安全、可擴充且符合規定的企業就緒配置
若要建立一個名為 postgres.tf 的 Terraform 設定檔,請執行下列步驟
postgres.tf 檔案範例
resource "ibm_resource_group" "resource_group" {
name = "Default"
}
module "postgresql_db" {
source = "terraform-ibm-modules/icd-postgresql/ibm"
version = "latest" # Replace "latest" with a release version to lock into a specific release
resource_group_id = ibm_resource_group.resource_group.id
name = "my-instance"
region = "us-south"
}
測試您的配置
現在您已為資源配置了IBM Cloud® Provider 插件,您可以在IBM Cloud®上使用 Terraform 來初始化、執行、規劃和應用指令來設定資源。 您需要下列指令:
| 命令說明 | 指令 |
|---|---|
terraform init |
terraform init 指令用於初始化包含 Terraform 設定檔的工作目錄。 |
terraform fmt |
terraform fmt 指令用於將 Terraform 設定檔重寫為規範格式和樣式。 |
terraform validate |
terraform validate 命令驗證目錄中的設定文件 |
terraform apply |
terraform apply 命令運行 Terraform 計劃中建議的操作。 |
有關更多信息,請參閱 配置IBM Cloud®資源。
若要查看範例 Terraform 範本以及要測試的完整 Terraform 配置文件,請參閱範例 範本。
有關可使用的 Terraform 資源和資料來源的概述,請參閱 IBM Cloud®資源和資料來源上的 Terraform 索引。