Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A cikk a következő Terraform- és Terraform-szolgáltatói verziókkal lett tesztelve:
A Terraform lehetővé teszi a felhőinfrastruktúra definícióját, előzetes verzióját és üzembe helyezését. A Terraform használatával konfigurációs fájlokat hozhat létre HCL-szintaxissal. A HCL szintaxissal megadhatja a felhőszolgáltatót – például az Azure-t – és a felhőinfrastruktúra elemeit. A konfigurációs fájlok létrehozása után létrehoz egy végrehajtási tervet , amely lehetővé teszi az infrastruktúra változásainak előzetes megtekintését az üzembe helyezés előtt. A módosítások ellenőrzése után alkalmazza a végrehajtási tervet az infrastruktúra üzembe helyezésére.
Ez a cikk bemutatja, hogyan helyezhet üzembe rugalmas PostgreSQL-kiszolgálóadatbázist a Terraform használatával.
Ebből a cikkből megtudhatja, hogyan:
- Azure-erőforráscsoport létrehozása azurerm_resource_group
- Azure-beli virtuális hálózat (VNet) létrehozása azurerm_virtual_network
- Azure Hálózati biztonsági csoport (NSG) létrehozása azurerm_network_security_group
- Azure-alhálózati azurerm_subnet létrehozása
- Azure alhálózathoz tartozó Hálózati Biztonsági Csoport (NSG) létrehozása azurerm_subnet_network_security_group_association
- Privát DNS-zóna definiálása egy Azure DNS-ben a azurerm_private_dns_zone használatával
- Privát DNS-zóna virtuális hálózati hivatkozásának definiálása azurerm_private_dns_zone_virtual_network_link használatával
- Helyezzen üzembe egy rugalmas Azure PostgreSQL-kiszolgálót, amelyen az adatbázis az azurerm_postgresql_flexible_server használatával fut.
- Azure PostgreSQL-adatbázis létrehozása az azurerm_postgresql_flexible_server_database használatával
Megjegyzés:
A cikkben szereplő példakód az Azure Terraform GitHub-adattárban található.
1. A környezet konfigurálása
- Azure-előfizetés: Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .
A Terraform konfigurálása: Ha még nem tette meg, konfigurálja a Terraformot az alábbi lehetőségek egyikével:
2. A Terraform-kód implementálása
Hozzon létre egy könyvtárat, amelyben tesztelheti és futtathatja a Terraform-mintakódot, és az aktuális könyvtárá teheti.
Hozzon létre egy
providers.tfnevű fájlt, és szúrja be a következő kódot:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = ">= 3.4.0" } } } provider "azurerm" { features {} }Hozzon létre egy elnevezett
main.tffájlt, és szúrja be a következő kódot a rugalmas PostgreSQL-kiszolgáló üzembe helyezéséhez, amelyen az adatbázis fut.resource "random_pet" "name_prefix" { prefix = var.name_prefix length = 1 } resource "azurerm_resource_group" "default" { name = random_pet.name_prefix.id location = var.location } resource "azurerm_virtual_network" "default" { name = "${random_pet.name_prefix.id}-vnet" location = azurerm_resource_group.default.location resource_group_name = azurerm_resource_group.default.name address_space = ["10.0.0.0/16"] } resource "azurerm_network_security_group" "default" { name = "${random_pet.name_prefix.id}-nsg" location = azurerm_resource_group.default.location resource_group_name = azurerm_resource_group.default.name security_rule { name = "test123" priority = 100 direction = "Inbound" access = "Allow" protocol = "Tcp" source_port_range = "*" destination_port_range = "*" source_address_prefix = "*" destination_address_prefix = "*" } } resource "azurerm_subnet" "default" { name = "${random_pet.name_prefix.id}-subnet" virtual_network_name = azurerm_virtual_network.default.name resource_group_name = azurerm_resource_group.default.name address_prefixes = ["10.0.2.0/24"] service_endpoints = ["Microsoft.Storage"] delegation { name = "fs" service_delegation { name = "Microsoft.DBforPostgreSQL/flexibleServers" actions = [ "Microsoft.Network/virtualNetworks/subnets/join/action", ] } } } resource "azurerm_subnet_network_security_group_association" "default" { subnet_id = azurerm_subnet.default.id network_security_group_id = azurerm_network_security_group.default.id } resource "azurerm_private_dns_zone" "default" { name = "${random_pet.name_prefix.id}-pdz.postgres.database.azure.com" resource_group_name = azurerm_resource_group.default.name depends_on = [azurerm_subnet_network_security_group_association.default] } resource "azurerm_private_dns_zone_virtual_network_link" "default" { name = "${random_pet.name_prefix.id}-pdzvnetlink.com" private_dns_zone_name = azurerm_private_dns_zone.default.name virtual_network_id = azurerm_virtual_network.default.id resource_group_name = azurerm_resource_group.default.name } resource "random_password" "pass" { length = 20 } resource "azurerm_postgresql_flexible_server" "default" { name = "${random_pet.name_prefix.id}-server" resource_group_name = azurerm_resource_group.default.name location = azurerm_resource_group.default.location version = "13" delegated_subnet_id = azurerm_subnet.default.id private_dns_zone_id = azurerm_private_dns_zone.default.id administrator_login = "adminTerraform" administrator_password = random_password.pass.result zone = "1" storage_mb = 32768 sku_name = "GP_Standard_D2s_v3" backup_retention_days = 7 depends_on = [azurerm_private_dns_zone_virtual_network_link.default] }Hozzon létre egy fájlt,
postgresql-fs-db.tfés szúrja be a következő kódot az adatbázis példányosításához:resource "azurerm_postgresql_flexible_server_database" "default" { name = "${random_pet.name_prefix.id}-db" server_id = azurerm_postgresql_flexible_server.default.id collation = "en_US.utf8" charset = "UTF8" }Hozzon létre egy
variables.tfnevű fájlt, és szúrja be a következő kódot:variable "name_prefix" { default = "postgresqlfs" description = "Prefix of the resource name." } variable "location" { default = "eastus" description = "Location of the resource." }Hozzon létre egy elnevezett
outputs.tffájlt, és szúrja be a következő kódot az erőforráscsoport nevének, az Azure PostgreSQL-kiszolgáló nevének és az Azure PostgreSQL-adatbázis nevének kimenetéhez:output "resource_group_name" { value = azurerm_resource_group.default.name } output "azurerm_postgresql_flexible_server" { value = azurerm_postgresql_flexible_server.default.name } output "postgresql_flexible_server_database_name" { value = azurerm_postgresql_flexible_server_database.default.name } output "postgresql_flexible_server_admin_password" { sensitive = true value = azurerm_postgresql_flexible_server.default.administrator_password }
3. A Terraform inicializálása
Futtassa a Terraform init parancsot a Terraform üzembe helyezésének inicializálásához. Ez a parancs letölti az Azure-erőforrások kezeléséhez szükséges Azure-szolgáltatót.
terraform init -upgrade
Főbb pontok:
- A
-upgradeparaméter frissíti a szükséges szolgáltatói beépülő modulokat a legújabb verzióra, amely megfelel a konfiguráció verziókorlátozásainak.
4. Terraform végrehajtási terv létrehozása
Végrehajtási terv létrehozásához futtassa a Terraform-tervet .
terraform plan -out main.tfplan
Főbb pontok:
- A
terraform planparancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat. - Az opcionális
-outparaméter lehetővé teszi a terv kimeneti fájljának megadását. A-outparaméter használatával biztosítható, hogy az ön által áttekintett terv pontosan az alkalmazott legyen.
5. Terraform végrehajtási terv alkalmazása
Futtassa a terraform apply parancsot, hogy alkalmazza a végrehajtási tervet a felhőinfrastruktúrára.
terraform apply main.tfplan
Főbb pontok:
- A példaparancs
terraform applyfeltételezi, hogy korábban lefuttattad aterraform plan -out main.tfplanparancsot. - Ha másik fájlnevet adott meg a
-outparaméterhez, használja ugyanazt a fájlnevet aterraform applyhívásában. - Ha nem használta a
-outparamétert, hívja meg aterraform applyparaméterek nélkül.
6. Ellenőrizze az eredményeket
Futtassa a az postgres flexible-server db show parancsot az Azure PostgreSQL-adatbázis megjelenítéséhez.
az postgres flexible-server db show --resource-group <resource_group_name> --server-name <server_name> --database-name <database_name>
Főbb pontok:
- A ,
<resource_group_name>értékeket<server_name><database_name>a kimenetbenterraform applyjeleníti meg.
7. Erőforrások törlése
Ha már nincs szüksége a Terraformon keresztül létrehozott erőforrásokra, hajtsa végre az alábbi lépéseket:
Futtassa a terraform plan parancsot, és adja meg a
destroyflag-et.terraform plan -destroy -out main.destroy.tfplanFőbb pontok:
- A
terraform planparancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat. - Az opcionális
-outparaméter lehetővé teszi a terv kimeneti fájljának megadását. A-outparaméter használatával biztosítható, hogy az ön által áttekintett terv pontosan az alkalmazott legyen.
- A
A végrehajtási terv alkalmazásához futtassa a terraform apply.
terraform apply main.destroy.tfplan
A Terraform hibaelhárítása az Azure-ban
A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása