PV090: Automatizace správy strojů, Ansible
Automatizace správy strojů
- konfigurace strojů je popsána v textových souborech
- deklarativní konfigurace: popisujeme stav, kterého chceme
dosáhnout
- idempotentní operace: opakované provedení nezmění stav
Výhody oproti manuální
správě strojů
- popis konfigurace stroje lze vytvořit jednou a pak jej využít
vícekrát
- konfiguraci lze rychle aplikovat
- může také sloužit jako dokumentace
- dá se uložit do verzovacího systému, např.
git
Přehled nástrojů
Ansible
- správa konfigurací
- bez serveru
yaml
Puppet
- správa konfigurací
- server, agent
- vlastní formát souborů
Chef
- správa konfigurací
- server, client
ruby
(R)?ex
- správa konfigurací
- bez serveru
perl
NixOS
- deklarativně konfigurovatelná distribuce Linuxu
Read-only systémy
CoreOS
- minimalistická Linuxová distribuce pro kontejnery
Fedora Silverblue
- Linuxová distribuce pro použití s prostředím GNOME
Tails
- distribuce Linuxu, která neukládá uživatelská data
- účelem je, aby po uživateli nezůstaly stopy
Ansible
Instalace
- pip:
$ python3 -m pip install --user ansible
- Debian:
# apt install ansible
- Fedora:
# dnf install ansible
Control node
- konfiguruje managed nodes
- má nainstalovaný Ansible
Managed node
- je konfigurován
- nemusí mít nainstalovaný Ansible
- implicitně připojení pomocí
ssh
, ale některé moduly to
nevyžadují
Inventory file
- soubor popisující managed nodes
- formát
ini
nebo yaml
- může obsahovat popis toho, jak se ke stroji dostat
- dají se v něm použít jména definovaná v
~/.ssh/config
- je vhodné přidat
ansible_connection=local
za jméno
stroje, pokud je control node i managed node zároveň
- zjištění dostupnosti:
ansible all -m ping -i inventory.ini
Modul
- program který provádí v systému nějakou konkrétní změnu
- často je to skript v Pythonu, ale není to nezbytné
Příklady modulů
- copy:
zapisuje text do souboru
- lineinfile:
přidává a odstraňuje řádky v souboru
- command:
spouští programy
Task
- vstup pro modul
- formát
yaml
Play
- obsahuje alespoň jeden task
Playbook
- soubor obsahující deklarativní konfiguraci
- obsahuje alespoň jeden play
- postupuje se v něm v rámci jednoho managed node shora dolů
- spuštění playbooku:
ansible-playbook playbook.yml -i inventory.ini
Jak získat moduly
Zdroje