Entender o arquivo de inventário do Ansible ao gerenciar dispositivos Junos
Visão geral do arquivo de inventário
O arquivo de inventário do Ansible define os hosts e grupos de hosts nos quais os comandos, módulos e tarefas em um playbook operam. O arquivo pode estar em um dos vários formatos, dependendo do ambiente e dos plug-ins do Ansible. Os formatos comuns incluem INI e YAML.
O local padrão para o arquivo de inventário é /etc/ansible/hosts. Você também pode criar arquivos de inventário específicos do projeto em locais alternativos, por exemplo, no diretório do manual do seu projeto. Seu arquivo de configuração do Ansible pode especificar o caminho para um local de arquivo de inventário não padrão. Você também pode especificar o local do arquivo de inventário ao executar um manual.
O arquivo de inventário pode listar hosts individuais ou grupos de hosts definidos pelo usuário. Assim, você pode organizar dispositivos Junos com funções semelhantes em grupos. Em seguida, você pode executar as mesmas tarefas operacionais e de configuração nos dispositivos desse grupo. Por exemplo, se você estiver gerenciando um ou mais data centers, poderá criar grupos para esses switches que exigem o mesmo conjunto de operações, como a aplicação de configurações semelhantes e a atualização do Junos OS.
Para gerenciar dispositivos Junos usando o Ansible, você deve ter uma conta de login do Junos OS com privilégios de acesso apropriados em cada dispositivo gerenciado. Você deve garantir que existam nomes de usuário e senhas ou chaves de acesso para cada host no arquivo de inventário.
O arquivo de inventário de exemplo formatado em INI a seguir define um host individual, host1, e dois grupos de hosts routers e switches. O inventário também define um grupo network pai que inclui os routers grupos e switches .
host1.example.com [routers] router1.example.com router2.example.com [switches] switch1.example.com switch2.example.com [network:children] routers switches
Para obter mais informações sobre o arquivo de inventário do Ansible, consulte a documentação oficial do Ansible em https://docs.ansible.com/projects/ansible/latest/inventory_guide/intro_inventory.html.
juniper.device Coleção: Variáveis do sistema operacional de conexão e rede
A partir da juniper.device versão 2.0.0, consolidamos a coleção da Juniper Networks juniper.device e a coleção do Red Hat Ansible junipernetworks.junos em uma única juniper.device coleção. Embora você execute os módulos no mesmo namespace, cada conjunto de módulos usa diferentes valores de conexão e sistema operacional de rede do Ansible, portanto, você não pode misturar os módulos no mesmo playbook.
Você pode definir a conexão do Ansible em seu playbook, seu arquivo de inventário, em arquivos de variáveis de host ou grupo ou em argumentos de linha de comando. Se você definir a conexão no arquivo de inventário, defina ansible_connection o valor apropriado para seus módulos. A Tabela 1 descreve os valores de conexão para cada conjunto de módulos. Para os junipernetworks.junos módulos, você também deve definir ansible_network_os.
| Conjunto de módulos | ansible_connection Valor |
ansible_network_os Valor |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Em vez de definir ansible_connection no arquivo de inventário, você também pode definir connection na jogada do seu manual. Ambos os parâmetros assumem os mesmos valores.
Além das variáveis de conexão e sistema operacional de rede necessárias, seu arquivo de inventário pode, opcionalmente, definir o nome de usuário que o Ansible usa para se conectar aos dispositivos. Ele também pode especificar uma porta, se ela for diferente da porta padrão. Recomendamos que você também defina o caminho do interpretador Python no arquivo de configuração do Ansible ou no arquivo de inventário do Ansible. Especificar o caminho do interpretador do Python evita erros desnecessários se o Ansible não conseguir localizar a instalação do Python que seu ambiente usa.
As seções a seguir fornecem alguns arquivos de inventário de exemplo simplificados para cada conjunto de módulos.
- Arquivo de inventário de amostra para os
juniper.devicemódulos - Arquivo de inventário de amostra para os
junipernetworks.junosmódulos
Arquivo de inventário de amostra para os módulos juniper.device
Se você usar os módulos originais juniper.device para gerenciar dispositivos Junos, o arquivo de inventário deverá ser definido ansible_connection como local ou juniper.device.pyez.
O arquivo de inventário a seguir define um grupo chamado junos que tem três hosts. Os hosts usam a local conexão para se conectar aos dispositivos gerenciados.
[junos] router1.example.com router2.example.com router3.example.com [junos:vars] ansible_connection=local ansible_user=username ansible_port=port [all:vars] ansible_python_interpreter=python-interpreter-path
Arquivo de inventário de amostra para os módulos junipernetworks.junos
Se você usar os junipernetworks.junos módulos (juniper.device.junos_* modules) para gerenciar dispositivos Junos, seu arquivo de inventário deverá definir as variáveis apropriadas para esse conjunto de módulos. Você pode especificar o ansible_connection valor usando o nome ansible.netcommon.netconf totalmente qualificado ou ansible.netcommon.network_cli. Como alternativa, você pode apenas especificar netconf ou network_cli. Verifique a documentação do módulo para verificar os valores de conexão suportados para cada módulo.
O arquivo de inventário a seguir define um grupo chamado junos que tem três hosts. O Ansible usa a ansible.netcommon.netconf conexão para se conectar aos dispositivos gerenciados. O arquivo de inventário também inclui o valor necessário ansible_network_os para esses módulos.
[junos] router1.example.com router2.example.com router3.example.com [junos:vars] ansible_connection=ansible.netcommon.netconf ansible_network_os=juniper.device.junos ansible_user=username ansible_port=port [all:vars] ansible_python_interpreter=python-interpreter-path