Playbooks in Ansible zijn wat Ansible zo handig maakt. Met Playbooks kunnen routinetaken met verschillende modules worden uitgevoerd. Wanneer moeten we playbooks gebruiken?
Laten we eens kijken naar een routineonderhoudstaak: het bijwerken van uw servers. We zouden niet moeten een draaiboek voor deze, gezien het feit dat het is gewoon een commando te gebruiken: apt-get update. We kunnen slechts één opdracht gebruiken om software op al onze servers bij te werken. Maar om iets als een web- of databaseserver te implementeren, is meer werk nodig: niet slechts een enkele opdracht. Playbooks zijn perfect voor dit geval. Hiermee kunt u meerdere modules gebruiken, dit zijn opdrachten die op een server kunnen worden uitgevoerd. Er zijn bijvoorbeeld modules voor het kopiëren van bestanden en het uitvoeren van shell-opdrachten via SSH.
Dus hoe gebruiken we playbooks? Laten we beginnen!
Stap 1: een YAML ( .yml) -bestand maken
Ansible playbooks worden geschreven als .ymlbestanden; Ansible kan geen andere formaten interpreteren. Een voorbeeld van Ansible playbook ziet er als volgt uit:
---
- 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
(Overgenomen uit de documentatie van Ansible)
Stap 2: Playbooks begrijpen: taken en handlers
Zoals je kunt zien, zijn er meerdere secties in dit playbook. Ten eerste ziet u de hosts:lijn. Dit bepaalt op welke hosts het playbook moet worden uitgevoerd. Je kunt ook zien dat we een aantal variabelen hebben gedefinieerd die toegankelijk en gebruikt kunnen worden in het hele playbook. Je ziet dan een aantal taken. Deze taken kunnen bijvoorbeeld een naam hebben als "Apache installeren". De tweede taak in het voorbeeld schrijft naar de Apache-configuratie. Je ziet dan het volgende:
    notify:
    - restart apache
Dit vertelt een taak om een bepaalde handler uit te voeren. In dit geval verwijst het naar de handler restart apache, die je onderaan het playbook kunt vinden:
  handlers:
    - name: restart apache
      service: name=httpd state=restarted
Handlers zijn handig omdat u, als voorbeeld, misschien meerdere keren Apache opnieuw wilt opstarten. In dit geval hoeft u niet elke keer dat u Apache opnieuw moet opstarten een taak te herhalen, maar in plaats daarvan kunt u elke keer naar dezelfde handler verwijzen.
Stap 3: Playbooks uitvoeren
Stel dat u een Apache-server wilt implementeren. Zoals je kunt zien, hebben we daar zojuist een playbook voor gemaakt. Playbooks uitvoeren kan met de ansible-playbookopdracht. Als we dit playbook bijvoorbeeld op alle servers in de webserverscategorie zouden uitvoeren (u moet deze categorie in uw /etc/ansible/hostsbestand hebben), voert u de volgende opdracht uit, aangezien de naam van uw playbook-bestand is apache.yml:
ansible-playbook -i webservers apache.yml
Gefeliciteerd! Je hebt nu een playbook uitgevoerd op alle servers in je webserverscategorie. U hoeft nu alleen maar te wachten tot de implementatie is voltooid en u zult zien dat Apache met succes op deze servers is geïnstalleerd en geconfigureerd.