42 lines
4.6 KiB
TeX
42 lines
4.6 KiB
TeX
\chapter{Automatizace konfigurace}
|
|
|
|
Konfigurační management, jakožto obor systémového inženýrství, byl vyvinut již v~50. letech 20. století ministerstvem obrany Spojených států. Sloužil jako metoda pro sledování změn v~komplexních systémech jako jsou zbraňové systémy nebo vojenská vozidla. Každá změna v~systému musela být zaznamenána včetně dokumentace, která uváděla, kdo změnu provedl a z~jakého důvodu. Cílem bylo zajistit, že stav systému bude v~kterémkoli okamžiku známý a zpětně dohledatelný. Stejná praxe byla aplikována i na počítačové systémy. Původně se dokumentovaly změny provedené v~čase. Nové softwarové nástroje umožnily přejít od dokumentace provedených změn k~definování požadovaného stavu systému. \citep{HeapAnsible}
|
|
|
|
S~narůstajícím využíváním virtualizace, kontejnerizace a komplexností počítačových systémů, tedy s~narůstajícím počtem zařízení vyžadující určitou konfiguraci implementovaly tyto nástroje i automatizaci konfigurace spravované infrastruktury. Tento přístup se nazývá \textbf{Infrastructure as Code} (IaC), tedy infrastruktura jako kód. V~tomto modelu je požadovaná konfigurace infrastruktury zapsána ve strojově čitelném formátu v~souboru, podle kterého následně softwarové nástroje automaticky konfigurují jednotlivé prvky infrastruktury.
|
|
Díky zápisu požadované konfigurace se eliminuje lidská chyba při konfiguraci více zařízení a zvýší se homogennost konfigurace napříč infrastrukturou. S~použitím verzovacího systému lze umožnit verzování infrastruktury, týmovou spolupráci nad konfigurací s~důrazem na auditovatelnost konfigurace a dohledatelnost historických změn. Toto zvyšuje bezpečnost.
|
|
Automatizace konfigurace rozsáhlé infrastruktury zvýší efektivitu, ušetří čas a umožní snadnou škálovatelnost. \citep{leanDeliveryIaC}
|
|
|
|
\pagebreak
|
|
|
|
Existuje několik známých open-source nástrojů pro správu infrastruktury jako kódu, každý se svými specifiky a způsob správy. Mezi nejpoužívanější opensource nástroje patří \textbf{Ansible\footnote{\url{https://www.ansible.com/}}}, \textbf{Chef\footnote{\url{https://www.chef.io/}}}, \textbf{Puppet\footnote{\url{https://www.puppet.com/}}} a \textbf{SaltStack\footnote{\url{https://saltproject.io/}}} \citep[p.~841]{Nemeth_Evi_2018}.
|
|
|
|
\begin{longtable}[c]{|p{3.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|}
|
|
\caption{Nástroje pro automatizaci správy infrastruktury}
|
|
|
|
\label{tab:DevOpsTools}\\
|
|
\hline
|
|
\multicolumn{1}{|c|}{} &
|
|
\multicolumn{1}{c|}{\textbf{Ansible}} &
|
|
\multicolumn{1}{c|}{\textbf{Chef}} &
|
|
\multicolumn{1}{c|}{\textbf{Puppet}} &
|
|
\multicolumn{1}{c|}{\textbf{SaltStack}} \\ \hline
|
|
\endfirsthead
|
|
%
|
|
\endhead
|
|
%
|
|
Programovací jazyk nástroje & Python & Ruby & C++, Clojure & Python \\ \hline
|
|
Jazyk pro konfiguraci & YAML, JSON & Ruby & Vlastní jazyk & YAML \\ \hline
|
|
Způsob zápisu konfigurace & Procedurální/Deklarativní & Procedurální & Deklarativní & Deklarativní \\ \hline
|
|
Architektura & Agentless\footnote{nevyžaduje speciální software na spravovaném zařízení} & Server/client & Server/client, Agentless\footnote{\url{https://www.puppet.com/community/open-source/bolt}} & Server/client, Agentless\footnote{\url{https://docs.saltproject.io/salt/user-guide/en/latest/topics/salt-ssh.html}} \\ \hline
|
|
Model získání konfigurace & Push\footnote{konfigurace je na zařízení zaslána} & Pull\footnote{zařízení stahuje konfiguraci ze serveru} & Pull / Push & Push \\ \hline
|
|
Způsob přenosu konfigurace & SSH & HTTP(S) & MCollective, HTTPS & ZeroMQ \\ \hline
|
|
|
|
\end{longtable}
|
|
|
|
\section{Přístupy k~zápisu konfigurace}
|
|
|
|
Existují dvě základní paradigmata zápisu konfigurace.
|
|
|
|
\textbf{Imperativní (procedurální)} zápis definuje jednotlivé kroky, které mají být provedeny v~přesném pořadí, pro dosažení požadovaného stavu infrastruktury.
|
|
|
|
\textbf{Deklarativní} zápis popisuje požadovaný stav infrastruktury, tedy jaký má být cílený stav. Jedná se deklarativní abstrakci kdy dosažení cílové konfigurace je implementovány imperativně. Nástroj pro automatizaci konfigurace vyhodnotí aktuální stav a provede pouze nezbytné kroky k~dosažení cílového stavu. |