Porównywanie programu Terraform i Bicep

Aby osiągnąć skalę, zespoły DevOps zawsze szukają sposobów szybkiego wdrażania kodu z zaufanym i powtarzalnym procesem. Jeśli chodzi o chmurę i infrastrukturę, ten proces jest coraz bardziej osiągany za pomocą infrastruktury jako kodu (IaC). Narzędzia IaC obejmują narzędzia ogólnego przeznaczenia po narzędzia przeznaczone dla określonych środowisk. Terraform jest przykładem poprzedniego, podczas gdy Bicep jest przeznaczony do obsługi zadań związanych z platformą Azure.

W tym artykule porównaliśmy dziewięć funkcji infrastruktury i integracji Bicep i Terraform. Zrozumienie tych różnic pomaga zdecydować, które narzędzie najlepiej obsługuje infrastrukturę i procesy.

Stan i zaplecze

Zarówno narzędzia Terraform, jak i Bicep są konfiguracją żądanego stanu (DSC), co ułatwia zarządzanie infrastrukturą IT i programowaniem jako kodem. Narzędzie Terraform przechowuje stan infrastruktury zarządzanej i konfiguracji. Narzędzie Terraform używa tych informacji do mapowania rzeczywistych zasobów na konfigurację, śledzenia metadanych i poprawy wydajności większych infrastruktur. Stan jest przechowywany w pliku lokalnym o nazwie terraform.tfstate, ale może być również przechowywany zdalnie. Tworzenie kopii zapasowych i zabezpieczanie plików stanu ma kluczowe znaczenie. Podobnie jak Terraform, Bicep jest deklaratywny i dąży do celu. Jednak Bicep nie przechowuje stanu. Zamiast tego Bicep opiera się na wdrożeniu przyrostowym.

Cele infrastruktury

Podczas porównywania struktury Bicep z programem Terraform do zarządzania infrastrukturą chmury należy wziąć pod uwagę docelowe środowisko chmury:

  • Tylko platforma Azure
  • Wiele chmur lub chmur hybrydowych

Bicep jest specyficzny dla platformy Azure i nie jest przeznaczony do pracy z innymi usługami w chmurze.

Jeśli twoim celem jest zautomatyzowanie wdrożeń w dowolnym z następujących środowisk, narzędzie Terraform jest prawdopodobnie lepszym rozwiązaniem:

  • Środowiska wirtualizacji
  • Scenariusze z wieloma chmurami — takie jak platforma Azure i inne chmury
  • Obciążenia lokalne

Narzędzie Terraform współdziała z innymi dostawcami usług w chmurze lub interfejsami API przy użyciu wtyczek nazywanych dostawcami. Istnieje kilka dostawców platformy Azure terraform, którzy umożliwiają zarządzanie infrastrukturą platformy Azure. Podczas kodowania konfiguracji programu Terraform należy określić wymaganych dostawców, których używasz. Po uruchomieniu narzędzia terraform init określony dostawca jest instalowany i używany z poziomu kodu.

Narzędzia interfejsu wiersza polecenia

Narzędzia interfejsu wiersza polecenia odgrywają kluczową rolę w orkiestracji dzięki implementacji i zarządzaniu technologią automatyzacji. Zarówno Bicep, jak i Terraform oferują narzędzia interfejsu wiersza polecenia.

Bicep integruje się z interfejsem wiersza polecenia platformy Azure, co umożliwia deweloperom korzystanie z az poleceń, takich jak:

Interfejs wiersza polecenia narzędzia Terraform umożliwia wykonywanie takich zadań, jak weryfikowanie i formatowanie kodu programu Terraform oraz tworzenie i stosowanie planu wykonania.

Bicep udostępnia również funkcję, która ułatwia integrację aplikacji Bicep z usługą Azure Pipelines. Istnieje podobna funkcja dostępna dla programu Terraform, ale musisz pobrać i zainstalować rozszerzenie Azure Pipelines Terraform Tasks dla programu Visual Studio. Po zainstalowaniu można uruchamiać polecenia interfejsu wiersza polecenia narzędzia Terraform z poziomu usługi Azure Pipelines. Ponadto zarówno narzędzia Terraform, jak i Bicep obsługują funkcję GitHub Actions w celu automatyzowania kompilacji, testów i wdrożeń oprogramowania.

Przetwarzanie

Istnieją pewne ważne różnice między Bicep i Terraform pod względem wydajności i optymalizacji wdrożeń. W przypadku Bicep przetwarzanie odbywa się po stronie podstawowej usługi infrastruktury platformy Azure. Ta funkcja oferuje zalety, takie jak wstępne przetwarzanie w celu sprawdzenia zasad lub dostępności wdrażania wielu wystąpień w regionie. W programie Terraform przetwarzanie odbywa się w ramach klienta programu Terraform. W związku z tym przetwarzanie wstępne nie obejmuje wywołań platformy Azure, ponieważ używa on stanu i HCL (HashiCorp Language) w celu określenia wymaganych zmian.

Uwierzytelnianie

Funkcje uwierzytelniania platformy Azure różnią się w zależności od struktury Bicep i programu Terraform. W przypadku Bicep token autoryzacji jest dostarczany podczas żądania przesyłania pliku Bicep i szablonu usługi ARM. Usługa ARM gwarantuje, że masz uprawnienia zarówno do tworzenia wdrożenia, jak i wdrażania zasobów w określonym szablonie. Narzędzie Terraform uwierzytelnia każdy interfejs API na podstawie poświadczeń dostawcy — takich jak interfejs wiersza polecenia platformy Azure, jednostka usługi lub tożsamości zarządzane dla zasobów platformy Azure. Ponadto w jednej konfiguracji można używać wielu poświadczeń dostawcy.

Integracje platformy Azure

Należy również rozważyć użycie funkcji platformy Azure, takich jak usługa Azure Policy i sposób interakcji z innymi narzędziami i językami. Walidacja wstępna Bicep określa, czy zasób nie jest zgodny z zasadami, tak aby kończył się niepowodzeniem przed wdrożeniem. W związku z tym deweloperzy mogą korygować zasoby przy użyciu zasad przy użyciu udostępnionych szablonów usługi ARM. Szablon usługi ARM może służyć do tworzenia przypisania zasad do innego zasobu na potrzeby zautomatyzowanego korygowania. Program Terraform kończy się jednak niepowodzeniem po wdrożeniu zasobu, który jest niedozwolony z powodu zasad.

Integracja z portalem

Jedną z głównych zalet Bicep nad narzędziem Terraform jest możliwość automatyzowania akcji portalu. Za pomocą aplikacji Bicep można wyeksportować szablony za pomocą witryny Azure Portal. Eksportowanie szablonu pomaga zrozumieć składnię i właściwości, które wdrażają zasoby. Przyszłe wdrożenia można zautomatyzować, zaczynając od wyeksportowanego szablonu i modyfikując go zgodnie z potrzebami. Dopóki szablony programu Terraform nie będą obsługiwane, należy ręcznie przetłumaczyć wyeksportowany szablon.

Mimo że program Terraform nie zapewnia tych samych integracji portalu co Bicep, istniejąca infrastruktura platformy Azure może zostać podjęta w ramach zarządzania programem Terraform przy użyciu usługi Azure Export for Terraform. (Usługa Azure Export for Terraform to narzędzie typu open source należące do firmy Microsoft i obsługiwane przez firmę MicrosoftRepozytorium GitHub platformy Azure/aztfexport).

Zmiany poza pasmem

Zmiany konfiguracji poza pasmem są wprowadzane w konfiguracji urządzenia poza kontekstem narzędzia. Załóżmy na przykład, że wdrożysz zestaw skalowania maszyn wirtualnych przy użyciu narzędzia Bicep lub Terraform. Jeśli zmienisz ten zestaw skalowania maszyn wirtualnych przy użyciu portalu, zmiana będzie miała wartość "poza pasmem" i będzie nieznana narzędziu IaC.

Jeśli używasz Bicep, zmiany poza pasmem powinny być uzgadniane z Bicep i kodem szablonu usługi ARM, aby uniknąć zastąpienia tych zmian w następnym wdrożeniu. Te zmiany nie blokują wdrożenia.

Jeśli używasz narzędzia Terraform, musisz zaimportować zmiany poza pasmem do stanu narzędzia Terraform i zaktualizować listę HCL.

W związku z tym, jeśli środowisko obejmuje częste zmiany poza pasmem, Bicep jest bardziej przyjazny dla użytkownika. W przypadku korzystania z programu Terraform należy zminimalizować zmiany poza pasmem.

Struktury chmury

Przewodnik Cloud Adoption Framework (CAF) to zbiór dokumentacji, najlepszych rozwiązań i narzędzi umożliwiających przyspieszenie wdrażania chmury w całej podróży do chmury. Platforma Azure udostępnia usługi natywne do wdrażania stref docelowych. Bicep upraszcza ten proces przy użyciu środowiska portalu opartego na szablonach usługi ARM i implementacji strefy docelowej. Narzędzie Terraform korzysta z modułu Strefy docelowe w skali przedsiębiorstwa do wdrażania platformy Azure i zarządzania nimi oraz zarządzania nimi.

Podsumowanie

Bicep i Terraform oferują wiele przyjaznych dla użytkownika funkcji infrastruktury i integracji. Te funkcje ułatwiają implementowanie technologii automatyzacji i zarządzanie nimi. Podczas podejmowania decyzji, co jest najlepsze dla środowiska, należy wziąć pod uwagę, czy wdrażasz w więcej niż jednej chmurze, czy też infrastruktura składa się ze środowiska z wieloma lub chmurami hybrydowymi. Ponadto należy wziąć pod uwagę dziewięć funkcji omówionych w tym artykule, aby wybrać najlepszy wybór dla organizacji.