Utilisation d’Ansible pour arrêter, redémarrer ou arrêter les équipements qui s’exécutent Junos OS
RÉSUMÉ Utilisez les modules ansibles Juniper Networks pour arrêter, redémarrer ou arrêter les équipements qui s’exécutent Junos OS.
Utilisation d’Ansible pour arrêter, redémarrer ou arrêter les équipements
Juniper Networks ansible prend en charge Ansible pour gérer les équipements exécutant Junos OS et fournit des modules Ansible qui vous permettent d’arrêter, de redémarrer ou d’arrêter un équipement. Le tableau 1 présente les modules disponibles.
Ensemble de contenus |
Nom du module |
---|---|
|
|
|
À partir Juniper.junos
de la version 2.0.0, le module remplace les juniper_junos_system
fonctionnalités des junos_shutdown
junos_zeroize
modules et.
Vous pouvez utiliser les modules pour demander les opérations suivantes sur les équipements s’exécutant Junos OS. Par défaut, les modules exécutent immédiatement le fonctionnement demandé et exécutent l’opération sur tous les moteurs de routage en moteur de routage configuration Virtual Chassis réseau.
Arrêt, redémarrage ou arrêt immédiat du système
Arrêt, redémarrage ou arrêt du fonctionnement avec un délai en option
Arrêt, redémarrage ou arrêt programmé à une date et une heure spécifiques
Les system
juniper_junos_system
modules et les modules nécessitent un seul argument, action
qui définit l’action exécutée par le module. Le tableau 2 définit la valeur de paramètre requise pour arrêter, redémarrer ou arrêter un équipement et fournit une brève description de chaque action ainsi que la commande CLI action
correspondante. Pour plus d’informations sur l’action, consultez la voir Utiliser Ansible pour restaurer un équipement exécutant Junos OS paramètres de configuration par défaut "zeroize"
en usine.
Valeur des |
Description |
Commande de CLI équivalent |
---|---|---|
|
Arrêt gratuit du logiciel Junos OS, tout en maintenant la puissance du système |
|
|
Redémarrez le Junos OS logiciel |
|
|
Arrêt du logiciel de Junos OS, puis mise hors d’alimentation des moteurs de routage |
|
Le manuel Ansible suivant utilise le module pour redémarrer immédiatement tous les moteurs de routage sur les hôtes du groupe system
action: "reboot"
d’inventaire spécifié.
--- - name: Reboot devices running Junos OS hosts: dc1 connection: local gather_facts: no tasks: - name: Reboot all REs on the device juniper.device.system: action: "reboot"
Comment arrêter, redémarrer ou arrêter la panne en un temps ou à une heure spécifiée
Pour reporter l’arrêt, le redémarrage ou l’arrêt du fonctionnement d’un certain nombre de minutes, définissez les paramètres facultatifs au nombre de minutes que le système doit attendre avant de in_min
l’exécuter. La tâche suivante demande un redémarrage de tous les moteurs de routage en 30 minutes:
--- - name: Reboot devices running Junos OS hosts: dc1 connection: local gather_facts: no tasks: - name: Reboot all REs in 30 minutes juniper.device.system: action: "reboot" in_min: 30
Pour planifier l’arrêt, le redémarrage ou la mise hors service à un moment spécifique, inclure le paramètre, qui prend une chaîne qui peut être spécifiée de l’une des façons at
suivantes:
now
— Lancez immédiatement l’arrêt, redémarrez ou arrêtez le logiciel.+minutes
—Nombre de minutes à partir d’aujourd’hui lorsque l’action demandée est lancée.yymmddhhmm
—Heure absolue pour lancer l’action demandée, spécifiée comme année, mois, jour, heure et minute.hh:mm
—Heure absolue le jour actuel pour lancer l’action demandée, spécifiée dans un délai de 24 heures.
La tâche suivante programme l’arrêt du système de tous les moteurs de routage à 22 h 30 le jour actuel:
tasks: - name: Shut down all REs at 22:30 on the current day juniper.device.system: action: "shutdown" at: "22:30"
Comment spécifier la cible moteur de routage
Par défaut, les modules et les modules exécutent l’opération requise sur tous les moteurs de routage en moteur de routage configuration Virtual Chassis system
juniper_junos_system
double. Vous pouvez également demander aux modules d’effectuer l’opération uniquement sur la moteur de routage à laquelle l’application est connectée, ou de réaliser le fonctionnement sur tous les moteurs de routage, à l’exception de celui auquel l’application est connectée.
Pour spécifier les moteurs de routage, vous utilisez all_re
les other_re
paramètres. Le tableau 3 résume les valeurs et les valeurs requises pour exécuter le fonctionnement demandé sur des moteurs all_re
de other_re
routage spécifiques.
Moteurs de routage affectés |
|
|
---|---|---|
Tous les moteurs de routage (par défaut) |
Omettre ou définir |
– |
Seule la moteur de routage |
Définissez sur |
– |
Tous les moteurs de routage, sauf moteur de routage auquel l’application est connectée |
– |
Définissez sur |
Pour indiquer explicitement que l’opération doit être exécutée sur tous les moteurs de routage dans une configuration moteur de routage ou Virtual Chassis double, inclure l’argument( c’est-à-dire l’argument par all_re: True
défaut).
--- - name: Reboot devices running Junos OS hosts: dc1 connection: local gather_facts: no tasks: - name: Reboot all Routing Engines juniper.device.system: action: "reboot" all_re: True
Pour effectuer l’action demandée uniquement sur le moteur de routage auquel l’application est connectée, inclure all_re: False
l’argument.
tasks: - name: Reboot only the connected Routing Engine juniper.device.system: action: "reboot" all_re: False
Pour effectuer l’action requise sur tous les moteurs de routage du système, à l’exception du moteur de routage auquel l’application est connectée, inclure other_re: True
l’argument.
tasks: - name: Shut down all other Routing Engines juniper.device.system: action: "shutdown" other_re: True
Redémarrage d’un hôte de VM
Sur les équipements reposant sur des moteurs de routage avec prise en charge d’hôtes de machines virtuelles, Junos OS fonctionne sous la forme d’une machine virtuelle par rapport à un hôte linux (hôte VM). Les system
juniper_junos_system
modules et les modules soutiennent l’argument, ce qui vous permet de vmhost
redémarrer un hôte de VM. Lorsque vous inclut les arguments et les deux, le système redémarre le système d’exploitation hôte et les Junos OS compatibles sur tous les moteurs de routage en exécutant le RPC, qui correspond à la commande du action: "reboot"
vmhost: True
mode <request-vmhost-reboot>
request vmhost reboot
opérationnel.
Le manuel suivant effectue un redémarrage de l’hôte VM, qui redémarre à la fois le système d’exploitation hôte et l’Junos OS.
--- - name: Reboot VM Hosts hosts: vm_hosts connection: local gather_facts: no tasks: - name: Reboot VM host juniper.device.system: action: "reboot" vmhost: True all_re: False
Exemple: Utilisation d’Ansible pour redémarrer les équipements qui s’exécutent Junos OS
Le module de la collection vous permet d’arrêter, de redémarrer ou d’arrêter un équipement qui system
juniper.device
s’Junos OS. Cet exemple utilise le system
module pour redémarrer un équipement sous Junos OS.
Exigences
Cet exemple utilise les composants matériels et logiciels suivants:
Serveur de gestion de configuration exécutant Ansible 2.10 ou une configuration ultérieure avec
juniper.device
la collection installéeL’équipement Junos OS avec NETCONF activé et un compte utilisateur configuré avec les autorisations appropriées
Paire de clés publiques/privées SSH configurée pour l’utilisateur approprié sur le nœud de contrôle Ansible et l’équipement en cours d’exécution Junos OS
Fichier d’inventaire Ansible existant avec les hôtes requis définis
Aperçu
Cet exemple présente un manuel Ansible qui utilise le module pour redémarrer un équipement sous system
Junos OS. L’argumentaire du module valorise action
l’exécution à exécuter sur l’hôte.
Lorsque vous appellez le module à partir d’un manuel, nous vous recommandons d’utiliser une invite interactive pour confirmer que l’utilisateur a l’intention de redémarrer les équipements spécifiés. Si un utilisateur exécute le manuel sans le savoir et qu’il n’y a aucun contrôle, cela risque de nuire à tous les réseaux nécessitant les équipements touchés. Par mesure de précaution, ce guide utilise une invite interactive pour vérifier que l’utilisateur a l’intention de redémarrer les équipements et nécessite que l’utilisateur tape manuellement « » sur la ligne de commande pour exécuter le yes module. En cas d’échec de la tâche, le nœud de contrôle Ansible ignore les autres tâches Confirmation check
de l’équipement en question.
Ce manuel inclut la tâche, qui utilise le module pour essayer d’établir une session NETCONF avec l’équipement qui s’Junos OS à l’aide du Checking NETCONF connectivity
wait_for
port NETCONF 830 par défaut. Si le nœud de contrôle ne parvient pas à établir une session NETCONF avec l’équipement pendant l’exécution du playbook, alors il ignore les tâches restantes dans la lecture de cet équipement.
La tâche qui redémarre l’équipement exécute le module a fourni que les vérifications de confirmation et system
NETCONF ont réussi. L’argument est donné sur la valeur, ce qui indique que le logiciel doit être action
"reboot"
redémarrage. L’argument indique au module d’attendre le nombre de minutes spécifié avant d’exécuter la commande in_min: 2
de redémarrage. Chaque utilisateur dispose alors d’un temps pour se déconnecter du système.
La tâche stocke les résultats du module dans la result
variable et en notifie deux handlers. Le dispositif de poignée attend un certain temps après le redémarrage afin d’empêcher le dispositif de détecter faux que l’équipement se trouve en ligne avant le redémarrage. pause_for_reboot
wait_reboot
Le dispositif de contrôle tente ensuite d’établir une session avec l’équipement afin de vérifier que l’équipement est de retour en ligne après wait_reboot
le redémarrage. Cette variable définit la durée de connexion du nœud de contrôle à wait_time_after_reboot
l’équipement.
Configuration
Création et exécution du guide playbook Ansible
Procédure étape par étape
Pour créer un manuel qui utilise le module pour redémarrer un équipement sous system
Junos OS:
Inclut la façade du livre blanc et cette pièce, qui exécute les modules localement.
--- - name: Reboot devices running Junos OS hosts: dc1 connection: local gather_facts: no
Définissez ou importez toutes les variables nécessaires.
vars: wait_time_after_reboot: 300 netconf_port: 830
Créez une invite interactive pour empêcher les utilisateurs d’exécuter le module accidentellement sans en comprendre les implications.
vars_prompt: - name: "reboot_confirmation" prompt: "This playbook reboots devices. Enter 'yes' to continue" private: no
Créez une tâche qui confirme l’intention de l’utilisateur.
tasks: - name: Confirmation check fail: msg="Playbook run confirmation failed" when: reboot_confirmation != "yes"
(Facultatif) Créez une tâche pour vérifier la connectivité NETCONF.
- name: Checking NETCONF connectivity wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: 5
Créez la tâche pour redémarrer l’équipement après un nombre de minutes spécifié, puis notifiez les handlers.
- name: Reboot all Routing Engines on the device running Junos OS juniper.device.system: action: "reboot" in_min: 2 all_re: True register: result notify: - pause_for_reboot - wait_reboot
(Facultatif) Créez une tâche pour imprimer la réponse.
- name: Print response debug: var: result
Créez un dispositif de dispositif qui s’arrête après le redémarrage et un dispositif de vérification du retour en ligne de l’équipement après le redémarrage.
Les noms du handler doivent être identiques à ceux indiqués dans la tâche de redémarrage.
handlers: - name: pause_for_reboot pause: seconds: 180 when: result.reboot - name: wait_reboot wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: "{{ wait_time_after_reboot }}" when: result.reboot
Résultats
Sur le nœud de contrôle Ansible, examinez le manuel terminé. Si le manuel n’affiche pas le code prévu, répétez les instructions de cet exemple pour corriger le manuel.
--- - name: Reboot devices running Junos OS hosts: dc1 connection: local gather_facts: no vars: wait_time_after_reboot: 300 netconf_port: 830 vars_prompt: - name: "reboot_confirmation" prompt: "This playbook reboots devices. Enter 'yes' to continue" private: no tasks: - name: Confirmation check fail: msg="Playbook run confirmation failed" when: reboot_confirmation != "yes" - name: Checking NETCONF connectivity wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: 5 - name: Reboot all Routing Engines on the device running Junos OS juniper.device.system: action: "reboot" in_min: 2 all_re: True register: result notify: - pause_for_reboot - wait_reboot - name: Print response debug: var: result handlers: - name: pause_for_reboot pause: seconds: 180 when: result.reboot - name: wait_reboot wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: "{{ wait_time_after_reboot }}" when: result.reboot
Exécution du guide
Procédure
Procédure étape par étape
Pour exécuter le manuel:
Numérotez la commande sur le nœud de contrôle et fournissez le chemin du manuel et
ansible-playbook
toutes les options souhaitées.user@ansible-cn:~/ansible$ ansible-playbook ansible-pb-junos-reboot.yaml This playbook reboots devices. Enter 'yes' to continue: yes PLAY [Reboot devices running Junos OS] *************************************** TASK [Confirmation check] **************************************************** skipping: [dc1a.example.net] TASK [Checking NETCONF connectivity] ***************************************** ok: [dc1a.example.net] TASK [Reboot all Routing Engines on the device running Junos OS] ************* changed: [dc1a.example.net] TASK [Print response] ******************************************************** ok: [dc1a.example.net] => { "result": { "action": "reboot", "all_re": true, "changed": true, "failed": false, "media": false, "msg": "reboot successfully initiated. Response got Shutdown at Fri Dec 11 17:36:50 2020. [pid 11595]", "other_re": false, "reboot": true, "vmhost": false } } RUNNING HANDLER [pause_for_reboot] ******************************************* Pausing for 180 seconds (ctrl+C then 'C' = continue early, ctrl+C then 'A' = abort) ok: [dc1a.example.net] RUNNING HANDLER [wait_reboot] ************************************************ ok: [dc1a.example.net] PLAY RECAP ******************************************************************* dc1a.example.net : ok=5 changed=1 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
Vérification
Vérification du redémarrage
But
Vérifiez que l’équipement qui Junos OS redémarre correctement.
Action
Lorsque vous exécutez le manuel, examinez le résultat de wait_reboot
la tâche pour chaque équipement.
RUNNING HANDLER [wait_reboot] ************************************************* ok: [dc1a.example.net]
Sens
Le résultat indique si le nœud de contrôle a réussi à établir une session avec l’équipement après son wait_reboot
redémarrage. Si le résultat indique une réussite, l’équipement est connecté.