GNU/Linux >> Tutoriels Linux >  >> Linux

Comment automatiser les redémarrages du système à l'aide du module de redémarrage Ansible

Dans cet article, j'explique comment utiliser Ansible pour redémarrer efficacement une machine Linux ou Windows. Ansible reboot module a été introduit dans Ansible 2.7 (2018), et maintenant ce module fait partie de ansible-base et inclus dans toutes les installations Ansible. Veuillez noter que le reboot Le module doit être exécuté à partir du nœud du contrôleur Ansible et ne fonctionnera pas avec des nœuds tels que localhost.

Pourquoi devez-vous redémarrer un nœud géré ?

Le redémarrage d'un système d'exploitation Linux est très rare. La plupart du temps, nous pouvons obtenir le résultat souhaité en redémarrant ou en rechargeant des services individuels après des modifications de configuration ou des mises à jour de packages. Mais dans certains cas, comme un correctif ou une mise à niveau du système, une opération de redémarrage est nécessaire pour terminer le flux de travail complet et l'effet. Si vous utilisez Ansible pour la gestion, vous devez inclure cette tâche de redémarrage pour réaliser une automatisation complète.

Les redémarrages automatisés sont très simples dans Ansible car vous disposez de plusieurs méthodes pour réaliser une tâche de redémarrage du système.

Pré-requis

Assurez-vous que le utilisateur_distant— que vous utilisez pour qu'Ansible se connecte au nœud géré - a sudo accès et l'autorisation de redémarrer le nœud.

La bonne vieille méthode - Redémarrez la commande et attendez

Dans le passé, nous avions l'habitude de redémarrer un nœud géré à l'aide d'Ansible par une méthode en deux étapes. (Il existe plusieurs façons, mais cette méthode est une pratique courante) :

  1. Nous déclencherons une commande de redémarrage à l'aide du shell module.
  2. Nous utiliserons un wait_for_connection module pour vérifier que le nœud revient en ligne après un redémarrage.

Laissez-moi vous montrer un exemple.

La première tâche est un simple shell module pour redémarrer la machine, et Ansible se déconnectera du nœud. Dans la tâche suivante, Ansible attendra que le nœud revienne en ligne, mais avec un délai d'attente de 300 secondes ou cinq minutes.

- name: Reboot the machine
  shell: "sleep 5 && reboot"

  async: 1
  poll: 0

- name: Wait for the machine to come back online
  wait_for_connection:
    connect_timeout: 60
    sleep: 5
    delay: 5
    timeout: 300

Assez simple non? Attendez, il existe une méthode meilleure et plus efficace avec le reboot Ansible module, et vous pouvez atteindre l'objectif avec une seule tâche.

[ Vous aimerez peut-être également lire : Présentation du nouveau hub d'automatisation Ansible ]

La nouvelle méthode efficace - redémarrer à l'aide du module de redémarrage Ansible

Ansible reboot module a été introduit dans Ansible 2.7 (en 2018), et maintenant ce module fait partie de ansible-base et inclus dans toutes les installations Ansible. Les pré-requis sont les mêmes, mais vous avez juste besoin d'une tâche simple avec un reboot module. Ansible reboot se chargera de redémarrer les systèmes ou le nœud géré, d'attendre que le système s'arrête, de revenir en ligne et de répondre aux commandes.

Vous pouvez simplement redémarrer la machine sans aucune option supplémentaire.

- name: Reboot the machine with all defaults options
  reboot:

Il existe des options comme reboot_timeout pour attendre un délai d'attente ou pre_reboot_delay , qui attendra le nombre de secondes spécifié avant de redémarrer. Reportez-vous à la documentation du module Ansible Reboot pour plus de détails.

Voici donc notre playbook avec une tâche de redémarrage. Vous pouvez voir que c'est très simple et facile à gérer.

---
- name: Linux Reboot Demo
  hosts: rhel7-base
  gather_facts: no
  remote_user: devops
  become: true
 
  tasks:
    - name: Reboot the machine (Wait for 5 min)
      reboot:
        reboot_timeout: 300

Remarques importantes

Si votre utilisateur_distant est configuré avec un sudo mot de passe, assurez-vous d'ajouter -K argument et entrez le sudo le mot de passe. Voici un exemple :

$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K

Si vous utilisez Ansible Tower, ajoutez le sudo mot de passe dans l'interface des informations d'identification, comme indiqué ici :

Testons le playbook.

$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
BECOME password: 
 
PLAY [Linux Reboot Demo] ************************************************************************************
 
TASK [Reboot the machine (Wait for 5 min)] ******************************************************************
changed: [rhel7-base.lab.local]
 
PLAY RECAP **************************************************************************************************
rhel7-base.lab.local       : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    

Redémarrer une machine Windows

Qu'en est-il du redémarrage des machines Windows ? Comme vous le savez, vous pouvez gérer des machines Windows à l'aide d'Ansible, et cette tâche de redémarrage sera nécessaire dans le cadre de votre workflow d'automatisation.

La bonne nouvelle est que, comme toutes les autres alternatives Windows, il existe un ansible dédié win_reboot module pour gérer cette tâche. Voici à quoi ressemble le paramètre :

- name: Reboot a Windows Machine
  ansible.windows.win_reboot:
    reboot_timeout: 360

Reportez-vous à la documentation du module Ansible win_reboot pour plus de détails.

[ Un guide gratuit de Red Hat :5 étapes pour automatiser votre entreprise. ] 

Récapitulez

Utiliser reboot ou win_reboot module dans Ansible est assez simple, et vous l'avez déjà appris. Assurez-vous que vous disposez des tâches de pré-redémarrage (redémarrage uniquement si nécessaire) et de post-redémarrage (pour vérifier le service ou la configuration après le redémarrage) appropriées dans votre playbook Ansible, le cas échéant.

Références :

  • Redémarrage Ansible
  • Ansible win_reboot

Linux
  1. 10 modules Ansible pour l'automatisation du système Linux

  2. Comment changer l'identité d'un système Linux

  3. Comment vérifier la disponibilité du système sous Linux

  4. Comment redémarrer Linux en utilisant la ligne de commande

  5. Comment rediriger la sortie de system() vers un fichier ?

Comment trouver qui a redémarré le système Linux et quand

Comment redémarrer CentOS 8

Comment automatiser l'installation et le déploiement de Podman à l'aide d'Ansible

Comment redémarrer Debian en utilisant la ligne de commande

Comment gérer les journaux système à l'aide de Webmin

Comment utiliser la commande fd sur le système Linux