Ansible Galaxy er simpelthen den nemmeste måde at finde allerede skrevne Ansible-roller, skabe og dele dine roller og hoppe ind i galaksen af Ansible-indhold!
====================Meddelelse i bedste sendetid! =====================
FOSDEM PGDay 2016 finder sted den 29. januar før FOSDEM, som er Europas største open source-begivenhed, og PostgreSQL Devroom finder sted den 31. januar på FOSDEM i Bruxelles.
Hvis du er interesseret i konfigurationsstyring, serverorkestrering, automatiseret implementering (det er derfor, du læser dette blogindlæg, ikke?), og du kan lide at arbejde med PostgreSQL (helt sikkert) på AWS (valgfrit), så vil du måske deltage i mit foredrag "Managing PostgreSQL with Ansible" den 29. januar, 12:30-13:20.
Tjek venligst den fantastiske tidsplan for begge begivenheder! Håber vi ses i Bruxelles i denne uge!
====================Meddelelse i bedste sendetid! =====================
Hej Ansible Galaxy!
Ansible har et stærkt fællesskab, som gør dem endnu mere magtfulde. Udviklere, der bidrager til Ansible, bidrager gerne, og brugere, der bruger Ansible til deres egne systemer, er glade for at bruge det.
Det Ansible-indhold, de refererede til på deres webside, er grundlæggende Ansible-roller. Lad os fortsætte med roller i dette blogindlæg og forsøge at forstå, hvad Ansible-rolle betyder, og hvad der er forskelle mellem roller, spillebøger og opgaver.
Hvad er en Ansible Rolle?
Du burde absolut bruge roller. Roller er fantastiske. Brug roller. Roller! Sagde vi det nok? Roller er fantastiske.
Før vi taler om roller, lad os huske definitionen af opgave og spillebog i Ansible-terminologi.
Opgave
Opgaver er ansvarlige for at kalde et modul med et specifikt sæt parametre.
Du kan læse mit tidligere blogindlæg for at lære om Ansible-moduler og tjekke Ansible Postgres-moduler med eksempler.
Hver Ansible-opgave indeholder et navn, et modul, der skal bruges, modulparametre og eventuelt forud-/efterbetingelser. De giver os mulighed for at kalde Ansible-moduler og videregive information til på hinanden følgende opgaver.
Opgaven nedenfor aktiverer filmodulet ved at angive 4 parametre.
- name: Ensure the data folder has right ownership
file: path="/var/lib/postgresql" state=directory owner=postgres group=postgres
Det sikrer, at 3 betingelser er sande:
- /var/lib/postgresql eksisterer som en mappe
- ejer af /var/lib/postgresql er "postgres"
- gruppen af /var/lib/postgresql er "postgres"
Hvis den ikke eksisterer, opretter Ansible mappen og tildeler ejer og gruppe. Hvis kun ejeren er anderledes, gør Ansible det til "postgres".
Playbook
Legebøger indeholder skuespil og skuespil indeholder opgaver. Opgaver kalder moduler og kan (valgfrit) trigger-handlere (kør én gang, kør til sidst) .
Nu kan vi se et meget simpelt playbook-eksempel nedenfor:
- 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
I denne legebog har vi to skuespil:
Første spil sikrer, at alle virtuelle maskiner er klar og fungerer på localhost. Den indlæser standardvariabler fra YAML-filer med navnet postgresql.yml og aws.yml. Du kan tænke på disse filer som konfigurationsfiler for PostgreSQL og AWS (i vores eksempel) roller og playbooks, da du kan se, at begge stykker bruger disse filer til standardvariabler. Dette spil kalder provision.yml-opgaven, som indeholder infrastrukturopsætningsopgaver.
Anden afspilning sikrer, at alle nødvendige PostgreSQL-afhængigheder er klar og fungerer på postgres-servere, som er defineret i inventarfilen. Dette spil kalder postgresql.yml opgave, som indeholder PostgreSQL opsætningsopgaver.
Hvis du gerne vil se hele spillebogen, er du velkommen til at tjekke mit lager og bidrage med det for at gøre det bedre.
For bedre at forstå playbook-konceptet kan du se eksempler på playbooks, der er foreslået i Ansible docs.
Lad os vende tilbage til at tale om roller. I Ansible;
- Playbooks organisere opgaver
- Roller organisere playbooks
Forestil dig, at vi har masser af uafhængige ressourcer at administrere (f.eks. webservere, PostgreSQL-servere, logning, overvågning, AWS). At lægge alt i en enkelt spillebog kan resultere i en løsning, der ikke kan vedligeholdes.
For at reducere denne kompleksitet hjælper roller os med:
Opdeling af opgaver i meget mindre spillebøger
Dette giver os mulighed for selvstændigt at fokusere på ressourcer. Det gør det nemmere at vedligeholde og fejlfinde. Det vil også være meget lettere at forstå strukturen.
Genbrug af konfigurationer, filer, skabeloner, opgaver
På denne måde kan vi nemt dele disse komponenter mellem playbooks uden at omskrive igen og igen.
Håndtering af playbook-afhængigheder
Når vi udfører en rolle, kan vi være sikre på, at alle forudsætningerne er opfyldt for den rolle.
Her kan du se en afhængighedsgraf og den tilsvarende rollekatalogstruktur:
PostgreSQL-roller i Ansible Galaxy
Mens jeg skrev dette blogindlæg var der 146 roller, der bliver som output af postgresql og postgres filtersøgning.
Jeg foreslår personligt at tjekke et par af disse roller og bruge dem i din arkitektur, hvis de er gode nok og opfylder dine behov; hvis de ikke er det, skal du tilmelde dig Ansible Galaxy og oprette dine egne roller.
God fornøjelse med hackingen!
For mere information om Ansible:
- Tjek deres velskrevne dokumenter.
- Se Ansible quick start-video, som er en virkelig nyttig tutorial.
- Følg deres webinar tidsplan, der er nogle fede kommende webinarer på listen.