360 Configure bridge

Use case

Use the role vbotka.freebsd.network to configure bridges.

Tree

shell> tree .
.
├── ansible.cfg
├── host_vars
│   └── iocage_06
│       ├── loader.yml
│       └── network.yml
├── iocage.ini
├── pb-loader.yml
└── pb-network.yml

Synopsis

  • Configure /boot/loader.conf

  • Configure bridge interfaces.

Requirements

Notes

  • TBD

Note

vbotka.freebsd_network is the role freebsd_network in the namespace vbotka.

ansible.cfg

[defaults]
callback_result_format = yaml
deprecation_warnings = False
display_skipped_hosts = False
gathering = explicit
interpreter_python = auto_silent
log_path = /var/log/ansible.log

[connection]
pipelining = true

Inventory iocage.ini

iocage_06

[iocage]
iocage_06

[iocage:vars]
ansible_user=admin
ansible_become=true
ansible_python_interpreter=auto_silent

host_vars

host_vars/iocage_06/loader.yml
fp_loader_conf_template: ''
fp_loader_conf:
  - {name: net.link.bridge.pfil_member, value: "0"}
  - {name: net.link.bridge.pfil_bridge, value: "0"}
  - {name: net.link.bridge.inherit_mac, value: "1"}
fp_loader_conf_modules:
  - {name: if_bridge, value: "YES" }
host_vars/iocage_06/network.yml
fn_gateway_enable: true
fn_defaultrouter: 10.30.10.1
fn_cloned_interfaces:
  - {interface: bridge0, state: value_present}
fn_interfaces:
  - {interface: bridge0, options: inet 172.16.99.1/24}

Playbook pb-loader.yml

- name: Configure loader.conf
  hosts: iocage
  gather_facts: true

  tasks:

    - name: Configure /boot/loader.conf
      ansible.builtin.import_role:
        name: vbotka.freebsd.postinstall
        tasks_from: loader

Playbook output - Configure loader.conf

(env) > ansible-playbook -i iocage.ini pb-loader.yml
PLAY [Configure loader.conf] ***************************************************

TASK [Gathering Facts] *********************************************************
ok: [iocage_06]

TASK [vbotka.freebsd.postinstall : Loader: Backup orig /boot/loader.conf] ******
ok: [iocage_06]

TASK [vbotka.freebsd.postinstall : Loader: Configure by sysctl /boot/loader.conf] ***
ok: [iocage_06] => (item={'name': 'net.link.bridge.pfil_member', 'value': '0'})
ok: [iocage_06] => (item={'name': 'net.link.bridge.pfil_bridge', 'value': '0'})
ok: [iocage_06] => (item={'name': 'net.link.bridge.inherit_mac', 'value': '1'})

TASK [vbotka.freebsd.postinstall : Loader: Configure modules by sysctl /boot/loader.conf] ***
ok: [iocage_06] => (item={'name': 'if_bridge', 'value': 'YES'})

TASK [vbotka.freebsd.postinstall : Loader: Get sysctls settable via loader.] ***
ok: [iocage_06]

PLAY RECAP *********************************************************************
iocage_06                  : ok=5    changed=0    unreachable=0    failed=0    skipped=4    rescued=0    ignored=0   

Playbook pb-network.yml

- name: Configure network.
  hosts: iocage
  gather_facts: true

  roles:
    - vbotka.freebsd.network

Playbook output - Configure network

(env) > ansible-playbook -i iocage.ini pb-network.yml
PLAY [Configure network.] ******************************************************

TASK [Gathering Facts] *********************************************************
ok: [iocage_06]

TASK [vbotka.freebsd.network : Interfaces: Configure interfaces options in /etc/rc.conf] ***
ok: [iocage_06] => (item={'interface': 'bridge0', 'options': 'inet 172.16.99.1/24'})

TASK [vbotka.freebsd.network : Cloned-interfaces: Configure cloned_interfaces in /etc/rc.conf] ***
ok: [iocage_06] => (item={'interface': 'bridge0', 'state': 'value_present'})

TASK [vbotka.freebsd.network : Routing: Set defaultrouter in /etc/rc.conf] *****
ok: [iocage_06]

TASK [vbotka.freebsd.network : Routing: Set gateway_enable=YES in /etc/rc.conf] ***
ok: [iocage_06]

TASK [vbotka.freebsd.network : Routing: Remove list of static routes from /etc/rc.conf] ***
ok: [iocage_06]

PLAY RECAP *********************************************************************
iocage_06                  : ok=6    changed=0    unreachable=0    failed=0    skipped=17   rescued=0    ignored=0   

Result

MAC addresses are sanitized.

shell> ssh admin@iocage_06 ifconfig bridge0
bridge0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 1500
	options=10<VLAN_HWTAGGING>
	ether 11:22:33:44:55:66
	inet 172.16.99.1 netmask 0xffffff00 broadcast 172.16.99.255
	id 11:22:33:44:55:66 priority 32768 hellotime 2 fwddelay 15
	maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
	root id 11:22:33:44:55:66 priority 32768 ifcost 0 port 0
	bridge flags=0<>
	member: vnet0.4 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        port 21 priority 128 path cost 2000 vlan protocol 802.1q
	member: vnet0.3 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        port 17 priority 128 path cost 2000 vlan protocol 802.1q
	member: vnet0.2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        port 13 priority 128 path cost 2000 vlan protocol 802.1q
	member: vnet0.1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
	        port 9 priority 128 path cost 2000 vlan protocol 802.1q
	groups: bridge
	nd6 options=9<PERFORMNUD,IFDISABLED>