Ansible Galaxy je jednoduše nejjednodušší způsob, jak najít již napsané role Ansible, vytvořit a sdílet své role a skočit do galaxie obsahu Ansible!
====================Oznámení v hlavním vysílacím čase! =====================
FOSDEM PGDay 2016 se bude konat 29. ledna před FOSDEM, což je největší evropská open source událost, a PostgreSQL Devroom se bude konat 31. ledna na FOSDEM v Bruselu.
Pokud vás zajímá správa konfigurace, orchestrace serveru, automatizované nasazení (proto čtete tento blogový příspěvek, že?) a rádi pracujete s PostgreSQL (pro jistotu) na AWS (volitelně), pak se možná budete chtít připojit k mé přednášce „Správa PostgreSQL pomocí Ansible“ 29. ledna, 12:30-13:20.
Podívejte se prosím na úžasný harmonogram obou akcí! Doufám, že se tento týden uvidíme v Bruselu!
====================Oznámení v hlavním vysílacím čase! =====================
Ahoj Ansible Galaxy!
Ansible má silnou komunitu, díky které jsou ještě mocnější. Vývojáři, kteří přispívají do Ansible, rádi přispívají a uživatelé, kteří Ansible používají pro své vlastní systémy, jej rádi používají.
Obsah Ansible, na který odkazovali na své webové stránce, jsou v podstatě role Ansible. Pokračujme rolemi v tomto blogovém příspěvku a pokusme se pochopit, co role Ansible znamená a jaké jsou rozdíly mezi rolemi, příručkami a úkoly.
Co je to ansible role?
Rozhodně byste měli používat role. Role jsou skvělé. Používejte role. Role! Řekli jsme to dost? Role jsou skvělé.
Než budeme mluvit o rolích, připomeňme si definici úkolu a příručky v terminologii Ansible.
Úkol
Úlohy jsou zodpovědné za volání modulu se specifickou sadou parametrů.
Můžete si přečíst můj předchozí příspěvek na blogu, kde se dozvíte více o modulech Ansible, a podívejte se na moduly Ansible Postgres s příklady.
Každá úloha Ansible obsahuje název, modul, který má být vyvolán, parametry modulu a volitelně předběžné/následné podmínky. Umožňují nám volat moduly Ansible a předávat informace po sobě jdoucím úkolům.
Úloha níže vyvolá souborový modul poskytnutím 4 parametrů.
- name: Ensure the data folder has right ownership
file: path="/var/lib/postgresql" state=directory owner=postgres group=postgres
Zajišťuje, že jsou splněny 3 podmínky:
- /var/lib/postgresql existuje jako adresář
- vlastníkem /var/lib/postgresql je „postgres“
- skupina /var/lib/postgresql je „postgres“
Pokud neexistuje, Ansible vytvoří adresář a přiřadí vlastníka a skupinu. Pokud se liší pouze vlastník, Ansible z něj udělá „postgres“.
Příručka
Playbooky obsahují hry a hry obsahují úkoly. Úkoly volají moduly a mohou (volitelně) manipulátory spouště (spustit jednou, spustit na konci) .
Nyní se můžeme podívat na velmi jednoduchý příklad příručky níže:
- name: Ensure all virtual machines are ready
hosts: 127.0.0.1
connection: local
vars_files: # load default variables from YAML files below
- 'defaults/postgresql.yml'
- 'defaults/aws.yml'
tasks:
- include: 'tasks/provision.yml' # load infrastructure setup tasks
- name: Ensure all required PostgreSQL dependencies ready
hosts: postgresql-all # manage all PostgreSQL servers
sudo: yes
sudo_user: root
vars_files:
- 'defaults/postgresql.yml'
- 'defaults/aws.yml'
tasks:
- include: 'tasks/postgresql.yml' # load PostgreSQL setup tasks
V této příručce máme dvě hry:
První hraní zajišťuje, že všechny virtuální stroje jsou připraveny a fungují na localhost. Načte výchozí proměnné ze souborů YAML s názvem postgresql.yml a aws.yml. Tyto soubory si můžete představit jako konfigurační soubory pro role PostgreSQL a AWS (v našem příkladu) a playbooky, protože můžete vidět, že obě hry používají tyto soubory pro výchozí proměnné. Tato hra volá úlohu provide.yml, která obsahuje úlohy nastavení infrastruktury.
Druhé přehrání zajišťuje připravenost všech požadovaných závislostí PostgreSQL a funguje na serverech postgres, které jsou definovány v souboru inventáře. Tato hra volá úlohu postgresql.yml, která obsahuje úlohy nastavení PostgreSQL.
Pokud byste chtěli vidět celou příručku, můžete se podívat na můj repozitář a přispět k jeho vylepšení.
Pro lepší pochopení konceptu příručky se můžete podívat na ukázkové příručky navržené v dokumentu Ansible.
Vraťme se k povídání o rolích. V Ansible;
- Příručky organizovat úkoly
- Role organizovat příručky
Představte si, že máme spoustu nezávislých zdrojů ke správě (např. webové servery, servery PostgreSQL, protokolování, monitorování, AWS). Umístění všeho do jediné příručky může vést k neudržitelnému řešení.
Ke snížení této složitosti nám role pomáhají:
Rozdělení úkolů do mnohem menších příruček
To nám umožňuje soustředit se na zdroje nezávisle. To usnadňuje údržbu a ladění. Také bude mnohem snazší porozumět struktuře.
Opětovné použití konfigurací, souborů, šablon, úkolů
Tímto způsobem můžeme snadno sdílet tyto komponenty mezi playbooky, aniž bychom je museli znovu a znovu přepisovat.
Zvládání závislostí příručky
Když vykonáváme roli, můžeme si být jisti, že jsou pro tuto roli splněny všechny předpoklady.
Zde můžete vidět graf závislostí a odpovídající strukturu adresářů rolí:
Role PostgreSQL v Ansible Galaxy
Zatímco jsem psal tento blogový příspěvek, bylo 146 rolí, které se střídaly jako výstup postgresql a postgres filtrovat vyhledávání.
Osobně doporučuji zkontrolovat několik těchto rolí a použít je ve vašich architekturách, pokud jsou dostatečně dobré a vyhovují vašim potřebám; pokud nejsou, přihlaste se do Ansible Galaxy a vytvořte si vlastní role.
Šťastné hackování!
Další informace o Ansible:
- Podívejte se na jejich dobře napsané dokumenty.
- Podívejte se na video rychlého startu Ansible, které je opravdu užitečným návodem.
- Řiďte se plánem jejich webinářů, na seznamu je několik skvělých nadcházejících webinářů.