Trin 1: Oprettelse af en YAML (.yml) fil
Trin 2: Forståelse af playbooks: opgaver og handlere
Trin 3: Udførelse af playbooks
Playbooks i Ansible er det, der gør Ansible så handy. Playbooks giver mulighed for at udføre rutineopgaver med flere moduler. Hvornår skal vi bruge spillebøger?
Lad os tage et kig på en rutinemæssig vedligeholdelsesopgave: opdatering af dine servere. Vi behøver ikke bruge en playbook til dette, da det kun er én kommando: apt-get update. Vi kunne bare bruge en enkelt kommando til at opdatere software på alle vores servere. Men for at implementere noget som en web- eller databaseserver er der brug for mere arbejde: ikke kun en enkelt kommando. Playbooks er perfekt til denne sag. De giver dig mulighed for at bruge flere moduler, som er kommandoer, der kan udføres på en server. For eksempel er der moduler til at kopiere filer og udføre shell-kommandoer over SSH.
Så hvordan bruger vi playbooks? Lad os komme igang!
Trin 1: Oprettelse af en YAML ( .yml) fil
Ansible spillebøger er skrevet som .ymlfiler; Ansible kan ikke fortolke andre formater. Et eksempel på Ansible playbook ser sådan ud:
---
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
(Tattet fra Ansibles dokumentation)
Trin 2: Forståelse af playbooks: opgaver og handlere
Som du kan se, er der flere sektioner i denne spillebog. Først og fremmest vil du se hosts:linjen. Dette bestemmer, på hvilke værter afspilningsbogen skal køres. Du kan også se, at vi har defineret et par variabler, som kan tilgås og bruges i hele playbook. Du vil derefter se en række opgaver. Disse opgaver kunne f.eks. hedde noget som "Installer Apache". Den anden opgave i eksemplet skriver til Apache-konfigurationen. Du vil så se følgende:
notify:
- restart apache
Dette fortæller en opgave at udføre en bestemt handler. I dette tilfælde refererer det til handleren restart apache, som kan findes nederst i spillebogen:
handlers:
- name: restart apache
service: name=httpd state=restarted
Handlere er praktiske, fordi du, hvis du tager eksemplet, måske ønsker at genstarte Apache flere gange. I dette tilfælde behøver du ikke at gentage oprettelsen af en opgave for hver eneste gang, du skal genstarte Apache, men i stedet kan du bare henvise til den samme handler hver gang.
Trin 3: Udførelse af playbooks
Lad os sige, at du vil installere en Apache-server. Nå, som du kan se, har vi lige lavet en spillebog til det. Udførelse af playbooks kan udføres ved at bruge ansible-playbookkommandoen. For eksempel, hvis vi skulle udføre denne playbook på alle servere i webserverskategorien (du skal have denne kategori i din /etc/ansible/hostsfil), ville du køre følgende kommando, givet at navnet på din playbook-fil er apache.yml:
ansible-playbook -i webservers apache.yml
Tillykke! Du har nu udført en spillebog på alle servere i din webserverskategori. Du skal nu bare vente på, at implementeringen er færdig, og du vil se, at Apache er blevet installeret og konfigureret på disse servere.