Skip to content

Instantly share code, notes, and snippets.

@cloudnull
Last active May 7, 2019 02:36
Show Gist options
  • Save cloudnull/e2d0918b7ad1c10469681846b2081039 to your computer and use it in GitHub Desktop.
Save cloudnull/e2d0918b7ad1c10469681846b2081039 to your computer and use it in GitHub Desktop.
# ansible-playbook -i $THISFILE network_config.yml
all_systems:
vars:
rax_systemd_resolved:
DNS: "69.20.0.164"
FallbackDNS: "69.20.0.196 208.67.222.222 8.8.8.8"
Cache: yes
children:
rpc_infra:
hosts:
727474-infra01:
ansible_host: 10.143.47.132
host_addr: 10.240.0.199
host_gw: 10.240.0.1
host_netmask: 255.255.252.0
snet_addr: "{{ ansible_host }}"
snet_netmask: 255.255.255.224
management_addr: 172.30.0.51
management_netmask: 255.255.252.0
tunnel_addr: 172.31.4.51
tunnel_netmask: 255.255.252.0
storage_addr: 172.30.8.51
storage_netmask: 255.255.252.0
727475-infra02:
ansible_host: 10.143.47.133
host_addr: 10.240.0.201
host_gw: 10.240.0.1
host_netmask: 255.255.252.0
snet_addr: "{{ ansible_host }}"
snet_netmask: 255.255.255.224
management_addr: 172.30.0.52
management_netmask: 255.255.252.0
tunnel_addr: 172.31.4.52
tunnel_netmask: 255.255.252.0
storage_addr: 172.30.8.52
storage_netmask: 255.255.252.0
727476-infra03:
ansible_host: 10.143.47.134
host_addr: 10.240.0.193
host_gw: 10.240.0.1
host_netmask: 255.255.252.0
snet_addr: "{{ ansible_host }}"
snet_netmask: 255.255.255.224
management_addr: 172.30.0.53
management_netmask: 255.255.252.0
tunnel_addr: 172.31.4.53
tunnel_netmask: 255.255.252.0
storage_addr: 172.30.8.53
storage_netmask: 255.255.252.0
rpc_compute:
hosts: {}
rpc_storage:
hosts: {}
---
- name: Create a systemd-networkd interfaces
hosts: all_systems
become: true
gather_facts: true
post_tasks:
- name: Notice
debug:
run_once: true
msg: >-
Network setup complete, to finalize the config login to
each host and enable `systemd-networkd` then reboot the
machine. This can be done with simple commands:
`systemctl enable systemd-networkd && shutdown -r now`.
pre_tasks:
- name: Check for ENI file
stat:
path: /etc/network/interfaces
register: eni_check
- name: Backup old ENI file
command: mv /etc/network/interfaces /etc/network/interfaces.old
args:
creates: /etc/network/interfaces.old
when:
- eni_check.stat.exists | bool
roles:
- role: "systemd_networkd"
when:
- inventory_hostname in groups['rpc_infra']
systemd_run_networkd: false
systemd_networkd_prefix: "osa"
systemd_interface_cleanup: false
systemd_netdevs:
# LXC setup, dummy interface is set into empty bridge
- NetDev:
Name: dummy-lxcbr0
Kind: dummy
- NetDev:
Name: lxcbr0
Kind: bridge
systemd_networks:
- interface: "dummy-lxcbr0"
bridge: "lxcbr0"
# LXC setup, this IP address is statically defined and the same on all hosts for every deployment
- interface: "lxcbr0"
address: "10.0.3.1"
netmask: "255.255.255.0"
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
- role: "systemd_networkd"
systemd_run_networkd: false
systemd_networkd_prefix: "rpc"
systemd_interface_cleanup: true
systemd_resolved: "{{ rax_systemd_resolved }}"
systemd_netdevs:
# Bond setup
- NetDev:
Name: bond0
Kind: bond
Bond:
Mode: active-backup
PrimaryReselectPolicy: always
MIIMonitorSec: 1s
# Vlan configuration setup
- NetDev:
Name: bond0.1246
Kind: vlan
VLAN:
Id: 1246
- NetDev:
Name: bond0.1249
Kind: vlan
VLAN:
Id: 1249
- NetDev:
Name: bond0.1251
Kind: vlan
VLAN:
Id: 1251
# Bridge device setup
- NetDev:
Name: br-mgmt
Kind: bridge
- NetDev:
Name: br-storage
Kind: bridge
- NetDev:
Name: br-vxlan
Kind: bridge
- NetDev:
Name: br-vlan
Kind: bridge
systemd_networks:
# Loopback Network
- interface: "lo"
address: 127.0.1.1
netmask: 255.0.0.0
# "CONTAINER" network
- interface: "bond0.1246"
bridge: "br-mgmt"
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
- interface: "br-mgmt"
address: "{{ management_addr }}"
netmask: "{{ management_netmask }}"
usedns: true
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
# "STORAGE" network
- interface: "bond0.1249"
bridge: "br-storage"
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
- interface: "br-storage"
address: "{{ storage_addr }}"
netmask: "{{ storage_netmask }}"
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
# "TUNNEL" network
- interface: "bond0.1251"
bridge: "br-vxlan"
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
- interface: "br-vxlan"
address: "{{ tunnel_addr }}"
netmask: "{{ tunnel_netmask }}"
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
# "VLAN" network
- interface: "bond0"
bridge: "br-vlan"
config_overrides:
Network:
VLAN:
? bond0.1246
? bond0.1249
? bond0.1251
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
- interface: "br-vlan"
address: "{{ host_addr }}"
netmask: "{{ host_netmask }}"
gateway: "{{ host_gw }}"
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
# Physical network configs
- interface: "em1"
bond: "bond0"
- interface: "em3"
address: "{{ snet_addr }}"
netmask: "{{ snet_netmask }}"
usedns: true
config_overrides:
Network:
ConfigureWithoutCarrier: true
IgnoreCarrierLoss: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment