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.