Udostępnij przez


Co to jest infrastruktura jako kod (IaC)?

Infrastruktura jako kod (IaC) używa metodologii DevOps i przechowywania wersji z modelem opisowym do definiowania i wdrażania infrastruktury, takich jak sieci, maszyny wirtualne, moduły równoważenia obciążenia i topologie połączeń. Podobnie jak ten sam kod źródłowy zawsze generuje ten sam plik binarny, model IaC generuje to samo środowisko przy każdym wdrożeniu.

Diagram infrastruktury jako kod definiującego środowisko w wersjonowanym pliku.

IaC to kluczowa praktyka metodyki DevOps i składnik ciągłego dostarczania. Dzięki usłudze IaC zespoły DevOps mogą współpracować z ujednoliconym zestawem rozwiązań i narzędzi w celu szybkiego i niezawodnego dostarczania aplikacji oraz ich infrastruktury pomocniczej na dużą skalę.

Unikaj ręcznej konfiguracji w celu wymuszania spójności

IaC ewoluowała, aby rozwiązać problem dryfu środowiska w potokach wdrożeniowych. Bez IaC zespoły muszą zachować ustawienia środowiska wdrażania indywidualnie. W miarę upływu czasu każde środowisko staje się "płatkiem śniegu", unikatową konfiguracją, która nie może być odtwarzana automatycznie. Niespójność między środowiskami może powodować problemy z wdrażaniem. Administrowanie infrastrukturą i konserwacja obejmują ręczne procesy podatne na błędy i trudne do śledzenia.

IaC unika ręcznej konfiguracji i wymusza spójność, reprezentując żądane stany środowiska za pomocą dobrze udokumentowanego kodu w formatach, takich jak JSON. Wdrożenia infrastruktury z funkcją IaC są powtarzalne i uniemożliwiają problemy ze środowiskiem uruchomieniowym spowodowane dryfem konfiguracji lub brakującymi zależnościami. Potoki wydania wykonują opisy środowiska i modele konfiguracji wersji w celu skonfigurowania środowisk docelowych. Aby wprowadzić zmiany, zespół edytuje źródło, a nie cel.

Idempotence, zdolność danej operacji do zawsze generowania tego samego wyniku, jest ważną zasadą IaC. Polecenie wdrożenia zawsze ustawia środowisko docelowe w tej samej konfiguracji, niezależnie od stanu początkowego środowiska. Idempotencyjność jest osiągana przez automatyczne skonfigurowanie istniejącego obiektu docelowego lub odrzucenie istniejącego obiektu docelowego i ponowne utworzenie nowego środowiska.

Przydatne narzędzia

Szybkie dostarczanie stabilnych środowisk testowych na dużą skalę

Usługa IaC pomaga zespołom DevOps testować aplikacje w środowiskach przypominających środowisko produkcyjne na wczesnym etapie cyklu programowania. Usługa Teams może niezawodnie aprowizować wiele środowisk testowych na żądanie. Chmura dynamicznie udostępnia i likwiduje środowiska na podstawie definicji IaC. Kod infrastruktury można zweryfikować i przetestować, aby zapobiec typowym problemom z wdrażaniem.

Używanie plików definicji deklaratywnych

IaC, w miarę możliwości, powinien używać plików definicji deklaratywnych. Plik definicji opisuje składniki i konfigurację wymagane przez środowisko, ale niekoniecznie sposób osiągnięcia tej konfiguracji. Na przykład plik może definiować wymaganą wersję i konfigurację serwera, ale nie określać procesu instalacji i konfiguracji serwera. Ta abstrakcja umożliwia większą elastyczność korzystania ze zoptymalizowanych technik dostawcy infrastruktury. Definicje deklaratywne pomagają również zmniejszyć dług techniczny związany z utrzymywaniem kodu imperatywnego, takiego jak skrypty wdrożeniowe, które mogą narastać z czasem.

Nie ma standardowej składni dla deklaratywnej IaC. Składnia opisywania IaC zwykle zależy od wymagań platformy docelowej. Różne platformy obsługują formaty plików, takie jak YAML, JSON i XML.

Wdrażanie IaC na platformie Azure

Platforma Azure zapewnia natywną obsługę IaC za pośrednictwem modelu usługi Azure Resource Manager . Zespoły mogą definiować deklaratywne szablony usługi ARM przy użyciu składni JSON lub Bicep w celu określenia infrastruktury wymaganej do wdrożenia rozwiązań. Dostępne są również rozwiązania innych firm, takie jak Terraform za pośrednictwem określonych dostawców platformy Azure.