-
Notifications
You must be signed in to change notification settings - Fork 2
/
slide.tex
186 lines (132 loc) · 5.31 KB
/
slide.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
% !TeX spellcheck = it_IT
\documentclass{beamer}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usetheme{Szeged}
\usecolortheme{beaver}
%\usepackage{libertine}
%\usepackage{opensans}
%\usepackage{quattrocento}
\usepackage{inconsolata}
\usepackage{listings}
\lstset{basicstyle=\ttfamily}
\usepackage{parskip}
\usepackage{xcolor}
\title[Ansible]{Lezione 1: Ansible}
\subtitle{Corso GNU/Linux avanzato e tecnologie aperte primavera 2019}
\author{quel\_tale}
\institute{WEEE Open}
\date[2019]{9 marzo 2019}
\newcommand{\host}[1]{{\color{blue}{#1}}}
\newcommand{\prompt}[1]{\textbf{#1}}
\begin{document}
\frame{\titlepage}
\begin{frame}[fragile]
\frametitle{Metodo da disperati}
\texttt{%
\prompt{tu@\host{tuo-computer}\$} ssh server1.azienda.it\\
\prompt{tu@\host{server1}\$} sudo useradd -Nr -g users fittizio\\
\prompt{tu@\host{server1}\$} sudo passwd fittizio\\
Nuova password: \\
Reimmettere la nuova password: \\
passwd: password aggiornata correttamente\\
\prompt{tu@\host{server1}\$} exit\\
\prompt{tu@\host{tuo-computer}\$} ssh server2.azienda.it\\
\prompt{tu@\host{server2}\$} sudo useradd -Nr -g users fittizio\\
...}
\end{frame}
\begin{frame}[fragile]
\frametitle{Metodo classico}
\begin{lstlisting}[basicstyle=\tiny]
#!/bin/bash
for num in $(seq 1 100); do
ssh server${num}.azienda.it "sudo useradd -Nr -g users fittizio"
ssh server${num}.azienda.it "echo fittizio:asd | sudo chpasswd"
done
\end{lstlisting}
\vspace{2em}
Se dal fondo dell'aula non si vedesse: è uno script bash con un ``for'' che esegue comandi via ssh sui 100 server, in sequenza.
{\tiny Nota: non ho provato lo script e non intendo provarlo}
\end{frame}
\begin{frame}[fragile]
\frametitle{Metodo che vedremo oggi}
\begin{lstlisting}
- name: Ensure user 'fittizio'
user:
name: fittizio
group: users
comment: System user for Fittizio software
system: true
password: $6$TkGclvyVl847NeuO$F9fsQ/VbMj29l4egyFKPB.lSpFvWdmfk2Zlp9U0xHoP1ipTu9gjoXMRgQkIqb.aIERVR3ecbsPsABuftYIlTY/
\end{lstlisting}
{\small La password andava cifrata. Quello è l'hash.}
\end{frame}
\begin{frame}
\frametitle{Gestione della configurazione}
Termine generale, applicazioni in vari campi dell'ingegneria.
In ingegneria del software:
\newline
\begin{quote}
A discipline applying technical and administrative direction and surveillance to: identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specified requirements.\footnote{ISO/IEC/IEEE 24765:2010 Systems and Software Engineering—Vocabulary, ISO/IEC/IEEE, 2010.}
\end{quote}
\end{frame}
\begin{frame}
\frametitle{Ma in pratica?}
Controllare, sorvegliare e tracciare le modifiche effettuate a componenti configurabili di un sistema.
Anche \textbf{SVN} e \textbf{git} sono software di gestione della configurazione:
\begin{itemize}
\item Tracciano le modifiche effettuate sul codice sorgente
\item Il codice è un componente del sistema (software)
\item Il codice è configurabile (modificabile)
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Quindi...}
Ansible è un software di gestione della configurazione:
\begin{itemize}
\item Controlla le modifiche effettuate ai file o ai database su un server
\item I file/database sono un componente del sistema (server)
\item I file/database sono configurabili (file di configurazione, etc...)
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Breve storia}
\textbf{Prima generazione: CFEngine (1993), Bcfg2 (2004)}
Mondo accademico, centralità di aspetti teorici, automazione e astrazione
\textbf{Seconda generazione: Puppet (2005), Chef (2009)}
Aziende, semplificare la vita ai sistemisti, deployment su larga scala
\textbf{Terza generazione: Ansible (2009), Salt (2011)}
Semplicità di sviluppo, velocità, automazione anche parziale ``basta che si faccia''
\end{frame}
\begin{frame}
\frametitle{Perché Ansible?}
\textbf{Facile da iniziare a usare}: agentless, playbook ``lineari'', automazione anche parziale della configurazione, sintassi in formati standard e noti (YAML, Jinja2)
\textbf{Largamente supportato}: può configurare praticamente qualsiasi distribuzione GNU/Linux, BSD, Windows, OS X, router professionali, container (Docker), etc...
\textbf{Comunità attiva}: molti ruoli disponibili su Ansible Galaxy, manuale dettagliato e con molti esempi
%Tuttavia, alcuni svantaggi: velocità limitata, non perfettamente idempotente e dichiarativo, ``drift'' della configurazione (modello push)
\end{frame}
\begin{frame}
\frametitle{Consigli finali}
Leggete il manuale e cercate su Internet, prima di reinventare la ruota.
``Versionate'' i playbook e i ruoli con git.
\vspace{1em}
\begin{alertblock}{Un buon punto di partenza}
\href{https://github.com/mattjbarlow/ansible-directory}{github.com/mattjbarlow/ansible-directory}
\end{alertblock}
\begin{alertblock}{Per creare ruoli}
\texttt{ansible-galaxy init nome-del-modulo}
\end{alertblock}
\begin{alertblock}{Per usare al meglio i ruoli standard}
\href{https://docs.ansible.com/ansible/latest/}{docs.ansible.com/ansible/latest/}
\end{alertblock}
\end{frame}
\begin{frame}
{\Huge Grazie per l'attenzione}
\end{frame}
\begin{frame}
{\Huge Domande?}
\vspace{2em}
Oppure andate in pace, sono le 20.30
\end{frame}
\end{document}