https://github.com/stackhpc/ansible-role-vxlan
Ansible role for configuring VXLANs using `network-scripts`
https://github.com/stackhpc/ansible-role-vxlan
Last synced: 2 months ago
JSON representation
Ansible role for configuring VXLANs using `network-scripts`
- Host: GitHub
- URL: https://github.com/stackhpc/ansible-role-vxlan
- Owner: stackhpc
- License: apache-2.0
- Created: 2022-08-08T15:34:27.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-05-16T08:46:37.000Z (about 3 years ago)
- Last Synced: 2024-04-14T22:50:18.566Z (over 2 years ago)
- Language: Jinja
- Homepage:
- Size: 37.1 KB
- Stars: 0
- Watchers: 7
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
VXLAN
=========
This role creates persistent VXLAN interfaces with the use of [Network Scripts](https://pkgs.org/download/network-scripts), [NetworkManger](https://pkgs.org/download/NetworkManager), or [Systemd-Networkd](https://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html).
Role Variables
--------------
The role uses the same variable names as `Network Scripts`. It is recommended to review the documentation on [Network Scripts](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s1-networkscripts-interfaces). Below are the variables relevant and supported by this role.
`vxlan_vni`: sets the VXLAN network identifier for the VXLAN interfaces
`vxlan_ttl`: set the time-to-live for the packets transmitted over the interface
`vxlan_phys_dev`: set the physical device for the VXLAN interface to pair with
`vxlan_dstport`: set the port for the VXLAN to reside on
`vxlan_bootproto`: specify boot protocol used with the interface (unsupported when using NetworkManger or Systemd-Networkd, always none)
`vxlan_onboot`: set to `yes` if the VXLAN interface should be brought up on boot otherwise `no` (Not supported on Systemd-networkd)
`vxlan_interfaces`: list of interfaces to be created can set specific instances of the variables defined above in addition to some others
> `device`: name assigned the VXLAN interface
>
> `ipaddr`: the IPV4 address assigned to the VXLAN interface (unsupported when using NetworkManger or Systemd-Networkd)
>
> `prefix`: the subnet mask use with the `ipaddr` (unsupported when using NetworkManger or Systemd-Networkd)
>
> `group`: the multicast group the VXLAN will operate on
>
> `bridge`: if set establish a bridge between this VXLAN and the specified interface
By default, Network Scripts will be used unless it is unavailable. Usage of either Network Scripts, NetworkManager or Systemd-Networkd can be enforced by setting `force_ns`, `force_nm`, or `force_sd` to true.
Example Playbook
----------------
Include the role into a playbook as you would any other role.
- hosts: host1
roles:
- role: vxlan
vars:
vxlan_vni: 10
vxlan_interfaces:
- device: vxlan0
ipaddr: 192.168.0.2
group: 224.0.0.100
For variables such as `vxlan_ipaddr` it is best to define them on a host by host basis.
### /host_vars/host1
vxlan_interfaces:
- device: vxlan0
ipaddr: 192.168.0.2
group: 224.0.0.100
### /host_vars/host2
vxlan_interfaces:
- device: vxlan0
ipaddr: 192.168.0.3
group: 224.0.0.100
You may also define multiple VXLAN interfaces per host however you must provide a unique `vxlan_vni` for each device defined in `vxlan_interfaces`
### /host_vars/host1
vxlan_interfaces:
- device: vxlan0
vni: 10
group: 224.0.0.200
- device: vxlan1
vni: 20
group: 224.0.0.200
You may also set a bridge for vxlan interface to operate over.
### /host_vars/host1
vxlan_interfaces:
- device: vxlan0
group: 224.0.0.10
bridge: breth1
License
-------
Apache License 2.0
Author Information
------------------
[StackHPC](https://www.stackhpc.com/)