Konfigurowanie narzędzia Terraform w usłudze Azure Cloud Shell przy użyciu powłoki Bash
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 przedstawiono opcje uwierzytelniania na platformie Azure w celu użycia z programem Terraform.
W tym artykule omówiono sposób wykonywania następujących zadań:
- Konfigurowanie usługi Cloud Shell
- Wyświetlanie bieżącego konta platformy Azure
- Omówienie typowych scenariuszy uwierzytelniania programu Terraform i platformy Azure
- Uwierzytelnianie za pomocą konta Microsoft z usługi Cloud Shell (przy użyciu powłoki Bash lub programu PowerShell)
- Uwierzytelnianie za pomocą konta Microsoft z systemu Windows (przy użyciu powłoki Bash lub programu PowerShell)
- Tworzenie jednostki usługi przy użyciu interfejsu wiersza polecenia platformy Azure
- Tworzenie jednostki usługi przy użyciu programu Azure PowerShell
- Określanie poświadczeń jednostki usługi w zmiennych środowiskowych
- Określanie poświadczeń jednostki usługi w bloku dostawcy programu Terraform
1. Konfigurowanie środowiska
- Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
2. Otwórz usługę Cloud Shell
Jeśli masz już otwartą sesję usługi Cloud Shell, możesz przejść do następnej sekcji.
Przejdź do witryny Azure Portal
W razie potrzeby zaloguj się do subskrypcji platformy Azure i zmień katalog platformy Azure.
Otwórz usługę Cloud Shell.
Jeśli wcześniej nie użyto usługi Cloud Shell, skonfiguruj ustawienia środowiska i magazynu.
Wybierz środowisko wiersza polecenia.
3. Zainstaluj najnowszą wersję programu Terraform w usłudze Azure Cloud Shell
Usługa Cloud Shell automatycznie aktualizuje najnowszą wersję programu Terraform. Jednak aktualizacje są dostępne w ciągu kilku tygodni od wydania. W tym artykule pokazano, jak pobrać i zainstalować bieżącą wersję programu Terraform.
Określ wersję narzędzia Terraform używanego w usłudze Cloud Shell.
terraform version
Jeśli wersja programu Terraform zainstalowana w usłudze Cloud Shell nie jest najnowszą wersją, zostanie wyświetlony komunikat informujący, że wersja programu Terraform jest nieaktualna.
Jeśli pracujesz z wskazaną wersją, przejdź do następnej sekcji. W przeciwnym razie wykonaj następujące kroki.
Przejdź do strony pobierania programu Terraform.
Przewiń w dół do linków pobierania systemu Linux .
Przenieś wskaźnik myszy na łącze 64-bitowe . Ten link jest przeznaczony dla najnowszej 64-bitowej wersji amd z systemem Linux, która jest odpowiednia dla usługi Cloud Shell.
Skopiuj adres URL.
Uruchom
curl
polecenie , zastępując symbol zastępczy adresem URL z poprzedniego kroku.curl -O <terraform_download_url>
Rozpakuj plik.
unzip <zip_file_downloaded_in_previous_step>
Jeśli katalog nie istnieje, utwórz katalog o nazwie
bin
.mkdir bin
terraform
Przenieś plik dobin
katalogu.mv terraform bin/
Zamknij i uruchom ponownie usługę Cloud Shell.
Sprawdź, czy pobrana wersja programu Terraform jest najpierw w ścieżce.
terraform version
4. Sprawdź domyślną subskrypcję platformy Azure
Po zalogowaniu się do witryny Azure Portal przy użyciu konta Microsoft używana jest domyślna subskrypcja platformy Azure dla tego konta.
Narzędzie Terraform automatycznie uwierzytelnia się przy użyciu informacji z domyślnej subskrypcji platformy Azure.
Uruchom polecenie az account show , aby zweryfikować bieżące konto Microsoft i subskrypcję platformy Azure.
az account show
Wszelkie zmiany wprowadzone za pośrednictwem narzędzia Terraform znajdują się w wyświetlanej subskrypcji platformy Azure. Jeśli chcesz, pomiń pozostałą część tego artykułu.
5. Uwierzytelnianie narzędzia Terraform na platformie Azure
Scenariusze uwierzytelniania programu Terraform i platformy Azure
Narzędzie Terraform obsługuje tylko uwierzytelnianie na platformie Azure za pośrednictwem interfejsu wiersza polecenia platformy Azure. Uwierzytelnianie przy użyciu programu Azure PowerShell nie jest obsługiwane. W związku z tym podczas wykonywania pracy narzędzia Terraform możesz użyć modułu Azure PowerShell, ale najpierw musisz uwierzytelnić się na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
W tym artykule wyjaśniono, jak uwierzytelnić narzędzie Terraform na platformie Azure w następujących scenariuszach. Aby uzyskać więcej informacji na temat opcji uwierzytelniania programu Terraform na platformie Azure, zobacz Uwierzytelnianie przy użyciu interfejsu wiersza polecenia platformy Azure.
- Uwierzytelnianie za pośrednictwem konta Microsoft przy użyciu usługi Cloud Shell (z powłoką Bash lub programem PowerShell)
- Uwierzytelnianie za pośrednictwem konta Microsoft przy użyciu systemu Windows (z powłoką Bash lub programem PowerShell)
- Uwierzytelnianie za pośrednictwem jednostki usługi:
Uwierzytelnianie na platformie Azure za pośrednictwem konta Microsoft
Konto Microsoft to nazwa użytkownika (skojarzona z adresem e-mail i jego poświadczeniami), która służy do logowania się do usługi firmy Microsoft — na przykład platformy Azure. Konto Microsoft może być skojarzone z co najmniej jedną subskrypcją platformy Azure, z jedną z tych subskrypcji jest domyślna.
W poniższych krokach pokazano, jak to zrobić:
- Logowanie do platformy Azure interaktywnie przy użyciu konta Microsoft
- Wyświetlanie listy skojarzonych subskrypcji platformy Azure konta (w tym domyślnych)
- Ustaw bieżącą subskrypcję.
Otwórz wiersz polecenia, który ma dostęp do interfejsu wiersza polecenia platformy Azure.
Uruchom polecenie az login bez żadnych parametrów i postępuj zgodnie z instrukcjami, aby zalogować się do platformy Azure.
az login
Kluczowe punkty:
- Po pomyślnym zalogowaniu
az login
zostanie wyświetlona lista subskrypcji platformy Azure skojarzonych z zalogowanym kontem Microsoft, w tym domyślną subskrypcją.
- Po pomyślnym zalogowaniu
Aby potwierdzić bieżącą subskrypcję platformy Azure, uruchom polecenie az account show.
az account show
Aby wyświetlić wszystkie nazwy i identyfikatory subskrypcji platformy Azure dla określonego konta Microsoft, uruchom polecenie az account list.
az account list --query "[?user.name=='<microsoft_account_email>'].{Name:name, ID:id, Default:isDefault}" --output Table
Kluczowe punkty:
- Zastąp
<microsoft_account_email>
symbol zastępczy adresem e-mail konta Microsoft, którego subskrypcje platformy Azure chcesz wyświetlić. - W przypadku konta na żywo — takiego jak Hotmail lub Outlook — może być konieczne określenie w pełni kwalifikowanego adresu e-mail. Jeśli na przykład adres e-mail to
admin@hotmail.com
, może być konieczne zastąpienie symbolu zastępczego symbolemlive.com#admin@hotmail.com
.
- Zastąp
Aby użyć określonej subskrypcji platformy Azure, uruchom polecenie az account set.
az account set --subscription "<subscription_id_or_subscription_name>"
Kluczowe punkty:
<subscription_id_or_subscription_name>
Zastąp symbol zastępczy identyfikatorem lub nazwą subskrypcji, której chcesz użyć.- Wywołanie
az account set
nie wyświetla wyników przełączania się do określonej subskrypcji platformy Azure. Możesz jednak użyćaz account show
polecenia , aby potwierdzić, że bieżąca subskrypcja platformy Azure uległa zmianie. - Jeśli uruchomisz
az account list
polecenie z poprzedniego kroku, zobaczysz, że domyślna subskrypcja platformy Azure została zmieniona na subskrypcję określoną za pomocąaz account set
polecenia .
Tworzenie jednostki usługi
Zautomatyzowane narzędzia do wdrażania lub używania usług platformy Azure , takich jak Terraform, powinny zawsze mieć ograniczone uprawnienia. Zamiast logowania się do aplikacji jako w pełni uprzywilejowany użytkownik, platforma Azure oferuje nazwy głównej usługi.
Najczęstszym wzorcem jest interakcyjne logowanie się do platformy Azure, tworzenie jednostki usługi, testowanie jednostki usługi, a następnie używanie tej jednostki usługi do przyszłego uwierzytelniania (interaktywnie lub ze skryptów).
Aby utworzyć jednostkę usługi, zaloguj się na platformie Azure. Po uwierzytelnieniu na platformie Azure za pośrednictwem konta Microsoft wróć tutaj.
Jeśli tworzysz jednostkę usługi na podstawie powłoki Git Bash, ustaw zmienną
MSYS_NO_PATHCONV
środowiskową. (Ten krok nie jest konieczny, jeśli używasz usługi Cloud Shell).export MSYS_NO_PATHCONV=1
Kluczowe punkty:
- Zmienną
MSYS_NO_PATHCONV
środowiskową można ustawić globalnie (dla wszystkich sesji terminalu) lub lokalnie (tylko dla bieżącej sesji). Ponieważ tworzenie jednostki usługi nie jest często czymś, co robisz, przykład ustawia wartość bieżącej sesji. Aby ustawić tę zmienną środowiskową globalnie, dodaj ustawienie do~/.bashrc
pliku.
- Zmienną
Aby utworzyć jednostkę usługi, uruchom polecenie az ad sp create-for-rbac.
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Kluczowe punkty:
- Możesz zastąpić
<service-principal-name>
element nazwą niestandardową środowiska lub całkowicie pominąć parametr . Jeśli pominięto parametr, nazwa główna usługi jest generowana na podstawie bieżącej daty i godziny. - Po pomyślnym zakończeniu
az ad sp create-for-rbac
zostanie wyświetlonych kilka wartości. WartościappId
,password
itenant
są używane w następnym kroku. - Nie można pobrać hasła, jeśli zostanie utracone. W związku z tym należy przechowywać hasło w bezpiecznym miejscu. Jeśli zapomnisz hasło, możesz zresetować poświadczenia jednostki usługi.
- W tym artykule jest używana jednostka usługi z rolą Współautor . Aby uzyskać więcej informacji na temat ról kontroli dostępu opartej na rolach (RBAC), zobacz Kontrola dostępu oparta na rolach: role wbudowane.
- Dane wyjściowe z tworzenia jednostki usługi zawierają poufne poświadczenia. Upewnij się, że nie dołączysz tych poświadczeń do kodu lub sprawdź poświadczenia w kontroli źródła.
- Aby uzyskać więcej informacji na temat opcji tworzenia jednostki usługi przy użyciu interfejsu wiersza polecenia platformy Azure, zobacz artykuł Tworzenie jednostki usługi platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
- Możesz zastąpić
Określanie poświadczeń jednostki usługi w zmiennych środowiskowych
Po utworzeniu jednostki usługi można określić jego poświadczenia w programie Terraform za pomocą zmiennych środowiskowych.
Edytuj plik,
~/.bashrc
dodając następujące zmienne środowiskowe.export ARM_SUBSCRIPTION_ID="<azure_subscription_id>" export ARM_TENANT_ID="<azure_subscription_tenant_id>" export ARM_CLIENT_ID="<service_principal_appid>" export ARM_CLIENT_SECRET="<service_principal_password>"
Aby wykonać
~/.bashrc
skrypt, uruchom poleceniesource ~/.bashrc
(lub jego skrócony odpowiednik. ~/.bashrc
). Możesz również zamknąć i ponownie otworzyć usługę Cloud Shell, aby skrypt był uruchamiany automatycznie.. ~/.bashrc
Po ustawieniu zmiennych środowiskowych można zweryfikować ich wartości w następujący sposób:
printenv | grep ^ARM*
Kluczowe punkty:
- Podobnie jak w przypadku dowolnej zmiennej środowiskowej, aby uzyskać dostęp do wartości subskrypcji platformy Azure z poziomu skryptu programu Terraform, użyj następującej składni:
${env.<environment_variable>}
. Aby na przykład uzyskać dostęp doARM_SUBSCRIPTION_ID
wartości, określ wartość${env.ARM_SUBSCRIPTION_ID}
. - Tworzenie i stosowanie planów wykonywania programu Terraform powoduje zmiany w subskrypcji platformy Azure skojarzonej z jednostką usługi. Ten fakt może czasami być mylący, jeśli logujesz się do jednej subskrypcji platformy Azure, a zmienne środowiskowe wskazują drugą subskrypcję platformy Azure. Przyjrzyjmy się poniższemu przykładowi, aby wyjaśnić. Załóżmy, że masz dwie subskrypcje platformy Azure: SubA i SubB. Jeśli bieżąca subskrypcja platformy Azure to SubA (określona za pośrednictwem
az account show
), podczas gdy zmienne środowiskowe wskazują subB, wszelkie zmiany wprowadzone przez narzędzie Terraform są w podb. W związku z tym należy zalogować się do subskrypcji SubB, aby uruchomić polecenia interfejsu wiersza polecenia platformy Azure lub polecenia programu Azure PowerShell, aby wyświetlić zmiany.
Określanie poświadczeń jednostki usługi w bloku dostawcy programu Terraform
Blok dostawcy platformy Azure definiuje składnię, która umożliwia określenie informacji o uwierzytelnianiu subskrypcji platformy Azure.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>2.0"
}
}
}
provider "azurerm" {
features {}
subscription_id = "<azure_subscription_id>"
tenant_id = "<azure_subscription_tenant_id>"
client_id = "<service_principal_appid>"
client_secret = "<service_principal_password>"
}
# Your code goes here
Uwaga
Możliwość określenia poświadczeń subskrypcji platformy Azure w pliku konfiguracji programu Terraform może być wygodna — szczególnie podczas testowania. Jednak nie zaleca się przechowywania poświadczeń w pliku zwykłego tekstu, który może być wyświetlany przez osoby nieuwierzyte.
Rozwiązywanie problemów z programem Terraform na platformie Azure
Rozwiązywanie typowych problemów podczas korzystania z narzędzia Terraform na platformie Azure
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla