systemd_networkd role for OpenStack-Ansible¶
- tags
openstack, systemd_networkd, cloud, ansible
- category
*nix
This role will configure Systemd units:
Default variables¶
# Cleanup all known network interfaces. When this option is enabled the role
# will search for and remove all network interface files that match the prefix.
systemd_interface_cleanup: false
# Prefix for all networkd files created by this role. This prefix allows
# deployers to set specific file names reducing the chance of a collision
# and simplifies the network interface file cleanup operation should it ever
# be needed. By default, the prefix is "general" however this can be changed
# to meet the needs of the deployer.
systemd_networkd_prefix: "general"
# Enable systemd-networkd and (re)start the service
systemd_run_networkd: false
# The `systemd_link_config_overrides` option can be used on the default link.
# See the following link for all available options:
# https://www.freedesktop.org/software/systemd/man/systemd.link.html
# systemd_default_unit:
# Match:
# Driver=things other thing
systemd_link_config_overrides: {}
# All items listed in the `systemd_netdevs` array are craeted using the exact
# networkd syntax found here:
# https://www.freedesktop.org/software/systemd/man/systemd.netdev.html
# At an absolute minimum, the items must have "NetDev" and "Name" defined.
# Items generated will have an integer assigned to them so that they're loaded
# in the order specified.
# systemd_netdevs:
# - NetDev:
# Name: dummy0
# Kind: dummy
# - NetDev:
# Name: dummy1
# Kind: dummy
# filename: "{{ item.1.NetDev.Name }}.netdev"
# - NetDev:
# Name: bond0
# Kind: bond
# Bond:
# Mode: 802.3ad
# TransmitHashPolicy: layer3+4
# MIIMonitorSec: 1s
# LACPTransmitRate: fast
# - NetDev:
# Name: br-dummy
# Kind: bridge
systemd_netdevs: []
# The systemd networkd dictionary is a set of networks that will be created.
# items generated will have an integer assigned to them so that they're loaded
# in the order specified. The dictionary can contain the following options:
# `config_overrides` -- (optional) used to inject extra configuration options
# into the network file. A full list of all
# options can be found here:
# https://www.freedesktop.org/software/systemd/man/systemd.network.html
# `filename` -- (Optional, Recommended) Defines resulted filename for config
# to be placed in. For consistency and more
# expected behaviour when list of networks
# may change it is recommended to supply
# filename for each interface.
# `link_config_overrides` -- (Optional) Used to inject extra configuration
# options into link file. A full list
# of all options can be found here:
# https://www.freedesktop.org/software/systemd/man/systemd.link.html
# `interface` -- (required) Name of interface to match
# `address` -- (option) IP address the interface should be given. To make this
# interface use DHCP set this string to "dhcp"
# `netmask` -- (optional) Netmask to use for the interface
# `gateway` -- (optional) Gateway to use for the interface
# `bridge` -- (optional) Bridge name for a mapped interface
# `bond` -- (optional) Bond name for a mapped interface
# `vlan` -- (optional) VLAN name for a mapped interface
# `macvlan` -- (optional) MACVLAN name for a mapped interface
# `vxlan` -- (optional) VXLAN name for a mapped interface
# `mtu` -- (optional) MTU to use for the interface
# `usedns` -- (optional) When set to true the interface will accept DNS when
# running in dhcp mode
# `static_routes` -- (optional) list of routes to use for the network. This
# option requires a gateway and cidr to be set
# within the list item.
# `ipforward` -- (optional) When set to true forwarding will be enabled for
# interface. This setting will enable
# net.ipv4.ip_forward, net.ipv4.conf.all.forwarding
# and net.ipv4.conf.interface.forwarding
# systemd_networks:
# - interface: "dummy0"
# bridge: "bond0"
# mtu: 9000
# - interface: "dummy1"
# filename: "{{ item.1.interface }}.network"
# bridge: "bond0"
# mtu: 9000
# - interface: "bond0"
# bridge: "br-dummy"
# mtu: 9000
# - interface: "br-dummy"
# bridge: "br-dummy"
# address: "10.0.0.100"
# netmask: "255.255.255.0"
# gateway: "10.0.0.1"
# mtu: 9000
# usedns: true
# config_overrides:
# Network:
# ConfigureWithoutCarrier: true
systemd_networks: []
# The systemd resolved service can be setup using th following configuration.
# The generator is a Key=Value pair hash and will set whatever directives it's
# instructed to. For more information on all of the possible configuration see
# https://www.freedesktop.org/software/systemd/man/resolved.conf.html
# systemd_resolved:
# DNS: "10.127.83.1"
# FallbackDNS: "208.67.222.222 8.8.8.8"
# Cache: yes
systemd_resolved: {}
# Enable or Disable the availability of systemd-resolved. This option is a
# Boolean variable.
systemd_resolved_available: "{{ _systemd_resolved_available | default(true) }}"
# Specify the command used to update the initramfs. By default this will run
# "/bin/true" which is done because the command required to run should never
# be assumed. Distro specific config is available in vars otherwise deployers
# can set this as needed.
systemd_networkd_update_initramfs: "{{ _systemd_networkd_update_initramfs | default('true') }}"
# Provide a list of packages that are to be installed before this role is
# executed.
# _systemd_networkd_distro_packages:
# - systemd-networkd
# - systemd-resolved
systemd_networkd_distro_packages: "{{ _systemd_networkd_distro_packages | default([]) }}"
systemd_networkd_epel_mirror: "{{ centos_epel_mirror | default('http://download.fedoraproject.org/pub/epel') }}"
# The systemd networkd service can be used to set specific link configuration options.
# For more information on all of the possible configuration see
# https://www.freedesktop.org/software/systemd/man/systemd.link.html
systemd_networkd_link:
MACAddressPolicy: "persistent"
Example playbook¶
---
- name: Create a systemd-networkd interfaces
hosts: localhost
become: true
roles:
- role: "systemd_networkd"
vars:
systemd_interface_cleanup: true
systemd_run_networkd: true
systemd_netdevs:
- NetDev:
Name: dummy0
Kind: dummy
- NetDev:
Name: dummy2
Kind: dummy
- NetDev:
Name: dummy1
Kind: dummy
- NetDev:
Name: dummy3
Kind: dummy
- NetDev:
Name: bond0
Kind: bond
Bond:
Mode: 802.3ad
TransmitHashPolicy: layer3+4
MIIMonitorSec: 1s
LACPTransmitRate: fast
- NetDev:
Name: bond1
Kind: bond
Bond:
Mode: 802.3ad
TransmitHashPolicy: layer3+4
MIIMonitorSec: 1s
LACPTransmitRate: fast
- NetDev:
Name: bond0.110
Kind: vlan
VLAN:
Id: 110
- NetDev:
Name: bond0.120
Kind: vlan
VLAN:
Id: 120
- NetDev:
Name: bond0.130
Kind: vlan
VLAN:
Id: 130
- NetDev:
Name: bond0.140
Kind: vlan
VLAN:
Id: 140
- NetDev:
Name: bond1.210
Kind: vlan
VLAN:
Id: 210
- NetDev:
Name: br-mgmt
Kind: bridge
- NetDev:
Name: br-vxlan
Kind: bridge
- NetDev:
Name: br-storage
Kind: bridge
- NetDev:
Name: br-vlan
Kind: bridge
- NetDev:
Name: br-dbaas
Kind: bridge
- NetDev:
Name: br-lbaas
Kind: bridge
- NetDev:
Name: br-vlan-veth
Kind: veth
Peer:
Name: eth12
- NetDev:
Name: br-dbaas-veth
Kind: veth
Peer:
Name: eth13
- NetDev:
Name: br-lbaas-veth
Kind: veth
Peer:
Name: eth14
systemd_networks:
- interface: "dummy0"
bond: "bond0"
mtu: 9000
- interface: "dummy2"
bond: "bond0"
mtu: 9000
- interface: "dummy1"
bond: "bond1"
mtu: 9000
- interface: "dummy3"
bond: "bond1"
mtu: 9000
- interface: "bond0"
config_overrides:
Network:
VLAN:
? "bond0.110"
? "bond0.120"
? "bond0.130"
? "bond0.140"
mtu: 9000
- interface: "bond1"
bridge: "br-vlan"
config_overrides:
Network:
VLAN:
? "bond1.210"
mtu: 9000
- interface: "bond0.110"
bridge: "br-mgmt"
mtu: 9000
- interface: "br-mgmt"
address: "172.29.236.100"
netmask: "255.255.252.0"
- interface: "bond0.120"
bridge: "br-storage"
mtu: 9000
- interface: "br-storage"
address: "172.29.244.100"
netmask: "255.255.252.0"
- interface: "bond0.130"
bridge: "br-dbaas"
mtu: 9000
- interface: "br-dbaas"
address: "172.29.232.100"
netmask: "255.255.252.0"
- interface: "br-dbaas-veth"
bridge: "br-dbaas"
mtu: 9000
- interface: "bond0.140"
bridge: "br-lbaas"
mtu: 9000
- interface: "br-lbaas"
address: "172.29.252.100"
netmask: "255.255.252.0"
- interface: "br-lbaas-veth"
bridge: "br-lbaas"
mtu: 9000
- interface: "bond1.210"
bridge: "br-vxlan"
mtu: 9000
- interface: "br-vxlan"
address: "172.29.240.100"
netmask: "255.255.252.0"
- interface: "br-vlan"
config_overrides:
Network:
Address:
? "172.29.248.100/22"
? "172.29.248.1/22"
- interface: "br-vlan-veth"
bridge: "br-vlan"
mtu: 9000