Download as pdf or txt
Download as pdf or txt
You are on page 1of 43

SEMINARI TECNOLÒGIC:

Ansible

Xavier Sala Pujolar


Maig 2021
Qui sóc?

Xavier Sala
Automatització de sistemes

Són eines que


s’han usat per
gent de sistemes

Però cada vegada


són més
utilitzades per
desenvolupadors
Objectiu: Introducció

Automatització de sistemes

Atureu-me
si em passo!

pregunteu
el que no sapigueu!
Programa

Dia 1: Introducció a Ansible

Dia 2: Playbooks

Dia 3: Playbooks i roles


Ansible
Dia 1: Introducció a Ansible

Xavier Sala Pujolar


Maig 2021
Gestió de la configuració

A mesura que els sistemes


informàtics van creixent la
gestió es va fent més i més
complexa

Actualitzacions, afegir nou


software, manteniment de la
configuració, …

Fer aquestes tasques a mà és


propens a errors
Gestió de la configuració

Comprovar ús
de recursos
Aplicar
actualitzacions
Gestionar
usuaris i grups
Comprovar fitxers
de registre, logs
Copiar fitxers
quan tenim molts entre servidors
servidors s’ha de
poder Afegir
automatitzar aplicacions Reiniciar
servidors
Gestionar eines
de cron Clonar recursos
r
e , c o n figura
r
t a l· l a r, treu d ’equips
In s r u p s
n g
soft e r tasques
za
Realit istraci
ó
d ’a d m i n
es
t o m a titzad
au

n
e c u r sos e uinari
r r aq
copia ions de m
zac ic a cions
act ualit gar
a p l
m olts
s p l e e n
De
p id a ment alhora
rà mes
siste
Eines de gestió de la configuració
Estat
Hi ha d’haver Firefox instal·lat

Treballen
definint un
estat

Ja té
Firefox

Només actua si
l’estat no quadra
Operacions idempotents
Agent o Agentless

Sense agents
Fa servir
ZeroMQ

Funcionen
amb agents
Master

No necessita
cap servidor
Ansible

Ansible és una eina


d’automatització per la
“gestió de la configuració”,
desplegament d’aplicacions i
provisió de sistemes.

Funciona sense agents

És de codi obert i està


escrita en Python
Instal·lació

S’executa en
sistemes Unix i
pot administrar
Unix, Windows i
dispositius

pip install ansible

apt install ansible

dnf install ansible


En Windows pot
funcionar en el
Windows Subsystem
for Linux (WSL)

o en màquines
virtuals, ...
Activar
Windows
Subsystem
for Linux

Instal·lar un Linux de la
Microsoft Store Preparat!

wsl --set-default-version 2 Recomanació


Connexió
Estacions de
treball

Quasi sempre fa
servir SSH

Servidors

Dispositius

Màquines
virtuals
Autenticació:
- Basic
- Certificat Estacions de
treball
- NTLM
- Kerberos
En Windows pot - CredSSP
fer servir SSH
però...

WinRM
Servidors

Win32-OpenSSH Dispositius

és Beta Màquines
virtuals
Configuració

Ansible pot ser


configurat des de
múltiples llocs VARIABLES D’ENTORN
diferents Directori de
treball
ansible.cfg

configuració
d’usuari
.ansible.cfg

/etc/ansible/ansible.cfg
Executar comandes adhoc

màquina mòdul

ansible localhost -m ping

Pong
Ping

localhost
màquina on
s’executarà

ansible ubuntet -i “ubuntet,” -m ping

Pong
Ping
inventari

Ubuntet Ubuntot
Inventari

Un inventari és
RICHARD
una llista de
màquines
LINUS
richard.udg.edu
linus.udg.edu
gates.udg.edu
web1.udg.edu GATES
web2.udg.edu
web3.udg.edu

WEB1
WEB2
WEB3
Format INI
fitxer d’inventari

S’executa en totes les mòdul Què s’hi ha de


màquines de l’inventari fer

ansible all -i ./hosts -m shell -a “echo Hola”

ubuntet | CHANGED | rc=0 >> Hola Hola


Hola

ubuntot | CHANGED | rc=0 >>


Hola

Ubuntet Ubuntot
Els hosts es poden RICHARD
agrupar
[linux]
richard.udg.edu
LINUS
linus.udg.edu

[windows]
gates.udg.edu GATES

[web]
web[1:3].udg.edu
WEB1
WEB2
WEB3
Podem fer servir
patrons
[linux]
richard.udg.edu
nom del fitxer
linus.udg.edu S’executa en les màquines d’inventari
del grup web
[windows]
gates.udg.edu

[web] ansible web -i ./hosts -m ping


web[1:3].udg.edu

Pong
Pong Pong

gates

web2 web3
linus web1
richard
Per cada
host

[linux]
richard.udg.edu ansible_user=pep ansible_host=192.168.3.1
linus.udg.edu ansible_user=joan ansible_port=2022

[windows]
gates.udg.edu

per tots els [web]


del grup web[1:3].udg.edu

[windows:vars]
ansible_connection=winrm

[all:vars]
ansible_ssh_private_key_file~=/home/usuari/ssh/id_ansible
[linux]
richard.udg.edu ansible_user=pep ansible_host=192.168.3.1
linus.udg.edu ansible_user=joan ansible_port=2022

[windows]
gates.udg.edu

[web]
web[1:3].udg.edu

[windows:vars]
ansible_user=u3000666@UDG.EDU
Es pot ansible_connection=winrm
integrar en ansible_winrm_transport=kerberos
dominis AD ansible_winrm_server_cert_validation=ignore
Inventaris dinàmics

Quan es tenen molts


equips l’inventari
manual és difícil
de mantenir
Script

Hi ha dues formes de
generar inventaris
dinàmics

Plugins

ansible-doc -t inventory -l
Mòduls

Els mòduls són els executar


que ofereixen les programes
funcionalitats gestionar
descarregar serveis
arxius

obtenir
crear informació
usuaris
comprimir
dades

copiar arxius
verificar
permisos
fer ping!

Els mòduls tenen


un nivell instal·lar ping
d’abstracció programa!
baix
ping yum

apt win_ping

win_chocolatey

win_package
Executar comandes

*
Els de Windows solen
Hi ha diferents els mateixos però
mòduls per executar començats per Win_
comandes en els hosts
remots

Shell Command

Raw Script
Fitxers

També hi ha mòduls
per enviar, modificar
i rebre fitxers

file

copy fetch

lineinfile
template

get_url
unarchive
Programes i paquets

Paquets per
instal·lar software,
llibreries, etc...

apt
homebrew
yum

pacman
dnf
npm

win_chocolatey maven
Gestió dels sistemes remots

O gestionar qualsevol
aspecte del servidor
remot

service

setup
user

cron
iptables

reboot
reboot
És impossible fer una
llista exhaustiva...
índex de mòduls
Exemples
Alguns exemples d’execució de comandes
en màquines fent servir Ansible
Comprova si estan
en marxa?

Pong

ansible servers -i ./hosts -m ping

ansible winds -i ./hosts -m win_ping


“joe” ha d’estar instal·lat

Actualitza llista
de paquets

fer
ansible ubuntet -i ./hosts
sudo
-b -K
-m apt
-a “name=joe state=present update_cache=yes”
state = [absent, build-dep, latest, present, fixed]
[wins]
gates.udg.edu

“7zip” ha d’estar instal·lat


[wins:vars]
ansible_user=u000@GATES.UDG.EDU
ansible_connection=winrm
ansible_winrm_transport=kerberos
ansible_winrm_server_cert_validation=ignore

Demana
ansible gates -i ./hosts
contrasenya
-k
-m win_chocolatey
-a “name=7zip.install state=present”
“nginx” ha d’estar iniciat

fer sudo i ansible ubuntet -i ./hosts


demana la -b -K
contrasenya -m service
-a “name=nginx state=started enabled=yes”
state = [reloaded, restarted, started, stopped ]
No han destruït
l’estrella de la
mort ...

Sembla que hi
haurà més capítols

2021

You might also like