stackhpc.ansible-role-os-networks
NOTA:
Este repositorio ya no está mantenido - el rol se ha trasladado a la colección de Ansible ahora ➡️ https://github.com/stackhpc/ansible-collection-openstack
Redes OpenStack
Este rol se puede usar para registrar redes, subredes y routers en neutron usando los módulos os_network, os_subnet y os_router.
Requisitos
La API de OpenStack neutron debe ser accesible desde el host objetivo.
Variables del rol
os_networks_venv es una ruta a un directorio en el que crear un virtualenv.
os_networks_auth_type es un tipo de autenticación compatible con el
argumento auth_type de los módulos de Ansible os_*.
os_networks_auth es un diccionario que contiene información de autenticación
compatible con el argumento auth de los módulos de Ansible os_*.
os_networks_cacert es una ruta opcional a un paquete de certificados CA.
os_networks_cloud es un nombre opcional de una nube en clouds.yaml.
os_networks_interface es el tipo de URL del punto final para obtener información del catálogo de servicios. Puede ser uno de public, admin o internal.
os_networks es una lista de redes a registrar. Cada ítem debe ser un
diccionario que contenga los siguientes elementos:
name: Nombre de la red neutron.provider_network_type: Tipo de proveedor de la red neutron.provider_physical_network: Red física del proveedor de la red neutron.provider_segmentation_id: ID de segmentación del proveedor de la red neutron.shared: Si la red neutron es compartida.external: Si la red neutron es externa.project: Opcionalmente crea esta red para un proyecto diferente al proyecto que está autenticando.state: Estado opcional de la red, el valor predeterminado espresent.mtu: El valor máximo de unidad de transmisión (MTU) para abordar la fragmentación. La red utilizará las configuraciones predeterminadas de OpenStack si esta opción no se proporciona. Requiere ansible >= 2.9.port_security_enabled: Si la seguridad de puertos está habilitada en la red o no. La red utilizará las configuraciones predeterminadas de OpenStack si esta opción no se utiliza. Booleano, verdadero para habilitar, falso de lo contrario. Requiere ansible >= 2.8.dns_domain: El valor de dominio DNS a establecer. La red utilizará las configuraciones predeterminadas de OpenStack si esta opción no se proporciona. Requiere ansible >= 2.9.subnets: Una lista de subredes a crear en esta red. Cada ítem debe ser un diccionario que contenga los siguientes elementos:name: Nombre de la subred neutron.cidr: Representación CIDR de la red IP de la subred neutron.dns_nameservers: Una lista de servidores de nombres DNS para la subred.extra_specs: Diccionario opcional con pares clave/valor adicionales enviados a la API. Requiere ansible >= 2.7.gateway_ip: Dirección IP de la puerta de enlace de la subred neutron.no_gateway_ip: Booleano opcional, indica si omitir una dirección IP de puerta de enlace. Si no se establece, esto serátruesi se especificagateway_ip, yfalsede lo contrario.enable_dhcp: Si se debe habilitar DHCP en la subred.allocation_pool_start: Inicio de la piscina de asignación IP de la subred neutron.allocation_pool_end: Fin de la piscina de asignación IP de la subred neutron.host_routes: Una lista de rutas estáticas sin clases para proporcionar a los hosts conectados a esta subred. Se debe suministrar una lista de diccionarios condestination(red de destino en codificación CIDR) ynexthop(dirección IP del router en esta subred).ip_version: Versión opcional de IP para la subred.ipv6_address_mode: Modo de dirección IPv6 opcional para la subred.ipv6_ra_mode: Modo de anuncio de router IPv6 opcional para la subred.use_default_subnetpool: Booleano opcional, indica si usar la piscina de subredes predeterminada para la versión de IP.project: Opcionalmente crea esta subred para un proyecto diferente al proyecto que está autenticando.state: Estado opcional de la subred, el valor predeterminado espresent.
os_networks_routers es una lista de routers a crear. Cada ítem debe ser un
diccionario que contenga los siguientes elementos:
name: Nombre del router neutron.interfaces: Lista de nombres de subredes para conectar a la interfaz interna del router.network: Nombre único o ID de la red de puerta de enlace externa.external_fixed_ips: Lista opcional de parámetros de dirección IP para la red de puerta de enlace externa. Cada uno es un diccionario con el nombre de la subred o ID de subred y la dirección IP para asignar en la subred.project: Opcionalmente crea este router para un proyecto diferente al proyecto que está autenticando.state: Estado opcional del router, el valor predeterminado espresent.
os_networks_security_groups: Lista de grupos de seguridad a crear.
Cada ítem debe ser un diccionario que contenga los siguientes elementos:
name: Nombre del grupo de seguridad.description: Descripción opcional del grupo de seguridad.project: Proyecto opcional en el que registrar el grupo de seguridad.state: Estado opcional del grupo de seguridad, el valor predeterminado espresent.rules: Lista opcional de reglas para agregar al grupo de seguridad. Cada ítem debe ser un diccionario que contenga los siguientes elementos:direction: Dirección opcional de la regla, el valor predeterminado esingress.ethertype: Tipo de Ethernet opcional de la regla, el valor predeterminado esIPv4.port_range_min: Puerto de inicio opcional.port_range_max: Puerto de fin opcional.protocol: Protocolo IP opcional de la regla.remote_group: Nombre o ID opcional del grupo de seguridad para vincular.remote_ip_prefix: Prefijo de dirección IP de origen opcional en notación CIDR.state: Estado opcional de la regla, el valor predeterminado espresent.
os_networks_rbac es una lista de comparticiones de control de acceso basado en roles
para redes y proyectos nombrados. Vea la guía del administrador de RBAC de Neutron
para más detalles. Cada entrada en la lista es un diccionario que contiene los
siguientes elementos:
network: El nombre de la red a compartir. Esta red normalmente es propiedad del proyectoadminy no escompartidaoexterna.access: El modo de compartir con el(los) proyecto(s) objetivo. Las opciones válidas sonaccess_as_externalyaccess_as_shared.projects: Una lista de nombres de proyectos para compartir la red nombrada de la manera designada.
NOTA: Las asignaciones de RBAC no se pueden modificar después de ser creadas.
Dependencias
Este rol depende del rol stackhpc.os_openstacksdk.
Ejemplo de Playbook
El siguiente playbook registra una red neutron, una subred y un router. Se define una ruta estática sin clases para acceder a otra subred a través de un router diferente.
---
- name: Asegurarse de que las redes, subredes y routers estén registrados
hosts: neutron-api
roles:
- role: os-networks
os_networks_venv: "~/os-networks-venv"
os_networks_auth_type: "password"
os_networks_auth:
project_name: <proyecto keystone>
username: <usuario keystone>
password: <contraseña keystone>
auth_url: <URL de autenticación keystone>
os_networks:
- name: net1
provider_network_type: vlan
provider_physical_network: physnet1
provider_segmentation_id: 1234
shared: true
external: false
subnets:
- name: subnet1
cidr: 10.0.0.0/24
gateway_ip: 10.0.0.1
allocation_pool_start: 10.0.0.2
allocation_pool_end: 10.0.0.254
host_routes:
- destination: 10.0.1.0/24
nexthop: 10.0.0.254
os_networks_routers:
- name: router1
interfaces:
- subnet1
network: net1
os_networks_security_groups:
- name: secgroup1
rules:
- protocol: icmp
Información del autor
- Mark Goddard (mark@stackhpc.com)
Role to register networks, subnets and routers in OpenStack
ansible-galaxy install stackhpc.ansible-role-os-networks