NESTA PÁGINA
Use Ansible para parar, reiniciar ou desligar dispositivos Junos
RESUMO Use os módulos Ansible da Juniper Networks para parar, reiniciar ou desligar dispositivos Junos.
Use Ansible para parar, reiniciar ou desligar dispositivos
A Juniper Networks oferece suporte ao uso do Ansible para gerenciar dispositivos Junos e fornece módulos Ansible que permitem que você interrompa, reinicialize ou desativará um dispositivo. A Tabela 1 descreve os módulos disponíveis.
Conjunto de conteúdo |
Nome do módulo |
---|---|
|
|
|
Juniper.junos
A partir do lançamento 2.0.0, o juniper_junos_system
módulo substitui a funcionalidade do e junos_zeroize
dos junos_shutdown
módulos.
Você pode usar os módulos para solicitar as seguintes operações em dispositivos Junos. Por padrão, os módulos executam imediatamente a operação solicitada e executam a operação em todos os mecanismos de roteamento em um mecanismo de roteamento duplo ou configuração do Virtual Chassis.
-
Uma parada imediata do sistema, reinicialização ou desligamento
-
Uma operação de parada, reinicialização ou desligamento com um atraso opcional
-
Uma operação de parada, reinicialização ou desligamento agendada em data e hora específicas
Os system
módulos e juniper_junos_system
os módulos exigem um único argumento, action
que define a ação que o módulo executa. A Tabela 2 define o valor do action
parâmetro necessário para parar, reiniciar ou desligar um dispositivo e fornece uma breve descrição de cada ação, bem como do comando CLI correspondente. Para obter informações sobre a ação "zeroize"
, consulte Use Ansible para restaurar um dispositivo Junos nas configurações de configuração padrão de fábrica.
Valor do |
Descrição |
Comando CLI equivalente |
---|---|---|
|
Desativar graciosamente o software Junos OS, mas manter a potência do sistema |
|
|
Reinicialize o software Junos OS |
|
|
Desativar graciosamente o software Junos OS e desligar os mecanismos de roteamento |
|
O manual ansible a seguir usa o system
módulo para action: "reboot"
reiniciar imediatamente todos os mecanismos de roteamento nos hosts no grupo de inventário especificado.
--- - name: Reboot Junos devices hosts: dc1 connection: local gather_facts: no tasks: - name: Reboot all REs on the device juniper.device.system: action: "reboot"
Como realizar uma parada, reinicialização ou desativação com um atraso ou em um momento especificado
Para atrasar a parada, reiniciar ou desligar a operação em um número especificado de minutos, defina o parâmetro opcional in_min
para o número de minutos que o sistema deve esperar antes de executar a operação. A tarefa a seguir solicita uma reinicialização de todos os mecanismos de roteamento em 30 minutos:
--- - name: Reboot Junos devices hosts: dc1 connection: local gather_facts: no tasks: - name: Reboot all REs in 30 minutes juniper.device.system: action: "reboot" in_min: 30
Para agendar a parada, reiniciar ou desligar em um momento específico, inclua o at
parâmetro, que leva uma string que pode ser especificada de uma das seguintes maneiras:
-
now
— Inicie imediatamente a parada, a reinicialização ou a desativação do software. -
+minutes
— Quantidade de minutos a partir de agora, quando a ação solicitada for iniciada. -
yymmddhhmm
— Tempo absoluto para iniciar a ação solicitada, especificada como ano, mês, dia, hora e minuto. -
hh:mm
— Tempo absoluto no dia atual em que iniciar a ação solicitada, especificado em tempo de 24 horas.
A tarefa a seguir agenda um encerramento do sistema de todos os mecanismos de roteamento às 22:30 do dia atual:
tasks: - name: Shut down all REs at 22:30 on the current day juniper.device.system: action: "shutdown" at: "22:30"
Como especificar o mecanismo de roteamento alvo
Por padrão, os módulos e juniper_junos_system
os system
módulos executam a operação solicitada em todos os mecanismos de roteamento em uma configuração de mecanismo de roteamento duplo ou Virtual Chassis. Você também pode instruir os módulos a realizar a operação apenas no Mecanismo de Roteamento ao qual o aplicativo está conectado ou realizar a operação em todos os mecanismos de roteamento, exceto aquele ao qual o aplicativo está conectado.
Para especificar os mecanismos de roteamento, você usa os parâmetros e other_re
os all_re
parâmetros. A Tabela 3 resume os valores e other_re
os all_re
que são necessários para executar a operação solicitada em mecanismos de roteamento específicos.
Mecanismos de roteamento afetados |
|
|
---|---|---|
Todos os mecanismos de roteamento (padrão) |
Omitir ou definir |
– |
Apenas o mecanismo de roteamento conectado |
Definir para |
– |
Todos os mecanismos de roteamento, exceto o mecanismo de roteamento ao qual o aplicativo está conectado |
– |
Definir para |
Para indicar explicitamente que a operação deve ser realizada em todos os mecanismos de roteamento em um mecanismo de roteamento duplo ou configuração do Virtual Chassis, inclua o all_re: True
argumento, que é o padrão.
--- - name: Reboot Junos devices hosts: dc1 connection: local gather_facts: no tasks: - name: Reboot all Routing Engines juniper.device.system: action: "reboot" all_re: True
Para realizar a ação solicitada apenas no Mecanismo de Roteamento ao qual o aplicativo está conectado, inclua o all_re: False
argumento.
tasks: - name: Reboot only the connected Routing Engine juniper.device.system: action: "reboot" all_re: False
Para realizar a ação solicitada em todos os mecanismos de roteamento do sistema, exceto no Mecanismo de Roteamento ao qual o aplicativo está conectado, inclua o other_re: True
argumento.
tasks: - name: Shut down all other Routing Engines juniper.device.system: action: "shutdown" other_re: True
Como reiniciar um host VM
Em dispositivos que têm mecanismos de roteamento com suporte de host VM, o Junos OS funciona como uma máquina virtual (VM) em um host baseado em Linux (host VM). O system
suporte e juniper_junos_system
os módulos são compatíveis com o vmhost
argumento, que permite que você reinicialize um Host VM. Quando você inclui os argumentos e vmhost: True
os action: "reboot"
argumentos, o sistema reinicia o sistema operacional host e o Junos OS compatível em todos os mecanismos de roteamento executando o <request-vmhost-reboot>
RPC, que corresponde ao comando do request vmhost reboot
modo operacional.
O manual a seguir realiza um reboot do host VM, que reinicia o SO do host e o Junos OS convidado.
--- - 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
Exemplo: Use Ansible para reiniciar dispositivos Junos
O system
módulo da juniper.device
coleção permite que você interrompa, reinicialize ou desativar um dispositivo Junos. Este exemplo usa o system
módulo para reiniciar um dispositivo Junos.
Requisitos
Este exemplo usa os seguintes componentes de hardware e software:
-
Servidor de gerenciamento de configuração executando Ansible 2.10 ou posterior com a
juniper.device
coleção instalada -
Dispositivo Junos com NETCONF habilitado e uma conta de usuário configurada com permissões apropriadas
-
Par de chave sSH público/privado configurado para o usuário apropriado no nó de controle Ansible e dispositivo Junos
-
Arquivo de inventário Ansible existente com hosts necessários definidos
Visão geral
Este exemplo apresenta um manual ansible que usa o system
módulo para reiniciar um dispositivo Junos. O valor do argumento do action
módulo define a operação a ser executada no host.
Ao chamar o módulo de um manual, recomendamos que você use um prompt interativo para confirmar que o usuário pretende reiniciar os dispositivos especificados. Se um usuário executa acidentalmente a cartilha e não houver verificação, isso pode afetar negativamente qualquer rede que exija os dispositivos afetados. Por precaução, este manual usa um prompt interativo para verificar se o usuário pretende reiniciar os dispositivos e exige que o usuário digite manualmente "yes" na linha de comando para executar o módulo. Se a Confirmation check
tarefa falhar, o nó de controle Ansible ignora as outras tarefas em jogo para esse dispositivo.
Este manual inclui a Checking NETCONF connectivity
tarefa, que usa o wait_for
módulo para tentar estabelecer uma sessão NETCONF com o dispositivo Junos usando a porta NETCONF padrão 830. Se o nó de controle não estabelecer uma sessão netconf com o dispositivo durante a execução de playbook, ele ignora as tarefas restantes em jogo para esse dispositivo.
A tarefa que reinicializa o dispositivo executa o system
módulo desde que a confirmação e as verificações netconf foram bem sucedidas. O action
argumento é definido para o valor "reboot"
, o que indica que o software deve ser reiniciado. O in_min: 2
argumento instrui o módulo a esperar pelo número especificado de minutos antes de executar o comando de reinicialização. Isso oferece tempo para qualquer usuário fazer login fora do sistema.
A tarefa armazena o resultado do result
módulo na variável e notifica dois manipuladores. O pause_for_reboot
manipulador espera um tempo especificado após o início da operação de reinicialização para evitar que o wait_reboot
manipulador detecte falsamente que o dispositivo está on-line antes que a reinicialização ocorra. O wait_reboot
manipulador então tenta estabelecer uma sessão com o dispositivo para verificar se o dispositivo volta on-line após a reinicialização. A wait_time_after_reboot
variável define o tempo em que o nó de controle tenta se reconectar com o dispositivo.
Configuração
Criação e execução do ansible Playbook
Procedimento passo a passo
Para criar um manual que usa o system
módulo para reiniciar um dispositivo Junos:
Inclua a placa de caldeira para o manual e esta peça, que executa os módulos localmente.
--- - name: Reboot Junos devices hosts: dc1 connection: local gather_facts: no
Definir ou importar quaisquer variáveis necessárias.
vars: wait_time_after_reboot: 300 netconf_port: 830
Crie um prompt interativo para evitar que os usuários executem acidentalmente o módulo sem antes entender as implicações.
vars_prompt: - name: "reboot_confirmation" prompt: "This playbook reboots devices. Enter 'yes' to continue" private: no
Crie a tarefa que confirma a intenção do usuário.
tasks: - name: Confirmation check fail: msg="Playbook run confirmation failed" when: reboot_confirmation != "yes"
(Opcional) Crie uma tarefa para verificar a conectividade NETCONF.
- name: Checking NETCONF connectivity wait_for: host: "{{ inventory_hostname }}" port: "{{ netconf_port }}" timeout: 5
Crie a tarefa para reiniciar o dispositivo após um número especificado de minutos e depois notificar os manipuladores.
- name: Reboot all Routing Engines on the Junos device juniper.device.system: action: "reboot" in_min: 2 all_re: True register: result notify: - pause_for_reboot - wait_reboot
(Opcional) Crie uma tarefa para publicar a resposta.
- name: Print response debug: var: result
Crie o manipulador que faz uma pausa após a reinicialização e o manipulador que verifica se o dispositivo volta on-line após a reinicialização.
Os nomes do manipulador devem ser os mesmos mencionados na tarefa de reinicialização.
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
Resultados
No nó de controle Ansible, revise o manual completo. Se o manual não exibir o código pretendido, repita as instruções neste exemplo para corrigir o manual.
--- - name: Reboot Junos devices 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 Junos device 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
Execute o playbook
Procedimento
Procedimento passo a passo
Para executar o manual:
-
Emita o
ansible-playbook
comando no nó de controle e forneça o caminho de manual e quaisquer opções desejadas.user@ansible-cn:~/ansible$ ansible-playbook ansible-pb-junos-reboot.yaml This playbook reboots devices. Enter 'yes' to continue: yes PLAY [Reboot Junos devices] ************************************************** TASK [Confirmation check] **************************************************** skipping: [dc1a.example.net] TASK [Checking NETCONF connectivity] ***************************************** ok: [dc1a.example.net] TASK [Reboot all Routing Engines on the Junos device] ************* 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
Verificação
Verifique a reinicialização
Propósito
Verifique se o dispositivo Junos foi reiniciado com sucesso.
Ação
Ao executar o manual, analise a saída da wait_reboot
tarefa para cada dispositivo.
RUNNING HANDLER [wait_reboot] ************************************************* ok: [dc1a.example.net]
Significado
O wait_reboot
resultado indica se o nó de controle estabeleceu com sucesso uma sessão com o dispositivo após a reinicialização. Se o resultado indicar sucesso, o dispositivo está on-line.
Tabela de histórico de mudanças
O suporte de recursos é determinado pela plataforma e versão que você está usando. Use o Feature Explorer para determinar se um recurso é suportado em sua plataforma.
Juniper.junos
A partir do lançamento 2.0.0, o
juniper_junos_system
módulo substitui a funcionalidade do e
junos_zeroize
dos
junos_shutdown
módulos.