Trinn 1: Opprette en YAML (.yml) fil
Trinn 2: Forstå lekebøker: oppgaver og behandlere
Trinn 3: Utføring av playbooks
Playbooks i Ansible er det som gjør Ansible så hendig. Playbooks gjør det mulig å utføre rutineoppgaver med flere moduler. Når bør vi bruke lekebøker?
La oss ta en titt på en rutinemessig vedlikeholdsoppgave: å oppdatere serverne dine. Vi trenger ikke å bruke en spillebok for dette, gitt at det bare er én kommando: apt-get update. Vi kunne bare bruke én enkelt kommando for å oppdatere programvare på alle serverne våre. Men for å distribuere noe som en web- eller databaseserver, kreves det mer arbeid: ikke bare en enkelt kommando. Playbooks er prefekt for denne saken. De lar deg bruke flere moduler, som er kommandoer som kan utføres på en server. For eksempel er det moduler for å kopiere filer og utføre shell-kommandoer over SSH.
Så hvordan bruker vi lekebøker? La oss komme i gang!
Trinn 1: Opprette en YAML ( .yml) fil
Ansible lekebøker er skrevet som .ymlfiler; Ansible kan ikke tolke andre formater. Et eksempel på Ansible playbook ser slik ut:
---
- 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
(Tatt fra Ansibles dokumentasjon)
Trinn 2: Forstå lekebøker: oppgaver og behandlere
Som du kan se, er det flere seksjoner i denne lekeboken. Først vil du se hosts:linjen. Dette avgjør hvilke verter som spilleboken skal kjøres på. Du kan også se at vi har definert et par variabler som kan nås og brukes gjennom hele spilleboken. Du vil da se en rekke oppgaver. Disse oppgavene kan for eksempel hete noe som "Installer Apache". Den andre oppgaven i eksemplet skriver til Apache-konfigurasjonen. Du vil da se følgende:
notify:
- restart apache
Dette forteller en oppgave å utføre en bestemt behandler. I dette tilfellet refererer det til handleren restart apache, som du finner nederst i spilleboken:
handlers:
- name: restart apache
service: name=httpd state=restarted
Håndtere er praktiske fordi, med eksempelet, vil du kanskje starte Apache på nytt flere ganger. I dette tilfellet trenger du ikke gjenta å lage en oppgave for hver gang du trenger å starte Apache på nytt, men i stedet kan du bare referere til den samme behandleren hver gang.
Trinn 3: Utføring av playbooks
Si at du vil distribuere en Apache-server. Vel, som du kan se, har vi nettopp laget en lekebok for det. Utførelse av spillebøker kan gjøres ved å bruke ansible-playbookkommandoen. For eksempel, hvis vi skulle kjøre denne spilleboken på alle servere i webserverskategorien (du må ha denne kategorien i /etc/ansible/hostsfilen din ), vil du kjøre følgende kommando gitt at navnet på spillebokfilen er apache.yml:
ansible-playbook -i webservers apache.yml
Gratulerer! Du har nå utført en spillebok på alle serverne i webserverskategorien din . Du må nå bare vente på at distribusjonen er ferdig, og du vil se at Apache har blitt installert og konfigurert på disse serverne.