Découvrez Ansible Playbook pour automatiser les tâches.

Auparavant, nous avons discuté Introduction d'Ansible, guide d'installation, et ensuite, parlons de Playbook et de ses éléments de base.

What is Ansible Playbook?

Le playbook est le langage d'automatisation Ansible. C'est un simple fichier avec un ensemble d'instructions. C'est dans les playbooks que nous définissons ce que nous voulons qu'Ansible fasse. Les playbooks contiennent des jeux qui exécutent des tâches, et ces tâches exécutent des modules. Leurs tâches s'exécutent de manière séquentielle.

Par exemple, cela peut être aussi simple que d'exécuter une série de commandes sur différents serveurs dans une séquence et de redémarrer ces serveurs dans l'ordre. Ou cela peut être aussi complexe que de déployer et de provisionner des centaines de machines virtuelles dans un cloud public et privé, y compris leur équilibrage de charge, leur surveillance et leurs configurations réseau.

Playbook Language

Les playbooks sont de simples fichiers écrits en code YAML.

YAML est un langage de sérialisation de données. Il est lisible par l'homme et par la machine. Vous n'avez besoin d'aucune compétence de codage particulière pour écrire des codes YAML. Vous pouvez considérer le langage de sérialisation des données comme un traducteur pour décomposer toute votre structure de données et les sérialiser dans un ordre qui peut être reconstruit pour une utilisation ultérieure. Vous pouvez utiliser cette structure de données reconstruite dans le même environnement ou même dans un environnement différent.

Voici un exemple de fichier YAML pour installer mysql:

---
- name: Install MySQL
  hosts: geekflare-mysql-service
  tasks:
    - name: Install MySQL
      action: $ansible_pkg_mgr pkg=mysql-server state=installed
    - name: Add Python MySQL DB
      action: $ansible_pkg_mgr pkg=python-mysqldb state=installed

Ansible Playbook Basics

Cette partie de l'article couvre les concepts de base d'Ansible pour en savoir plus sur Ansible Playbook.

Hôtes et utilisateurs

Ansible a besoin de machines cibles dans l'infrastructure sur lesquelles les jeux doivent être déployés à partir du playbook Ansible. Les hôtes sont ajoutés à l'inventaire Ansible via leurs adresses IP. Les hôtes sont une liste d'un ou plusieurs groupes ou modèles d'hôtes séparés par deux points. Remote_user contient le nom du compte utilisateur.

---
- hosts: ProdServers
  remote_user: geekflare

Variables

Les variables vous permettent de modifier le fonctionnement d'un playbook. Ils peuvent être utilisés presque partout dans le playbook et peuvent être hérités d'un inventaire, défini explicitement au moment de l'exécution, découvert au début d'une exécution de playbook. Vous pouvez définir un nom de variable à l'aide de lettres, de chiffres et de traits de soulignement, mais il ne doit commencer que par une lettre.

Par exemple, port_01 est une variable valide, tandis que 01_post est une variable non valide. Voici un exemple de variables dans un Playbook Ansible :

vars:
    http_port: 80
    max_clients: 200

stocks

Pour exécuter un playbook, vous avez besoin d'une liste de cibles sur lesquelles vous voulez que l'automatisation se produise. C'est ce que fait un inventaire. Les listes d'inventaire peuvent être créées et stockées de différentes manières, y compris des fichiers statiques, c'est-à-dire des hôtes Ansible. Ou il peut être généré dynamiquement via un script d'inventaire qui extraira une liste d'hôtes pour une source externe.

Vous pouvez également spécifier une variable dans le cadre d'une liste d'inventaire. Les inventaires sont finalement une liste de choses que vous souhaitez automatiser.

[webservers]
192.168.20.1
192.168.20.2
192.168.20.4
[dbservers]
172.17.1.56
172.17.1.57

Tâches

Joue dans des tâches d'exécution de playbook ansible. La tâche est responsable de l'exécution des modules ansible. À la fois, une seule tâche peut être exécutée et les tâches sont exécutées dans un ordre séquentiel. Leurs tâches sont écrites en YAML, qui est assez proche de l'anglais.

Par exemple: installer nom_package, Mettre à jour nom_logiciel, etc. Voici un exemple de tâche dans le playbook Ansible pour installer httpd:

tasks:
  - name: Install httpd Package
    yum: name=httpd state=latest

Gestionnaires

Les gestionnaires sont un type particulier de tâches.

Ils peuvent être déclenchés par une tâche et sont exécutés une fois à la fin du jeu. Il est utilisé pour envoyer des notifications en cas de changement dans le fichier de configuration, par exemple, notifier au service de démarrer apache une fois qu'il est installé. La syntaxe «notifier» est utilisée pour appeler les gestionnaires. Voici un exemple de gestionnaire pour redémarrer apache:

---
- hosts: all
  tasks:
  - name: ensure apache is at the latest version
    yum: name=httpd state=latest
    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

Create and Run Your First Ansible Playbook

Laissez-moi vous dire comment écrire un livre de jeu. Chaque playbook commence par trois tirets (-) en haut.

La première chose que vous mentionnez dans un Playbook Ansible est les machines hôtes sur lesquelles vous souhaitez exécuter le Playbook.

Ensuite, vous pouvez mentionner des variables en rassemblant des faits; puis vous pouvez mentionner les différentes tâches que vous souhaitez effectuer. Maintenant, rappelez-vous que la tâche est exécutée dans le même ordre que vous les écrivez. Par exemple, vous souhaitez installer d'abord le logiciel A, puis le logiciel B, assurez-vous que la première tâche écrite dans le playbook serait d'installer le logiciel A et que la tâche suivante pourrait installer le logiciel B.

Ensuite, vous avez des gestionnaires en bas. Les gestionnaires sont également des tâches, mais la différence est que pour exécuter des gestionnaires, vous avez besoin d'une sorte de déclencheurs dans la liste des tâches pour exécuter les gestionnaires.

Laissez-moi vous montrer comment créer un playbook ansible pour installer et démarrer nginx sur un hôte et le démarrer.

Créez un fichier .yml où vous mettrez vos codes YAML pour créer un playbook ansible.

gedit nginx.yml

Mettez le code YAML ci-dessous dans ce fichier et enregistrez le fichier.

---
- hosts: Client
  sudo: yes
  vars:
    - server_port: 8080

  tasks:
    - name: Installs nginx web server
      apt: pkg=nginx state=installed update_cache=true
      notify:
        - start nginx

  handlers:
    - name: start nginx
      service: name=nginx state=started

Le fichier YAML ci-dessus commence par hôtes, Je souhaite exécuter ce playbook sur la machine cliente (client). L'adresse IP du client est déjà enregistrée dans /etc/ansible/hosts fichier.

La ligne suivante permet d'exécuter les tâches avec sudo Privilèges.

Alors j'ai défini port de serveur comme variable dans ce playbook.

Puis vient mon premier tâche dans ce playbook ansible pour installer un serveur Web Nginx. Cette tâche a également notifier paramètre, ce qui signifie après cette tâche un gestionnaire avec run.

Enfin, j'ai écrit un maître pour démarrer nginx sur la machine cliente.

Maintenant que vous êtes clair avec les codes YAML dans le playbook ansible, exécutons le playbook. Voici la syntaxe pour exécuter un playbook ansible:

ansible-playbook file_name.yml

Maintenant, je vais exécuter le playbook ansible, que je crée pour installer et démarrer nginx.

[email protected]:/home/geekflare# ansible-playbook nginx.yml 

PLAY [Client] ******************************************************************

TASK [Gathering Facts] *********************************************************
ok: [node1]

TASK [Installs nginx web server] ***********************************************

changed: [node1]

RUNNING HANDLER [start nginx] **************************************************
ok: [node1]

PLAY RECAP *********************************************************************
node1                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Exécutez la commande ci-dessous pour vérifier si le serveur nginx a été installé et démarré correctement par le playbook ansible.

[email protected]:/home/geekflare# ps waux | grep nginx
root      3021  0.0  0.0  77676  1516 ?        Ss   15:27   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

Conclusion

C'était à propos du livre de jeu Ansible. J'espère que cet article vous a aidé à apprendre comment créer et exécuter un playbook Ansible. Regarde ça Parcours, si vous souhaitez apprendre des sujets avancés dans Ansible, y compris les rôles, Jinja2, les recherches, les filtres, les modules personnalisés.