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 of infrastructure as code defining the environment in a versioned file.

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 wydania. 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 za pomocą modelu IaC są powtarzalne i zapobiegają problemom w środowisku wykonywania spowodowanym przez dryfowanie konfiguracji lub brakujące zależności. 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 aprowizuje i usuwa ś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

W miarę możliwości IaC należy 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 utrzymywania kodu imperatywnego, takiego jak skrypty wdrażania, które mogą być naliczane wraz z upływem czasu.

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 lub Bicep , które określają infrastrukturę wymaganą do wdrożenia rozwiązań.

Platformy innych firm, takie jak Terraform, Ansible, Chef i Pulumi , obsługują również IaC do zarządzania zautomatyzowaną infrastrukturą.