Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Artykuł przetestowany z następującymi wersjami programu Terraform i dostawcy programu Terraform:
Narzędzie Terraform umożliwia definiowanie, wyświetlanie wersji zapoznawczej i wdrażanie infrastruktury chmury. Za pomocą narzędzia Terraform tworzysz pliki konfiguracji przy użyciu składni HCL. Składnia listy HCL umożliwia określenie dostawcy chmury — takiego jak platforma Azure — oraz elementów tworzących infrastrukturę chmury. Po utworzeniu plików konfiguracji utworzysz plan wykonywania, który umożliwia wyświetlenie podglądu zmian infrastruktury przed ich wdrożeniem. Po zweryfikowaniu zmian należy zastosować plan wykonywania w celu wdrożenia infrastruktury.
W tym artykule pokazano, jak wdrożyć bazę danych serwera elastycznego PostgreSQL przy użyciu narzędzia Terraform.
W tym artykule dowiesz się, jak:
- Tworzenie grupy zasobów platformy Azure przy użyciu azurerm_resource_group
- Tworzenie sieci wirtualnej platformy Azure przy użyciu azurerm_virtual_network
- Tworzenie sieciowej grupy zabezpieczeń platformy Azure przy użyciu azurerm_network_security_group
- Utwórz subnet azurerm_subnet platformy Azure
- Utwórz grupę zabezpieczeń sieciowych podsieci Azure przy użyciu azurerm_subnet_network_security_group_association
- Definiowanie prywatnej strefy DNS w usłudze Azure DNS przy użyciu azurerm_private_dns_zone
- Zdefiniuj łącze prywatnej strefy DNS do sieci wirtualnej przy użyciu azurerm_private_dns_zone_virtual_network_link
- Wdrażanie serwera elastycznego Usługi Azure PostgreSQL, na którym działa baza danych przy użyciu azurerm_postgresql_flexible_server
- Utwórz wystąpienie bazy danych Azure PostgreSQL przy użyciu azurerm_postgresql_flexible_server_database
Uwaga / Notatka
Przykładowy kod w tym artykule znajduje się w repozytorium GitHub programu Azure Terraform.
1. Konfigurowanie środowiska
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Skonfiguruj program Terraform: jeśli jeszcze tego nie zrobiono, skonfiguruj program Terraform przy użyciu jednej z następujących opcji:
2. Implementowanie kodu programu Terraform
Utwórz katalog, w którym chcesz przetestować i uruchomić przykładowy kod programu Terraform i utworzyć go jako bieżący katalog.
Utwórz plik o nazwie
providers.tfi wstaw następujący kod: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 {} }Utwórz plik o nazwie
main.tfi wstaw następujący kod, aby wdrożyć serwer elastyczny PostgreSQL, na którym działa baza danych.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] }Utwórz plik o nazwie
postgresql-fs-db.tfi wstaw następujący kod, aby zainicjować bazę danych.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" }Utwórz plik o nazwie
variables.tfi wstaw następujący kod:variable "name_prefix" { default = "postgresqlfs" description = "Prefix of the resource name." } variable "location" { default = "eastus" description = "Location of the resource." }Utwórz plik o nazwie
outputs.tfi wstaw następujący kod, aby wyświetlić nazwę grupy zasobów, nazwę serwera usługi Azure PostgreSQL i nazwę bazy danych Azure PostgreSQL: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. Inicjowanie programu Terraform
Uruchom terraform init, aby zainicjalizować wdrożenie Terraform. Polecenie to pobiera dostawcę Azure wymaganego do zarządzania zasobami Azure.
terraform init -upgrade
Kluczowe punkty:
- Parametr
-upgradeuaktualnia niezbędne wtyczki dostawcy do najnowszej wersji, która jest zgodna z ograniczeniami wersji konfiguracji.
4. Tworzenie planu wykonywania programu Terraform
Uruchom terraform plan, aby utworzyć plan realizacji.
terraform plan -out main.tfplan
Kluczowe punkty:
- Polecenie
terraform plantworzy plan wykonania, ale nie wykonuje go. Zamiast tego, określa, jakie działania są niezbędne do stworzenia konfiguracji określonej w plikach konfiguracyjnych. Ten wzorzec pozwala Ci zweryfikować, czy plan wykonania spełnia Twoje oczekiwania, zanim wprowadzisz jakiekolwiek zmiany do rzeczywistych zasobów. - Opcjonalny parametr
-outpozwala określić plik wyjściowy dla planu. Użycie parametru-outzapewnia, że plan, który przejrzałeś, zostanie dokładnie zastosowany.
5. Stosowanie planu wykonywania programu Terraform
Uruchom terraform apply, aby zastosować plan wykonawczy do infrastruktury chmury.
terraform apply main.tfplan
Kluczowe punkty:
- Przykładowe polecenie
terraform applyzakłada, że wcześniej uruchomiono polecenieterraform plan -out main.tfplan. - Jeśli podałeś inną nazwę pliku dla parametru
-out, użyj tej samej nazwy pliku w wywołaniuterraform apply. - Jeśli nie użyłeś parametru
-out, wywołajterraform applybez żadnych parametrów.
6. Sprawdź wyniki
Uruchom polecenie az postgres flexible-server db show, aby wyświetlić bazę danych Azure PostgreSQL.
az postgres flexible-server db show --resource-group <resource_group_name> --server-name <server_name> --database-name <database_name>
Kluczowe punkty:
- Wartości ,
<resource_group_name><server_name>i<database_name>są wyświetlane w danych wyjściowychterraform apply.
7. Czyszczenie zasobów
Jeśli zasoby utworzone za pomocą narzędzia Terraform nie są już potrzebne, wykonaj następujące czynności:
Uruchom terraform plan oraz określ flagę
destroy.terraform plan -destroy -out main.destroy.tfplanKluczowe punkty:
- Polecenie
terraform plantworzy plan wykonania, ale nie wykonuje go. Zamiast tego, określa, jakie działania są niezbędne do stworzenia konfiguracji określonej w plikach konfiguracyjnych. Ten wzorzec pozwala Ci zweryfikować, czy plan wykonania spełnia Twoje oczekiwania, zanim wprowadzisz jakiekolwiek zmiany do rzeczywistych zasobów. - Opcjonalny parametr
-outpozwala określić plik wyjściowy dla planu. Użycie parametru-outzapewnia, że plan, który przejrzałeś, zostanie dokładnie zastosowany.
- Polecenie
Uruchom terraform apply, aby wdrożyć plan realizacji.
terraform apply main.destroy.tfplan
Rozwiązywanie problemów z programem Terraform na platformie Azure
Rozwiązywanie typowych problemów podczas korzystania z narzędzia Terraform na platformie Azure