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.confConfigure bridge interfaces.
Requirements
Root privileges on the managed nodes.
Notes
TBD
Note
vbotka.freebsd.network is the role network in the collection vbotka.freebsd.
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>