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âchestasks: - 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.20Vous 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.