Infrastruktura jako kód - Infrastructure as code

Infrastruktura jako kód ( IaC ) je proces správy a zřizování počítačových datových center prostřednictvím strojově čitelných definičních souborů, nikoli fyzické hardwarové konfigurace nebo interaktivních konfiguračních nástrojů. IT infrastruktura řízena tomto procesu zahrnuje jak fyzické zařízení, jako jsou holé železo serverů , stejně jako virtuálních strojů a konfiguračních prostředky. Definice mohou být v systému pro správu verzí . Může používat buď skripty, nebo deklarativní definice, nikoli manuální procesy, ale termín se častěji používá k propagaci deklarativních přístupů.

Přehled

IaC rostl jako reakce na potíže, které představují obslužné počítače a webové rámce druhé generace. V roce 2006, zahájení Amazon Web Services " Elastic Compute Cloud a verze 1.0 Ruby on Rails jen několik měsíců předtím, než vytvořili rozsáhlých problémů měřítka v podniku, které byly dříve zažil jen při velkých nadnárodních společností. S objevováním nových nástrojů pro zvládnutí této stále rostoucí oblasti se zrodila myšlenka IaC. Myšlenka modelovat infrastrukturu pomocí kódu a poté mít schopnost navrhovat, implementovat a nasazovat infrastrukturu aplikací se známými osvědčenými postupy pro software se líbila jak vývojářům softwaru, tak správcům IT infrastruktury. Možnost zacházet s infrastrukturou jako s kódem a používat stejné nástroje jako jakýkoli jiný softwarový projekt by vývojářům umožnila rychle nasadit aplikace.

Výhody

Hodnotu IaC lze rozdělit do tří měřitelných kategorií: náklady, rychlost a riziko. Snížení nákladů si klade za cíl pomáhat nejen podniku finančně, ale také pokud jde o lidi a úsilí, což znamená, že odstraněním manuální součásti jsou lidé schopni znovu zaměřit své úsilí na jiné podnikové úkoly. Automatizace infrastruktury umožňuje rychlost díky rychlejšímu provádění při konfiguraci vaší infrastruktury a jejím cílem je zajistit viditelnost, která pomůže ostatním týmům v celém podniku pracovat rychle a efektivněji. Automatizace odstraňuje rizika spojená s lidskou chybou, jako je ruční nesprávná konfigurace; jeho odstranění může snížit prostoje a zvýšit spolehlivost. Tyto výsledky a atributy pomáhají podniku přejít k implementaci kultury DevOps , kombinovaného fungování vývoje a provozu .

Nevýhody

IaC používá strojově čitelné definiční soubory a může, ale nemusí být Turing kompletní . Nedostatek dokončení Turingu může autorovi zabránit v nabídce softwarových testů ve stejném jazyce jako definice infrastruktury. Nedostatek testů může vést k nedostatku důvěry v nasazení infrastruktury nebo může představovat vysokou překážku vstupu pro testování.

Typy přístupů

K IaC existují obecně dva přístupy: deklarativní (funkční) vs. imperativní (procedurální). Rozdíl mezi deklarativním a imperativním přístupem je v podstatě „co“ versus „jak“ .Deklarativní přístup se zaměřuje na to, jaká by měla být eventuální konfigurace cíle; theimperativ se zaměřuje na to, jak má být infrastruktura změněna, aby to splnila. Deklarativní přístup definuje požadovaný stav a systém provede, co se musí stát, aby dosáhlo požadovaného stavu. Imperativ definuje konkrétní příkazy, které je třeba provést v příslušném pořadí, aby skončily s požadovaným závěrem.

Metody

Existují dvě metody IaC: push and pull . Hlavní rozdíl je ve způsobu, jakým je serverům sděleno, jak mají být konfigurovány. V metodě pull server, který má být konfigurován, stáhne svou konfiguraci z řídícího serveru. V metodě push řídící server předá konfiguraci cílovému systému.

Nástroje

Existuje mnoho nástrojů, které splňují možnosti automatizace infrastruktury a používají IaC. Obecně lze za IaC považovat jakýkoli rámec nebo nástroj, který provádí změny nebo konfiguruje infrastrukturu deklarativně nebo imperativně na základě programového přístupu. Tradičně byly k dosažení IaC použity nástroje pro automatizaci serveru (životního cyklu) a správu konfigurace . Podniky nyní také používají nástroje pro automatizaci kontinuální konfigurace nebo samostatné rámce IaC , jako je Microsoft PowerShell DSC nebo AWS CloudFormation .

Nepřetržitá automatizace konfigurace

Všechny nástroje pro automatickou konfiguraci konfigurace (CCA) lze považovat za rozšíření tradičních rámců IaC. Využívají IaC ke změně, konfiguraci a automatizaci infrastruktury a také poskytují viditelnost, efektivitu a flexibilitu při správě infrastruktury. Tyto další atributy poskytují zabezpečení a dodržování předpisů na podnikové úrovni.

Obsah komunity

Důležitým aspektem při zvažování nástrojů CCA, pokud jsou open source, je obsah komunity. Jak uvádí Gartner , hodnota nástrojů CCA je „stejně závislá na obsahu a podpoře přispívající komunitou uživatelů, jako na komerční vyspělosti a výkonu nástrojů automatizace“. Prodejci jako Puppet a Chef , ti, kteří byli po značnou dobu, vytvořili vlastní komunity. Chef has Chef Community Repository and Puppet has PuppetForge . Jiní prodejci se spoléhají na sousední komunity a využívají další rámce IaC, jako je PowerShell DSC. Objevují se noví prodejci, kteří nejsou založeni na obsahu, ale na modelu s inteligencí v produktu, která přináší obsah. Tyto vizuální, objektově orientované systémy fungují dobře pro vývojáře, ale jsou užitečné zejména pro produkčně orientované DevOps a provozní složky, které oceňují modely oproti skriptování obsahu. Jak se pole stále vyvíjí a mění, bude stále důležitější, jak jsou nástroje IaC využívány, komunitně založený obsah, pokud nejsou modelově řízené a objektově orientované.

Mezi pozoruhodné nástroje CCA patří:

Nářadí Vydáno Metoda Přístup Napsáno Komentáře
Šéfkuchař Chef (2009) Sem Deklarativní a imperativní Rubín -
Vydra Inedo Tam Deklarativní a imperativní - Orientováno na Windows
Loutka Loutka (2005) Sem Deklarativní a imperativní C ++ & Clojure od 4.0, Ruby -
SaltStack SaltStack Tlačit a táhnout Deklarativní a imperativní Krajta -
CFEngine Northern.tech Sem Deklarativní C -
Terraform HashiCorp (2014) Tam Deklarativní Jít -
Ansible / Ansible Tower Red Hat (2012) Tam Deklarativní a imperativní Krajta -

Mezi další nástroje patří AWS CloudFormation , cdist , StackStorm , Juju a Pulumi .

Vztah k DevOps

IaC může být klíčovým atributem umožnění osvědčených postupů v DevOps - vývojáři se více zapojují do definování konfigurace a týmy Ops se zapojí dříve do vývojového procesu. Nástroje, které využívají IaC, přinášejí přehled o stavu a konfiguraci serverů a v konečném důsledku poskytují viditelnost uživatelům v rámci podniku s cílem spojit týmy a maximalizovat jejich úsilí. Automatizace si obecně klade za cíl zmást aspekt ručních procesů, který je náchylný ke zmatkům a chybám, a zefektivnit ho a zvýšit produktivitu. Umožňuje flexibilnější vytváření lepšího softwaru a aplikací, méně prostojů a celkově nákladově efektivní způsob pro společnost. IaC má snížit složitost, která zabíjí efektivitu manuální konfigurace. Automatizace a spolupráce jsou v DevOps považovány za ústřední body; nástroje pro automatizaci infrastruktury jsou často zahrnuty jako součásti řetězce nástrojů DevOps .

Vztah k bezpečnosti

Zpráva o cloudových hrozbách pro rok 2020 vydaná jednotkou 42 (jednotka pro informace o hrozbách poskytovatele kybernetické bezpečnosti Palo Alto Networks ) identifikovala přibližně 200 000 potenciálních zranitelností v infrastruktuře jako šablony kódu.

Viz také

Reference