GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment créer des playbooks Ansible pour l'automatisation informatique

Playbook n'est rien d'autre qu'Ansible des scripts de gestion de la configuration, et il peut être utilisé pour gérer les déploiements et les configurations des nœuds gérés. Playbook contient un ensemble de politiques que vous souhaitez que vos nœuds gérés appliquent ou un ensemble d'étapes dans un processus informatique général.

Les playbooks sont écrits et développés dans un langage textuel simple. La syntaxe que nous utilisons dans les playbooks est différente des commandes normales que nous avons utilisées pour tester dans le didacticiel précédent.

Dans le tutoriel précédent, nous avons vu comment installer Ansible sur CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9 .

Créer un manuel Ansible

Pour cette démo, nous allons créer un playbook appelé web.yml pour configurer un hôte pour exécuter un serveur Web Apache . Chaque playbook est composé d'un ou plusieurs plays dans une liste.

Pour chaque jeu dans le playbook, vous pouvez choisir les machines de votre infrastructure à cibler et l'utilisateur distant pour effectuer les tâches.

vi web.yml

CentOS/RHEL Playbook :

---
- hosts: 192.168.1.20
  remote_user: raj
  become: yes
  become_method: su

  tasks:
  - name: Install Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: Enable Apache on System Boot
    service: name=httpd enabled=yes

    notify:
    - start apache
    - setup firewalld
    - reload firewalld

  handlers:
    - name: start apache
      service: name=httpd state=started
    - name: setup firewalld
      firewalld:
        service: http
        permanent: true
        state: enabled
    - name: reload firewalld
      service: name=firewalld state=restarted

Livret Ubuntu/Debian :

---
- hosts: 192.168.1.30
  remote_user: raj
  become: yes
  become_method: sudo

  tasks:
  - name: Install Apache
    apt:
      name: apache2
      update_cache: yes
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=www-data group=www-data mode=0644

Créez un fichier HTML de démonstration (/etc/ansible/index.html ). Ce fichier HTML sera placé dans le DocumentRoot par défaut du serveur Apache sur le nœud géré.

vi /etc/ansible/index.html

HTML :

<html>
  <head>
    <title>Apache is installed by Ansible</title>
  </head>
  <body>
  <h1>Apache is installed by Ansible</h1>
  <p>Now, Apache is managed through Ansible</p>
  </body>
</html>

Décomposer le manuel Ansible

Maintenant, nous allons parcourir chaque section du playbook web.yml fichier pour comprendre ce que cela signifie.

Le fichier commence par

---

Tous les fichiers YAML doivent commencer par (trois tirets) --- et cela indique le début d'un document. YAML est très sensible à l'espace et l'utilise pour regrouper différentes informations. Les espaces doivent être cohérents dans votre fichier pour être lus correctement. Les éléments au même niveau d'indentation sont considérés comme des éléments frères.

Hôte et utilisateurs

---
- hosts: 192.168.1.20
  remote_user: raj

La ligne hosts est une liste d'un ou plusieurs groupes (ex. demo-servers) ou modèles d'hôtes (ex. 192.168.1.20), séparés par deux-points. En plus de l'hôte, vous pouvez mentionner le compte d'utilisateur distant.

---
- hosts: 192.168.1.20
  remote_user: raj
  become: yes
  become_method: su

Vous devez devenir un utilisateur root pour installer des packages sur un système. Pour ce faire, vous pouvez utiliser des méthodes d'escalade de privilèges, telles que su ou sudo . Chaque fois que vous utilisez ce type de méthodes d'escalade de privilèges, vous devez exécuter un playbook ansible avec --ask-become-pass arguments.

Tâches

Maintenant, nous avons un ensemble de tâches.

Tâches
  tasks:
  - name: Install Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: Enable Apache on System Boot
    service: name=httpd enabled=yes

Chaque jeu contient une liste de tâches, celles-ci sont exécutées dans l'ordre, une à la fois, contre toutes les machines correspondant au modèle hôte, avant de passer à la tâche suivante.

Lorsque vous exécutez le playbook, il s'exécute de haut en bas et les hôtes dont les tâches ont échoué sont retirés de la rotation pour l'ensemble du playbook.

Chaque tâche doit avoir un nom et est utilisé pour afficher l'activité en cours lors de l'exécution du playbook. Cette sortie est destinée aux humains, il est donc agréable d'avoir des descriptions raisonnablement bonnes de chaque étape de la tâche.

Ici, va installer la dernière version d'Apache et copier le code HTML de démonstration (/etc/ansible/index.html) dans le répertoire /var/www/html du nœud géré, puis permettre au service Apache de démarrer automatiquement lors du démarrage du système.

Notifier

Ceux-ci notifient les actions sont déclenchées à la fin de chaque bloc de tâches dans un playbook et ne seront déclenchées qu'une seule fois, même si elles sont notifiées par plusieurs tâches différentes.

    notify:
    - start apache
    - setup firewalld
    - reload firewalld

La notification l'élément contient un élément appelé start apache , configurer le pare-feu et recharger le pare-feu . Il s'agit de la référence aux gestionnaires qui exécutent des fonctions spécifiques lorsqu'ils sont appelés à partir d'une tâche. Nous allons définir le gestionnaire de démarrage apache et firewalld.

Gestionnaire

Les gestionnaires sont des listes de tâches, pas vraiment différentes des tâches régulières. Mais, ils ne s'exécutent que lorsqu'ils ont été informés par une tâche que des modifications ont eu lieu sur le système client.

  handlers:
    - name: start apache
      service: name=httpd state=started
    - name: setup firewalld
      firewalld:
        service: http
        permanent: true
        state: enabled
    - name: reload firewalld
      service: name=firewalld state=restarted

Dans notre cas, nous avons un gestionnaire qui démarre le service Apache et configure le pare-feu après l'installation du package.

Cette action se produit parce que le notificateur a notifié le gestionnaire des modifications apportées au système, ce qui signifie que le package Apache devait être installé et, avec ce fichier de démonstration, devait être copié dans DocumentRoot.

Exécuter Ansible Playbook

Une fois que vous avez un playbook prêt, vous pouvez l'exécuter en utilisant la commande ci-dessous.

ansible-playbook web.yml -f 1 --ask-become-pass

OR

ansible-playbook web.yml -f 1 --ask-become-pass -u raj --ask-pass

livre de lecture ansible  :Commande pour exécuter des playbooks Ansible.

web.yml : Fichier YAML (fichier Ansible Playbook - que nous avons créé au début de ce tutoriel)

-f 1 :playbook utilisant un niveau de parallélisme de 1

–demander-devenir-passer  :Puisque nous devons devenir un utilisateur root pour installer les packages.

-u raj :Utilisateur sur le nœud géré

Sortie :

Supposons que vous ayez créé un playbook pour un groupe (par exemple, des serveurs de démonstration) de serveurs et que vous souhaitiez exécuter un playbook sur un hôte spécifique. La commande ci-dessous exécute le playbook uniquement sur 192.168.1.40 .

ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass

Vérifier les actions du playbook Ansible

Après avoir exécuté un playbook, ouvrez votre navigateur et accédez à l'hôte distant mentionné dans l'inventaire ansible.

Dans mon cas, l'URL sera

http://192.168.1.20

Vous devriez maintenant obtenir la page ci-dessus Apache est installé par Ansible , et cette page nous confirme qu'Apache a été installé par Ansible.

Vous avez appris à créer un playbook simple pour l'automatisation de l'installation d'Apache. Vous pouvez trouver plus d'informations sur la création de playbooks ici .

C'est tout.


Cent OS
  1. Comment j'utilise Ansible et anacron pour l'automatisation

  2. Comment créer un Playbook Ansible

  3. Démystifier Ansible pour les administrateurs système Linux

  4. Comment créer un utilisateur Linux avec Ansible

  5. comment créer un playbook Ansible pour obtenir les versions du système d'exploitation des hôtes distants ?

Comment utiliser les gestionnaires dans Ansible Playbook

Comment créer des rôles Ansible et les utiliser dans Playbook

Guide Ansible :créer un playbook Ansible pour la pile LEMP

Comment configurer l'outil d'automatisation Ansible dans CentOS 7

Comment définir et utiliser des gestionnaires dans des playbooks Ansible

Comment créer et exécuter un fichier Playbook Ansible