Jak działa usługa Azure Export for Terraform

W tym artykule przedstawiono przepływy pracy usługi Azure Export for Terraform . W tym artykule poznasz wskazówki dotyczące najlepszych rozwiązań narzędzia, bieżące ograniczenia i sposoby ograniczania tych ograniczeń.

Tryb interaktywny

Domyślnie usługa Azure Export for Terraform jest uruchamiana w trybie interaktywnym. Po uruchomieniu w trybie interaktywnym dostępne skróty klawiaturowe są wyświetlane w dolnej części ekranu.

Zadanie Skróty klawiaturowe
Nawigacja
Wybierz poprzedni element na liście zasobów. ^ -or- k
Wybierz następny element na liście zasobów. lub j
Przejdź do poprzedniej strony na liście zasobów. ← -lub- h -lub- strona w górę
Przejdź do następnej strony na liście zasobów. → -lub- l -lub- stronicuj w dół
Przejdź do początku listy zasobów. g -or- Strona główna
Przejdź do końca listy zasobów. G -lub — koniec
Wybieranie zasobów do pominięcia
Pomiń zasób (lub usuń zaznaczenie, jeśli jest oznaczony jako "Pomiń") Usuń
Operacje filtrowania
Zdefiniuj filtr według tekstu na liście zasobów. /
Wyczyść dowolny bieżący filtr Esc
Zapisywanie operacji
Zapisz plik mapowania listy zasobów. Na plik wyjściowy ma wpływ pomijanie (ale nie filtrowanie). s
Wyeksportuj zasoby do stanu (jeśli --hcl-only nie zostanie określony) i wygeneruj konfigurację. W
Środowisko użytkownika
Wyświetl zalecenia dotyczące bieżącego zasobu. R
Pokaż błędy eksportu zasobów (jeśli istnieją). e
Wyświetl pomoc. ?
Zamknij
Zamknij tryb interaktywny. P

Dla każdego zasobu usługa Azure Export for Terraform próbuje rozpoznać odpowiedni typ zasobu programu Terraform. Jeśli znajdzie dopasowanie, wiersz jest oznaczony następującym wskaźnikiem: 💡.

Jeśli nie można rozpoznać zasobu, musisz wprowadzić adres zasobu programu Terraform w następującym formularzu: <resource type>.<resource name>. Na przykład azurerm_linux_virtual_machine.test odwołuje się do typu zasobu programu Terraform azurerm_linux_virtual_machine podczas gdy test nazwa maszyny wirtualnej używanej w plikach konfiguracji.

Aby wyświetlić dostępne typy zasobów dla wybranego zasobu, naciśnij przycisk r.

W niektórych przypadkach istnieją zasoby platformy Azure, które nie mają odpowiednich zasobów programu Terraform, na przykład jeśli zasób nie obsługuje narzędzia Terraform. Niektóre zasoby mogą być również tworzone jako efekt uboczny aprowizacji innego zasobu — takiego jak zasób dysku systemu operacyjnego utworzony podczas aprowizowania maszyny wirtualnej. W takich przypadkach można pominąć zasoby bez przypisywania niczego.

Po przejściu przez wszystkie zasoby do zaimportowania naciśnij klawisz w , aby rozpocząć generowanie konfiguracji programu Terraform i (jeśli --hcl-only nie jest zaznaczone) importowanie do stanu narzędzia Terraform.

Tryb nieinterakcyjny

Domyślnie usługa Azure Export for Terraform jest uruchamiana w trybie interaktywnym. Aby określić, że narzędzie powinno działać w trybie nieinterakcyjnym, określ flagę --non-interactive .

aztfexport [command] --non-interactive <scope>

Ważne

Jeśli katalog, w którym uruchomiono usługę Azure Export for Terraform, nie jest pusty, musisz dodać flagę --overwrite , aby użyć flagi --hcl-only .

Najlepsze rozwiązania dotyczące podstawowych przepływów pracy

Na podstawowym poziomie każdy użytkownik usługi Azure Export podejmuje decyzję między dwiema opcjami:

Poniższe podsekcje zawierają wskazówki dotyczące opcji, która ma być oparta na scenariuszu.

Zarządzanie infrastrukturą

Może nie być konieczne eksportowanie do stanu, jeśli skonfigurowane zasoby nie zachowują się w danym środowisku w żądany sposób.

Jeśli na pewno chcesz zarządzać zestawem zasobów w narzędziu Terraform z terraform init plan apply przepływami pracy, eksportowanie do stanu jest niezbędne.

Jeśli nie masz pewności, że chcesz jeszcze zarządzać zasobami, zalecane jest przekazanie flagi --hcl-only .

Istniejąca infrastruktura

W scenariuszach, w których eksportujesz do istniejących środowisk terraform, warto rozważyć --hcl-only jako odpowiednik planu terraform, szczególnie przed dołączeniem do istniejących środowisk.

Polecenie terraform apply odpowiada eksportowaniu zasobów — podczas których ich konfiguracja wiąże się ze stanem wcześniej istniejącym. W tym scenariuszu użycie pliku mapowania pozwala zaoszczędzić czas wykonywania w celu wyświetlenia listy i mapowania zasobów.

Odnajdywanie infrastruktury

Jeśli nie masz pewności, jakie zasoby istnieją w środowisku, możesz sprawdzić, określając flagę --generate-mapping-file . Aby uzyskać więcej informacji na temat tego tematu, zobacz Eksplorowanie dostosowanego wyboru zasobów i nazewnictwa przy użyciu usługi Azure Export for Terraform.

Ograniczenia

Azure Export for Terraform to złożone narzędzie, które próbuje przekonwertować infrastrukturę platformy Azure na kod i stan narzędzia Terraform. Obecne znane ograniczenia zostały wyjaśnione w poniższych podsekcjach.

Właściwości tylko do zapisu

Niektóre właściwości w module AzureRM są tylko do zapisu i nie są uwzględniane w wygenerowanym kodzie tworzonym przez usługę Azure Export for Terraform. Problem został rozwiązany przez zdefiniowanie właściwości po wyeksportowaniu do kodu HCL.

Ograniczenia między właściwościami

Dostawca modułu AzureRM może ustawić dwie właściwości, które powodują konflikt ze sobą. Gdy usługa Azure Export for Terraform odczytuje właściwości powodujące konflikt, może ustawić obie właściwości na tę samą wartość, mimo że użytkownik konfiguruje tylko jeden. Dalsze komplikacje pojawiają się, gdy istnieje wiele ograniczeń między właściwościami w ramach tej samej wygenerowanej konfiguracji. Aby rozwiązać ten problem, musisz wiedzieć, gdzie istnieją konflikty między właściwościami w konfiguracji.

Infrastruktura poza zakresem zasobów

Jeśli używasz usługi Azure Export for Terraform do docelowych zakresów zasobów, zasoby wymagane dla konfiguracji mogą istnieć poza określonym zakresem. Przykładem jest przypisanie roli. Użytkownik musi zidentyfikować zasoby, które znajdują się poza zakresem.

Właściwości tylko do zapisu

Usługa Azure Export nie może wygenerować właściwości tylko do zapisu (takich jak hasła) w ramach konfiguracji. Musisz wiedzieć o właściwościach tylko do zapisu i zdefiniować je w konfiguracji, aby utworzyć nowe zestawy zasobów.

Modyfikowanie kodu w celu dopasowania do standardów kodowania

Istnieje kilka niezbędnych operacji, jeśli użytkownik chce zmodyfikować swój kod w celu przestrzegania standardów kodowania. Te kroki byłyby konieczne tylko wtedy, gdy użytkownik planuje używać kodu w środowiskach innych niżbox.

Zasoby zdefiniowane przez właściwość

Niektóre zasoby na platformie Azure można zdefiniować jako właściwość w nadrzędnym zasobie programu Terraform lub pojedynczym zasobie programu Terraform. Przykładem jest podsieć. Usługa Azure Export for Terraform definiuje zasób jako pojedynczy zasób, ale najlepszym rozwiązaniem jest dopasowanie istniejącej konfiguracji kodowania.

Jawne zależności

Usługa Azure Export dla programu Terraform jest obecnie w stanie zadeklarować tylko jawne zależności. Musisz znać mapowanie relacji między zasobami, aby refaktoryzować kod, aby uwzględnić wszelkie wymagane zależności niejawne.

Wartości zakodowane na stałe

Usługa Azure Export for Terraform obecnie generuje zakodowane ciągi. Najlepszym rozwiązaniem jest refaktoryzacja tych wartości do zmiennych. Ponadto podczas używania --full-properties flagi do uwidocznienia wszystkich właściwości niektóre poufne informacje (takie jak wpisy tajne) można zobaczyć w wygenerowanej konfiguracji. Użyj zalecanych rozwiązań, aby chronić widoczność tego kodu.

Następne kroki