Skip to content

Commit 3c0725c

Browse files
committed
Přidat prezentaci Ansible
1 parent 96519cf commit 3c0725c

2 files changed

Lines changed: 267 additions & 0 deletions

File tree

presentation/ansible/ansible.pdf

245 KB
Binary file not shown.

presentation/ansible/ansible.tex

Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
\documentclass{beamer}
2+
\usepackage[utf8]{inputenc}
3+
\usepackage[T1]{fontenc}
4+
\usepackage[czech]{babel}
5+
6+
\setbeamerfont{title}{size=\LARGE}
7+
8+
\title{Ansible – automatizace správy serverů}
9+
\author{Eliška Jégrová}
10+
\date{25. 11. 2025}
11+
12+
% pro obrázky a kreslení
13+
\usepackage{tikz}
14+
\usetikzlibrary{positioning}
15+
\usetikzlibrary{shapes.misc}
16+
\usetikzlibrary{shapes.symbols}
17+
\usetikzlibrary{shapes, shapes.geometric, positioning, arrows}
18+
\usepackage{graphicx}
19+
\usepackage{datetime}
20+
\usepackage{svg}
21+
\usepackage{listings}
22+
\usepackage{dirtree}
23+
24+
\usepackage{listings}
25+
\usepackage{xcolor} % pokud chceš barvičky, jinak můžeš vynechat
26+
27+
\lstdefinelanguage{yaml}{
28+
basicstyle=\ttfamily\small,
29+
keywords={true,false,null,y,n},
30+
keywordstyle=\bfseries,
31+
comment=[l]{\#},
32+
commentstyle=\itshape,
33+
stringstyle=\ttfamily,
34+
morestring=[b]",
35+
morestring=[b]',
36+
sensitive=true
37+
}
38+
39+
% vlastní příkaz pro tildy
40+
\newcommand{\ts}{\raisebox{-0.25em}{\textasciitilde}}
41+
42+
\begin{document}
43+
44+
\frame{\titlepage}
45+
46+
\begin{frame}{Obsah}
47+
\tableofcontents
48+
\end{frame}
49+
50+
51+
52+
\section{Úvod}
53+
54+
\begin{frame}{Proč Ansible}
55+
\begin{itemize}
56+
\item Dosud: ruční správa přes SSH nebo konzoli
57+
\item Pro jeden server to stačí, ale co budeme dělat v případě, kdy budeme mít serverů 1000?
58+
\item Nebo budeme potřebovat zreplikovat specifické nastavení na další server?
59+
\item Jak rychle dokážete nahradit nefunkční server?
60+
\end{itemize}
61+
\end{frame}
62+
63+
\begin{frame}{Co je Ansible}
64+
\begin{itemize}
65+
\item Ansible je nástroj pro \textbf{automatizaci}:
66+
\begin{itemize}
67+
\item \textbf{konfigurační management} – udržování konzistentního nastavení systémů
68+
(balíčky, služby, konfiguráky, uživatelé)
69+
\item \textbf{deploy aplikací} – nahrání nové verze, konfigurace,
70+
restart služeb,
71+
\item \textbf{orchestrace} více serverů.
72+
\end{itemize}
73+
74+
\item \textbf{Bezagentový nástroj} (\emph{agentless}):
75+
\begin{itemize}
76+
\item na spravovaných serverech není potřeba žádný démon,
77+
\item používá \textbf{SSH} a Python.
78+
\end{itemize}
79+
80+
\item Typické použití:
81+
\begin{itemize}
82+
\item nastavení a správa webových serverů,
83+
\item vytváření a správa uživatelů,
84+
\item instalace balíčků,
85+
\item úprava konfigurací a restart služeb.
86+
\end{itemize}
87+
\end{itemize}
88+
\end{frame}
89+
90+
\begin{frame}{Základní principy Ansible}
91+
\begin{itemize}
92+
93+
\item V Ansible konfiguraci popisujeme \textbf{deklarativně}:
94+
\begin{itemize}
95+
\item \textbf{jaký má být výsledný stav}, ne jednotlivé kroky,
96+
\item např. „balíček \texttt{httpd} je nainstalovaný“,
97+
„služba \texttt{httpd} běží a je povolená po startu“.
98+
\end{itemize}
99+
100+
\item \textbf{Idempotence}:
101+
\begin{itemize}
102+
\item opakované spuštění vede ke stejnému stavu:
103+
\begin{itemize}
104+
\item při prvním spuštění se něco změní,
105+
\item při dalším spuštění už není co měnit.
106+
\end{itemize}
107+
\item Příklady idempotentního chování:
108+
\begin{itemize}
109+
\item \texttt{package: state=present} nainstaluje balíček jen pokud chybí,
110+
\end{itemize}
111+
\end{itemize}
112+
113+
\item Konfigurace je psaná v souborech ve formátu \textbf{YAML} \\ (\texttt{.yml, .yaml}).
114+
\end{itemize}
115+
\end{frame}
116+
117+
118+
\section{Instalace}
119+
120+
\begin{frame}[fragile]{Instalace Ansible a první playbook}
121+
\begin{itemize}
122+
\item Na řídicím serveru (naší virtuálce) nainstalujeme Ansible:
123+
\end{itemize}
124+
125+
\begin{verbatim}
126+
# dnf install ansible
127+
\end{verbatim}
128+
129+
\begin{itemize}
130+
\item V pracovním adresáři vytvoříme soubor \texttt{setup.yaml}, např.:
131+
\end{itemize}
132+
133+
\begin{verbatim}
134+
- hosts: localhost
135+
connection: local
136+
become_user: root
137+
tasks:
138+
- name: Install htop
139+
become: yes
140+
dnf:
141+
state: latest
142+
name:
143+
- htop
144+
\end{verbatim}
145+
\end{frame}
146+
147+
\begin{frame}{Klíčová slova v setup.yaml}
148+
\begin{itemize}
149+
150+
\item \texttt{hosts: localhost}
151+
\begin{itemize}
152+
\item na které hosty se playbook aplikuje (skupina \texttt{all} = všichni).
153+
\end{itemize}
154+
155+
\item \texttt{connection: local}
156+
\begin{itemize}
157+
\item způsob jak se připojit
158+
\end{itemize}
159+
160+
\item \texttt{become\_user: root}
161+
\begin{itemize}
162+
\item jaký uživatel bude použit
163+
\end{itemize}
164+
165+
\item \texttt{tasks:}
166+
\begin{itemize}
167+
\item seznam kroků, které se mají provést.
168+
\end{itemize}
169+
170+
\item \texttt{name: Install htop}
171+
\begin{itemize}
172+
\item název konkrétní úlohy (tasku).
173+
\end{itemize}
174+
175+
\item \texttt{become: yes}
176+
\begin{itemize}
177+
\item úlohy poběží s právy zadaného uživatele.
178+
\end{itemize}
179+
180+
\end{itemize}
181+
\end{frame}
182+
183+
\begin{frame}[fragile]{Spuštění playbooku setup.yaml}
184+
\begin{itemize}
185+
\item Playbook spouštíme příkazem \texttt{ansible-playbook}.
186+
\end{itemize}
187+
188+
\begin{verbatim}
189+
$ ansible-playbook -K setup.yaml -i hosts.yaml
190+
\end{verbatim}
191+
192+
\begin{itemize}
193+
\item \texttt{-i } – určuje soubor s inventářem (seznam hostů).
194+
\item \texttt{-K} – Ansible se zeptá na heslo pro \texttt{sudo}
195+
(become heslo), aby mohl spouštět úlohy s vyššími právy.
196+
\item Během běhu Ansible ukazuje pro každý task:
197+
\begin{itemize}
198+
\item jestli proběhl v pořádku (\texttt{ok}),
199+
\item jestli něco změnil (\texttt{changed}),
200+
\item případné chyby (\texttt{failed}).
201+
\end{itemize}
202+
\end{itemize}
203+
\end{frame}
204+
205+
\section{Inventář}
206+
\begin{frame}[fragile]{Inventář – seznam spravovaných serverů}
207+
\begin{itemize}
208+
\item Inventář říká, \textbf{na které stroje} se mají playbooky pouštět.
209+
\item Každý řádek = jeden server (jméno nebo IP adresa).
210+
\end{itemize}
211+
212+
\begin{verbatim}
213+
# hosts.yml - jednoduchý inventář v YAML
214+
web:
215+
hosts:
216+
192.168.122.101:
217+
192.168.122.102:
218+
db:
219+
hosts:
220+
192.168.122.110:
221+
\end{verbatim}
222+
223+
\begin{itemize}
224+
\item Jména \texttt{web} a \texttt{db} jsou \textbf{skupiny} hostů
225+
\item V \texttt{setup.yaml} pak můžeme použít:\hspace{0.5em} \texttt{hosts: web} \\
226+
a playbook se spustí na všech web serverech.
227+
\end{itemize}
228+
\end{frame}
229+
230+
\section{Samostatná práce}
231+
232+
\begin{frame}{Samostatná práce – první kroky s Ansible}
233+
\begin{itemize}
234+
\item Otevři soubor \texttt{setup.yaml},
235+
\begin{enumerate}
236+
237+
\item Uprav task tak, aby instaloval víc „užitečných nástrojů“: keepassxc a gnome-tweaks.
238+
239+
\item Spusť playbook:
240+
\begin{itemize}
241+
\item \texttt{ansible-playbook -K setup.yaml}
242+
\end{itemize}
243+
Sleduj, které balíčky mají stav \texttt{changed} a které jen \texttt{ok}.
244+
245+
\item Do seznamu \texttt{tasks:} přidej úlohu, která:
246+
\begin{itemize}
247+
\item v systému vytvoří novou uživatelku \texttt{zuzana}.
248+
\item použij k tomu modul user
249+
\end{itemize}
250+
251+
252+
\item Přidej další úlohu, která:
253+
\begin{itemize}
254+
\item zajistí, že balíček \texttt{sl} \textbf{není} nainstalovaný
255+
\end{itemize}
256+
257+
\item Přidej úlohu, která:
258+
\begin{itemize}
259+
\item zajistí, že služba \texttt{sshd} běží,
260+
\item a je \textbf{povolena po startu systému} (enabled).
261+
\item použij modul systemd
262+
\end{itemize}
263+
\end{enumerate}
264+
\end{itemize}
265+
\end{frame}
266+
267+
\end{document}

0 commit comments

Comments
 (0)