linux-system-roles.network
linux-system-roles/red
Resumen
El rol de network permite a los usuarios configurar la red en las máquinas objetivo. Este rol se puede usar para configurar:
- Interfaces Ethernet
- Interfaces de puente
- Interfaces agrupadas
- Interfaces VLAN
- Interfaces MacVLAN
- Interfaces Infiniband
- Interfaces inalámbricas (WiFi)
- Configuración IP
- Autenticación 802.1x
Introducción
El rol de network admite dos proveedores: nm y initscripts. nm se utiliza de manera predeterminada desde RHEL7 y initscripts en RHEL6. El proveedor initscripts requiere el paquete network-scripts, que está obsoleto en RHEL8 y se eliminó en RHEL9. Estos proveedores se pueden configurar por host a través de la variable network_provider. Si no hay una configuración explícita, se autodetecta según la distribución. Sin embargo, hay que tener en cuenta que nm o initscripts no están vinculados a una distribución específica. El rol de network funciona donde esté disponible la API requerida. Esto significa que nm requiere al menos la versión 1.2 de la API de NetworkManager, y ciertas configuraciones también requieren versiones más altas de la API de NetworkManager desde que se introdujeron esas configuraciones.
El rol de network admite dos módulos: network_connections y network_state.
Para cada host se puede configurar una lista de perfiles de red a través de la variable network_connections.
- Para
initscripts, los perfiles corresponden a archivos ifcfg en el directorio/etc/sysconfig/network-scripts/, y esos archivos ifcfg deben tener la líneaNM_CONTROLLED=no. - Para
nm, los perfiles corresponden a perfiles de conexión que son manejados por NetworkManager, y solo se admiten perfiles en formato de archivo de clave de NetworkManager en/etc/NetworkManager/system-connections/desde RHEL9.
Para cada host, la configuración del estado de la red también se puede aplicar a la interfaz directamente a través de la variable network_state, y solo el proveedor nm admite el uso de la variable network_state.
Ten en cuenta que el rol de network opera tanto en los perfiles de conexión de los dispositivos (a través de la variable network_connections) como en los dispositivos directamente (a través de la variable network_state). Al configurar los perfiles de conexión a través del rol, por defecto se utiliza el nombre del perfil como el nombre de la interfaz. También es posible crear perfiles genéricos, por ejemplo, creando un perfil con una determinada configuración IP sin activar el perfil. Para aplicar la configuración a la interfaz de red real, usa los comandos nmcli en el sistema objetivo.
Advertencia: El rol de network actualiza o crea todos los perfiles de conexión en el sistema objetivo tal como se especifica en la variable network_connections. Por lo tanto, el rol de network elimina opciones de los perfiles especificados si las opciones solo están presentes en el sistema pero no en la variable network_connections. Las excepciones se mencionan a continuación. Sin embargo, la configuración de red parcial se puede lograr al especificar la configuración del estado de red en la variable network_state.
Requisitos
Ver más abajo.
Requisitos de colección
El rol requiere colecciones externas solo para la gestión de nodos rpm-ostree. Por favor, ejecuta el siguiente comando para instalarlas si necesitas gestionar nodos rpm-ostree:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Variables
El rol de network se configura a través de variables que comienzan con el prefijo network_. Lista de variables:
network_provider- La variablenetwork_providerpermite establecer un proveedor específico (nmoinitscripts). Al configurarlo como{{ network_provider_os_default }}, el proveedor se establece según el sistema operativo. Esto es generalmentenm, exceptuando sistemas RHEL 6 o CentOS 6. Cambiar el proveedor para un perfil existente no está soportado. Para cambiar de proveedores, se recomienda primero eliminar perfiles con el proveedor antiguo y luego crear nuevos perfiles con el nuevo proveedor.network_connections- Los perfiles de conexión se configuran comonetwork_connections, que es una lista de diccionarios que incluyen opciones específicas.network_allow_restart- Por defecto esfalse. Para cargar plugins de NetworkManager después de la instalación, es necesario reiniciar NetworkManager. Por ejemplo, si se configura una conexión inalámbrica y NetworkManager-wifi no está instalado, NetworkManager debe reiniciarse antes de que se configure la conexión. El reinicio puede resultar en pérdida de conectividad y, por lo tanto, el rol no lo permite sin consentimiento explícito. El usuario puede consentirlo configurandonetwork_allow_restartatrue. Configurarnetwork_allow_restartafalseimpedirá que el rol reinicie NetworkManager.network_state- La configuración del estado de la red se puede configurar en el host gestionado, y el formato y la sintaxis de la configuración deben ser consistentes con los ejemplos de estado de nmstate (YAML).
Ejemplos de Variables
Configurando las variables:
network_provider: nm
network_connections:
- name: eth0
#...
network_allow_restart: true
network_provider: nm
network_state:
interfaces:
- name: eth0
#...
routes:
config:
#...
dns-resolver:
config:
#...
Opciones de network_connections
La variable network_connections es una lista de diccionarios que incluyen las siguientes opciones. Lista de opciones:
name (usualmente requerida)
La opción name identifica el perfil de conexión que se va a configurar. No es el nombre de la interfaz de red a la que aplica el perfil, aunque podemos asociar el perfil con una interfaz y darles el mismo nombre. Ten en cuenta que puedes tener múltiples perfiles para el mismo dispositivo, pero solo un perfil puede estar activo en el dispositivo a la vez. Para NetworkManager, una conexión puede estar activa solo en un dispositivo a la vez.
Para
NetworkManager, la opciónnamecorresponde a la propiedadconnection.id. Aunque NetworkManager admite múltiples conexiones con el mismoconnection.id, el rol denetworkno puede manejar unnameduplicado. Especificar unnamevarias veces se refiere al mismo perfil de conexión.Para
initscripts, la opciónnamedetermina el nombre del archivo ifcfg/etc/sysconfig/network-scripts/ifcfg-$NAME. Ten en cuenta que elnameno especifica elDEVICEsino un nombre de archivo. Como consecuencia,'/'no es un carácter válido para elname.
También puedes usar el mismo perfil de conexión varias veces. Por lo tanto, es posible crear un perfil y activarlo por separado.
Nota: El rol de red solo cambiará los perfiles que se especifican en la variable network_connections. Por lo tanto, si solo se especifican los puertos de un perfil para ser eliminados del controlador y el controlador no se especifica, entonces el perfil del controlador permanecerá en el sistema. Esto puede suceder, por ejemplo, si todos los puertos son eliminados de una interfaz de enlace.
Nota: Para eliminar todos los perfiles en un sistema que no están especificados en la variable network_connections, agrega una entrada sin un nombre y persistent_state: absent. Esto coincidirá y eliminará todos los perfiles restantes:
network_connections:
- name: eth0 # perfiles a mantener/configurar en el sistema
[...]
- persistent_state: absent # eliminar todos los demás perfiles
state
La opción state identifica cuál es el estado de ejecución de cada perfil de conexión. La opción state (opcional) se puede establecer en los siguientes valores:
up- el perfil de conexión está activadodown- el perfil de conexión está desactivado
state: up
Para
NetworkManager, esto corresponde anmcli connection id {{name}} up.Para
initscripts, esto corresponde aifup {{name}}.
Cuando la opción de state se establece en up, también puedes especificar la opción wait (opcional):
wait: 0- inicia solo la activación, pero no espera hasta que el dispositivo esté completamente conectado. La conexión se completará en segundo plano, por ejemplo, después de que se haya recibido un arrendamiento DHCP.wait: <seconds>es un tiempo de espera que permite decidir cuánto tiempo se le da al dispositivo para activar. El valor predeterminado es utilizar un tiempo de espera adecuado. Ten en cuenta que la opciónwaitsolo es compatible con NetworkManager.
Ten en cuenta que state: up siempre re-activa el perfil y posiblemente cambia la configuración de red, incluso si el perfil ya estaba activo antes. Como consecuencia, state: up siempre cambia el sistema.
state: down
Para
NetworkManager, corresponde anmcli connection id {{name}} down.Para
initscripts, corresponde a llamar aifdown {{name}}.
Puedes desactivar un perfil de conexión, incluso si no está activo en este momento. Como consecuencia, state: down siempre cambia el sistema.
Ten en cuenta que si la opción state no está establecida, el estado de ejecución del perfil de conexión no se cambiará.
persistent_state
La opción persistent_state identifica si un perfil de conexión es persistente (guardado en disco). La opción persistent_state se puede establecer en los siguientes valores:
persistent_state: present (predeterminado)
Ten en cuenta que si persistent_state está present y el perfil de conexión contiene la opción type, el perfil se creará o actualizará. Si el perfil de conexión está incompleto (sin opción type), el comportamiento es indefinido. Además, el valor present no resulta directamente en un cambio en la configuración de red. Si la opción state no se establece en up, el perfil solo se crea o modifica, no se activa.
Para NetworkManager, el nuevo perfil de conexión se crea con la opción autoconnect habilitada por defecto. Por lo tanto, NetworkManager puede activar el nuevo perfil en un dispositivo desconectado actualmente. (rh#1401515).
persistent_state: absent
El valor absent asegura que el perfil no esté presente en el host objetivo. Si existe un perfil con el nombre dado, será eliminado. En este caso:
NetworkManagerelimina todos los perfiles de conexión con el correspondienteconnection.id. Eliminar un perfil generalmente no cambia la configuración de red actual, a menos que el perfil estuviera actualmente activo en un dispositivo. Eliminar el perfil de conexión actualmente activo desconecta el dispositivo. Eso hace que el dispositivo sea elegible para autoconectar otra conexión (para más detalles, ver rh#1401515).initscriptselimina el archivo ifcfg en la mayoría de los casos sin impacto en el estado de ejecución del sistema a menos que algún componente esté observando el directorio sysconfig.
Nota: Para perfiles que solo contienen una opción de state, el rol de network solo activa o desactiva la conexión sin cambiar su configuración.
type
La opción type se puede establecer en los siguientes valores:
ethernetbridgebondteamvlanmacvlaninfinibandwirelessdummy
type: ethernet
Si el tipo es ethernet, entonces puede haber un diccionario adicional ethernet con los siguientes elementos (opciones): autoneg, speed y duplex, que corresponden a la configuración de la utilidad ethtool con el mismo nombre.
autoneg:true(predeterminado) ofalse[si la auto-negociación está habilitada o deshabilitada]speed: velocidad en Mbit/sduplex:halfofull
Ten en cuenta que los ajustes de enlace speed y duplex son requeridos cuando la auto-negociación está deshabilitada (autoneg: false).
type: bridge, type: bond, type: team
Los tipos de dispositivo bridge, bond, team funcionan de manera similar. Ten en cuenta que team no es compatible con los núcleos de RHEL6, y ha sido desaprobado en RHEL9.
Para los puertos, se deben establecer las propiedades port_type y controller. Ten en cuenta que los puertos no deberían tener configuraciones ip, lo que significa que los puertos activos no tendrán direcciones IP asignadas.
El controller se refiere al name de un perfil en el playbook de Ansible. No es un nombre de interfaz ni un id de conexión de NetworkManager.
Para NetworkManager,
controllerse convertirá en elconnection.uuiddel perfil correspondiente.Para
initscripts, se busca el controlador como elDEVICEdel archivo ifcfg correspondiente.
Dado que el controller se refiere a otros perfiles del mismo o de otro play, el orden de la lista connections importa. Los perfiles que son referenciados por otros perfiles necesitan ser especificados primero. Además, --check ignora el valor del controller y asume que estará presente durante una ejecución real. Esto significa que, en presencia de un controller inválido, --check puede señalar éxito pero la ejecución real del play falla.
Si solo se baja el perfil del controller, entonces los perfiles de puerto se bajarán automáticamente. Si se baja la conexión en algunos o todos los puertos, entonces el perfil del controlador permanecerá activo.
El tipo team utiliza roundrobin como la configuración de runner. No se admite ninguna configuración adicional en este momento.
type: vlan
De manera similar a controller, el parent hace referencia al perfil de conexión en el rol de ansible. Se puede especificar el ID de VLAN utilizando la configuración de VLAN anidada, el valor válido del ID de VLAN varía de 0 a 4094. Así es como se especifica el ID de VLAN:
type: vlan
vlan:
id: 6
type: macvlan
De manera similar a controller y vlan, el parent hace referencia al perfil de conexión en el rol de ansible.
type: infiniband
Para la conexión infiniband, actualmente solo se admite para el proveedor nm, y las siguientes opciones son compatibles:
p_key: La P_Key de infiniband que se usará para el dispositivo. Cuando no se especifica, la conexión se crea en las fábricas de infiniband físicas. De lo contrario, es un entero sin signo de 16 bits y se creará una conexión ipoib (IP sobre Infiniband), el bit alto debe estar configurado si es un P_Key de "membresía completa". Los valores especialesp_key0x0000 y 0x8000 son inválidos ya que el kernel no los admite.transport_mode: El modo de operación de la conexión ipoib (IP sobre Infiniband). Los modos posibles sondatagram(predeterminado) yconnected.
Nota: Si se especifica p_key, entonces interface_name debe estar sin establecer.
type: wireless
El tipo wireless admite autenticación WPA-PSK (contraseña), autenticación WPA-EAP (802.1x), autenticación WPA3-Personal SAE (contraseña) y Enhanced Open (OWE).
nm (NetworkManager) es el único proveedor network_provider admitido para este tipo.
Si se utiliza WPA-EAP, se deben definir configuraciones ieee802_1x en la opción ieee802_1x.
Las siguientes opciones son compatibles:
ssid: el SSID de la red inalámbrica (requerido)key_mgmt(requerido)Cualquier clave de la siguiente lista de claves:
owesaewpa-eapwpa-psk
password: contraseña para la red (obligatorio si se utilizawpa-pskosae)
type: dummy
Interfaz de red dummy, nm (NetworkManager) es el único proveedor network_provider compatible para este tipo.
autoconnect
De forma predeterminada, los perfiles se crean con autoconexión habilitada.
Para
NetworkManager, esto corresponde a la propiedadconnection.autoconnect.Para
initscripts, esto corresponde a la propiedadONBOOT.
mac
La dirección mac es opcional y restringe el perfil a ser utilizable solo en dispositivos con la dirección MAC dada. mac solo se permite para type ethernet o infiniband para coincidir un dispositivo no virtual con el perfil. El valor de la dirección mac debe especificarse en notación hexadecimal utilizando dos puntos (por ejemplo: mac: "00:00:5e:00:53:5d"). Para evitar que YAML analice las direcciones mac como enteros en notación sexagesimal (base 60) (ver https://yaml.org/spec/1.1/#id858600), se recomienda siempre poner el valor entre comillas dobles y a veces es necesario.
Para
NetworkManager,maces la dirección MAC permanente,ethernet.mac-address.Para
initscripts,maces la dirección MAC configurada actualmente del dispositivo (HWADDR).
cloned_mac
La dirección cloned_mac es opcional y permite especificar la estrategia para obtener la dirección mac predeterminada o establecer tu propia mac. El valor de la dirección cloned_mac debe especificarse en notación hexadecimal como la propiedad mac. Además de especificar explícitamente el valor como dirección MAC con notación hexadecimal, también se admiten los siguientes valores especiales:
default: honrar el comportamiento predeterminado en NetworkManagerpermanent: usar la dirección MAC permanente del dispositivopreserve: no cambiar la dirección MAC del dispositivo al activarserandom: generar un valor aleatorio en cada conexiónstable: generar una dirección MAC hasheada y estable
mtu
La opción mtu denota la unidad máxima de transmisión para el dispositivo del perfil. El valor máximo depende del dispositivo. Para dispositivos virtuales, el valor máximo de la opción mtu depende del dispositivo subyacente.
interface_name
Para los tipos ethernet e infiniband, la opción interface_name restringe el perfil a la interfaz dada por nombre. Este argumento es opcional y por defecto se utiliza el nombre del perfil a menos que se especifique una dirección mac utilizando la clave mac. Especificar una cadena vacía ("") significa que el perfil no está restringido a ninguna interfaz de red.
Nota: Con nombres de interfaz persistentes, la interfaz es predecible según la configuración de hardware. De lo contrario, la dirección mac podría ser una opción.
Para tipos de interfaz virtual como puentes, el interface_name es el nombre de la interfaz creada. Si falta un interface_name, se utiliza el name del perfil.
Nota: El name (el nombre del perfil) y el interface_name (el nombre del dispositivo) pueden ser diferentes o el perfil puede no estar vinculado a ninguna interfaz.
match
Configuraciones para especificar dispositivos o sistemas que coincidan con un perfil. Actualmente, solo se ha implementado la configuración de path.
Las configuraciones admiten una lista de patrones que soportan los siguientes modificadores y comodines:
Modificadores especiales para configuraciones match:
|, el elemento es una alternativa; la coincidencia se evalúa como verdadera si al menos una de las alternativas coincide (OR lógico). Por defecto, un elemento es una alternativa. Esto significa que un elementofoose comporta de la misma manera que|foo.&, el elemento es obligatorio; la coincidencia se evalúa como verdadera si todos los elementos coinciden (AND lógico).!, un elemento también puede invertirse con un signo de exclamación (!) entre el símbolo de barra (o el ampersand) y antes del patrón. Ten en cuenta que!fooes un atajo para la coincidencia obligatoria&!foo.\, se puede usar una barra invertida al principio del elemento (después de los caracteres especiales opcionales) para escapar el inicio del patrón. Por ejemplo,&\!aes una coincidencia obligatoria para literalmente!a.
Patrones comodines para configuraciones match: De manera general, funcionan como globos de shell.
*, coincide con cero o más de cualquier carácter.?, coincide con cualquier carácter individual.[fo]- coincide con cualquier carácter individualfoo- también admite rangos -[0-9]coincidirá con cualquier carácter numérico.
path
La configuración de path es una lista de patrones para coincidir con la propiedad ID_PATH de udev de los dispositivos. La propiedad ID_PATH de udev representa la ruta persistente de un dispositivo. Consiste en una cadena de subsistema (pci, usb, platform, etc.) y un identificador específico de subsistema. El ID_PATH de un dispositivo se puede obtener con el comando udevadm info /sys/class/net/$dev | grep ID_PATH= o mirando la propiedad path exportada por NetworkManager (nmcli -f general.path device show $dev). La configuración de path es opcional y restringe el perfil para activarse solo en dispositivos con un ID_PATH coincidente. La configuración de path solo es compatible con perfiles ethernet o infiniband. Soporta modificadores y comodines según lo descrito para configuraciones match.
zone
La opción zone establece la zona de firewalld para la interfaz.
Los puertos de los dispositivos de puente, enlace o agrupados no pueden especificar una zona.
ip
La configuración IP admite las siguientes opciones:
addressManualmente se pueden especificar direcciones a través de una lista de direcciones bajo la opciónaddress.auto_gatewaySi se habilita, se configurará una ruta predeterminada utilizando la puerta de enlace predeterminada. Si se desactiva, se eliminará la ruta predeterminada.
Si esta variable no se especifica, el rol utilizará el comportamiento predeterminado del
network_providerseleccionado.Establecer esta opción en
falsees equivalente a:DEFROUTE = noen initscripts, oipv4.never-default/ipv6.never-default yesen nmcli.
dhcp4,auto6, eipv6_disabledAdemás, se pueden especificar direcciones manuales configurando
dhcp4oauto6. La clavedhcp4es para DHCPv4 yauto6para La Configuración Automática de Direcciones sin Estado (SLAAC). Ten en cuenta que las clavesdhcp4yauto6se pueden omitir y la clave predeterminada depende de la presencia de direcciones manuales.ipv6_disabledse puede configurar para deshabilitar ipv6 para la conexión.dhcp4_send_hostnameSi
dhcp4está habilitado, se puede configurar si la solicitud DHCPv4 incluye el nombre de host a través de la opcióndhcp4_send_hostname. Ten en cuenta quedhcp4_send_hostnamesolo es compatible con el proveedornmy corresponde a la propiedadipv4.dhcp-send-hostname.dnsLa configuración manual de DNS se puede especificar a través de una lista de direcciones dadas en la opción
dns.dns_searchLa configuración manual de DNS se puede especificar a través de una lista de dominios a buscar dados en la opción
dns_search.dns_optionsdns_optionssolo es compatible con el proveedor de NetworkManager. Se puede configurar la configuración manual de DNS a través de una lista de opciones DNS endns_options. La lista de opciones de DNS compatibles para servidores de nombres IPv4 se describe en man 5 resolv.conf. Actualmente, la lista de opciones de DNS compatibles es:attempts:ndebugedns0inet6ip6-bytestringip6-dotintndots:nno-aaaano-check-namesno-ip6-dotintno-reloadno-tld-queryrotate
Configure networking
ansible-galaxy install linux-system-roles.network