maxlareo.cumuluslinux

CumulusLinux

Ansible Galaxy

Un rol de Ansible para gestionar Cumulus Linux a través del módulo NCLU.

Requisitos

Solo se admite la versión 3.2+ de Cumulus Linux, las versiones anteriores no soportan NCLU.

Variables del Rol

Variable Descripción Tipo Predeterminado
cl_license Licencia de CumulusLinux Cadena ''
cl_hostname Nombre del dispositivo Cadena cumulus
cl_time_zone Husos horarios Cadena Etc/UTC
cl_time_ntp_servers Lista de servidores NTP, posibilidad de agregar opción iburst Array []
cl_time_ntp_source Interfaz de origen NTP Cadena eth0
cl_locales Habilitar locaciones desde locale-gen Array []
cl_dns_nameserver Servidor DNS dividido en dos subarreglos ipv4 e ipv6 Hash {}
cl_commands Comandos atómicos de nclu de Ansible usando recursivo, permite acciones de añadir/borrar, ejecutados primero Hash {}
cl_snmp Configuraciones de snmp-server desde net add snmp-server usando recursivo Hash {}
cl_syslog Configuraciones de syslog de dos subarreglos de hash ipv4 e ipv6, cada entrada necesita una ip + un puerto y opcionalmente un proto (udp/tcp) Hash {}
cl_interface Configuraciones de interfaz desde net add interface usando recursivo Hash {}
cl_bond Configuraciones de bond desde net add bond usando recursivo Hash {}
cl_vlan Configuraciones de vlan desde net add vlan usando recursivo Hash {}

Dependencias

Ninguna

Búsqueda Personalizada

Recursivo

Para gestionar la configuración de las interfaces de Cumulus Linux con Ansible, creé un plugin de búsqueda que puede construir las variables a partir de un hash y que leerá de forma recursiva el hash anidado para transformarlo en una lista de cadenas.

Cada profundidad de las variables se añadirá al comando nclu de la siguiente manera:

var:

cl_interface:
  swp1:
    ip:
      address: 192.168.1.1/24
    link:
      speed: 100
  swp2:
    bridge:
      trunk:
        vlans:
          - 1-5
          - 10,12

resultados:

swp1 ip address 192.168.1.1/24
swp2 bridge trunk vlans 1-5
swp2 bridge trunk vlans 10,12

De esta manera, encuentro que la estructura de las variables es más legible para configuraciones complejas.

Ejemplo de Playbook

- hosts: leaf01
  roles:
    - cumuluslinux
  vars:
    cl_license: user@company.com|thequickbrownfoxjumpsoverthelazydog312
    cl_hostname: leaf01
    cl_time_zone: Europe/Paris
    cl_time_ntp_servers:
      - 0.cumulusnetworks.pool.ntp.org iburst
      - 1.cumulusnetworks.pool.ntp.org 
      - 2.cumulusnetworks.pool.ntp.org 
      - 3.cumulusnetworks.pool.ntp.org 
    cl_time_ntp_source: eth1
    cl_locales:
      - en_US.UTF-8 UTF-8
      - fr_FR.UTF-8 UTF-8
    cl_dns_nameserver:
      ipv4:
        - 9.9.9.9
        - 1.1.1.1
      ipv6:
        - 2620:fe::fe
    cl_interface:
      swp1:
        ip:
          address: 192.168.1.1/24
        link:
          speed: 100
      swp2:
        bridge:
          trunk:
            vlans:
              - 1-5
              - 10,12
    cl_snmp:
      listening-address:
        ip:
          - 192.168.1.10
          - 192.168.1.20
      readonly-community:
        my_rocommunity:
          access: any
    cl_commands:
      add:
        vrf: mgmt
      del:
        snmp-server: all
    cl_syslog:
      ipv4:
        - ip: 192.168.1.10
          port: 5000
          proto: tcp
        - ip: 192.168.1.20
          port: 6000
      ipv6:
        - ip: 2001:db8::1
          port: 5000
    cl_bond:
      uplink:
        bond:
          slaves:
            - swp1
            - swp2
    cl_vlan:
      100:
        ip:
          adress:
            - 10.10.10.0/24

Licencia

MIT

Información del Autor

Maxime Lareo

Comentarios, informes de errores, solicitudes, ...

¡Son bienvenidos!

Acerca del proyecto

Manage CumulusLinux via NCLU

Instalar
ansible-galaxy install maxlareo.cumuluslinux
Licencia
mit
Descargas
119
Propietario