Compare commits

...

2 Commits

Author SHA1 Message Date
Gregor Michels 51a8de4299 ffl-ans-gw-core01: move offloader network hook into /usr/lib 2022-12-23 13:30:03 +01:00
Gregor Michels 1ea236b206 ffl-ans-gw-core01: finally put offloader vm setup into ansible 2022-12-23 13:22:38 +01:00
3 changed files with 140 additions and 0 deletions

View File

@ -68,3 +68,70 @@
service:
name: frr
state: restarted
- name: custom changes for ffl-ans-gw-core01 (offloader vm, ...)
hosts: ffl-ans-gw-core01
tasks:
- name: install qemu packages
opkg:
name:
- kmod-tun
- qemu-x86_64-softmmu
- kmod-kvm-intel
update_cache: yes
- name: provision /usr/lib
template:
src: "{{ item }}"
dest: /usr/lib
owner: root
group: root
mode: 0755
with_fileglob:
- "templates/gateways/{{ inventory_hostname }}/usr/lib/*"
- name: provision /etc/init.d
template:
src: "{{ item }}"
dest: /etc/init.d/
owner: root
group: root
mode: 0755
with_fileglob:
- "templates/gateways/{{ inventory_hostname }}/etc/init.d/*"
- name: preserve custom changes on config backups
blockinfile:
path: /etc/sysupgrade.conf
marker_begin: "BEGIN OFFLOADER"
marker_end: "END OFFLOADER"
block: |
/etc/init.d/qemu-offloader
/usr/lib/offloader_vm_net_up
- name: enable offloader vm service
service:
name: qemu-offloader
state: started
enabled: True
- name: add notes about custom offloader in banner
copy:
dest: /etc/profile.d/01_offloader_banner.sh
owner: root
group: root
mode: 0644
content: |
cat << EOB
DISCLAIMER:
===========
There is a FFL/FFDD offloader running on this machine
via qemu.
service qemu-offloader status
to be cleaned up:
- let procd gracefully kill the vm on stop/shutdown
- remove network hook /usr/lib/offloader_vm_net_up
-----------------------------------------------------
EOB

View File

@ -0,0 +1,50 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2013-2017 OpenWrt.org
START=99
USE_PROCD=1
start_service() {
procd_open_instance
procd_set_param command qemu-system-x86_64
procd_append_param command -enable-kvm
procd_append_param command -cpu host
procd_append_param command -smp 2
procd_append_param command -m 1G
procd_append_param command -machine type=q35,accel=kvm
procd_append_param command -drive file=/dev/sdb,cache=none,if=virtio,format=raw
procd_append_param command -nic tap,model=virtio-net-pci,script=/usr/lib/offloader_vm_net_up,downscript=no,ifname=tap0
procd_append_param command -nic tap,model=virtio-net-pci,script=/usr/lib/offloader_vm_net_up,downscript=no,ifname=tap1
procd_append_param command -pidfile /var/run/qemu-offloader.pid
procd_append_param command -chardev socket,path=/tmp/qga.qemu-offloader.sock,server=on,wait=off,id=qga0
procd_append_param command -device virtio-serial
procd_append_param command -device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0
procd_set_param stdout 1
procd_set_param stderr 1
procd_set_param respawn
procd_close_instance
}
#stop_service() {
# [ ! -e /tmp/qga.sock ] && exit 0
# echo "sending shutdown command via guest agent"
# socat stdio unix-connect:/tmp/qga.sock << EOF
#{"execute":"guest-shutdown"}
#EOF
#}
#
#service_stopped() {
# for i in $(seq 1 20)
# do
# if [ ! -e /var/run/qemu-alpine.pid ]; then
# echo "vm down !"
# exit 0
# fi
# echo "vm not down yet"
# sleep 1
# done
#}

View File

@ -0,0 +1,23 @@
#!/bin/sh
set -e
# tap0 -> clients (vlan: 2)
# tap1 -> wan (vlan: 3)
VLAN=2
BRIDGE=switch
ifname=$1
[ $ifname = "tap1" ] && VLAN=3
# associate tap interface with bridge
ip link set dev $ifname up
ip link set dev $ifname master $BRIDGE
# delete standard vlan
bridge vlan del dev $ifname vid 1
# correctly tag interface
bridge vlan add dev $ifname vid $VLAN pvid untagged