Resolução de problemas de erros de instalação do Junos PyEZ (junos-eznc) para módulos Ansible
Problema
Descrição
Durante a execução de um juniper.device
módulo, o nó de controle Ansible gera um erro que junos-eznc
não está instalado. Por exemplo:
"msg": "junos-eznc (aka PyEZ) >= 2.6.0 is required for this module. However, junos-eznc does not appear to be currently installed. See https://github.com/Juniper/py-junos-eznc#installation for details on installing junos-eznc."
ou
"msg": "junos-eznc is required but does not appear to be installed. It can be installed using `pip install junos-eznc`"
Causa
Os módulos Ansible da Juniper Networks na juniper.device
coleção usam a biblioteca Junos PyEZ Python para realizar operações em dispositivos Junos. O Ansible gera esse erro se a biblioteca não estiver instalada ou se a Ansible não conseguir localizar a biblioteca. O Ansible pode não localizar a biblioteca, por exemplo, se você instalar o Ansible em um ambiente virtual ou sob uma instalação python em um local de sistema não padrão e a Ansible estiver procurando a biblioteca em um local diferente, como o local padrão do sistema.
Solução
Instale o Junos PyEZ no nó de controle Ansible e atualize todas as variáveis de ambiente necessárias. Consulte https://github.com/Juniper/py-junos-eznc#installation para obter mais informações.
Se você executa o Ansible usando uma instalação python em um ambiente virtual ou em um local de sistema não padrão, você deve:
-
Instale o Junos PyEZ sob a instalação python desejada (no ambiente virtual ou local do sistema não padrão, conforme apropriado).
-
Especifique o caminho para o intérprete de Python — por exemplo, configurando a
interpreter_python
variável no arquivo de configuração Ansible ou definindo aansible_python_interpreter
variável para os dispositivos apropriados no arquivo de inventário Ansible.# file ansible.cfg [defaults] interpreter_python = /home/user/MyProjects/Ansible/venv/bin/python ...
Para obter mais informações, veja O Intérprete Discovery na documentação oficial do Ansible.
Para verificar se o Junos PyEZ foi instalado com sucesso no nó de controle, lance a shell interativa python usando a mesma instalação Python que você usa para operações ansible. Depois, importe o jnpr.junos
pacote.
(venv) user@ansible-cn:~/MyProjects/Ansible$ python3 Python 3.6.9 (default, Oct 8 2020, 12:12:24) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> import jnpr.junos >>> jnpr.junos.__version__ '2.6.0'
Se você importar com sucesso o jnpr.junos
pacote e não houver nenhuma mensagem de erro, o Junos PyEZ será instalado no nó de controle Ansible. Se você ainda vir a mesma mensagem de erro ao executar o módulo Ansible, certifique-se de ter especificado o local correto para o intérprete de Python em seu ambiente Ansible.
Você pode verificar a instalação do Python que o Ansible usa executando sua cartilha Ansible com a opção -vvv
e analisando as mensagens de log.