summaryrefslogtreecommitdiff
path: root/elevate
diff options
context:
space:
mode:
Diffstat (limited to 'elevate')
-rw-r--r--elevate/cloud-install.yml10
-rw-r--r--elevate/common.yml10
-rw-r--r--elevate/ele-calypso.yml56
-rw-r--r--elevate/ele-chromebook.yml28
-rw-r--r--elevate/ele-companion-raspi.yml36
-rw-r--r--elevate/ele-coturn.yml19
-rw-r--r--elevate/ele-dione.yml77
-rw-r--r--elevate/ele-dolmetsch-raspi.yml31
-rw-r--r--elevate/ele-emc-ctrl.yml18
-rw-r--r--elevate/ele-emcplayer.yml32
-rw-r--r--elevate/ele-gwhetzner.yml17
-rw-r--r--elevate/ele-helene.yml43
-rw-r--r--elevate/ele-hpws-maxi.yml18
-rw-r--r--elevate/ele-hpws-mini1.yml15
-rw-r--r--elevate/ele-hpws-mini2.yml31
-rw-r--r--elevate/ele-hyperion.yml67
-rw-r--r--elevate/ele-jitsi.yml21
-rw-r--r--elevate/ele-lt.yml17
-rw-r--r--elevate/ele-media.yml25
-rw-r--r--elevate/ele-router.yml105
-rw-r--r--elevate/ele-stage-raspi.yml14
-rw-r--r--elevate/ele-tarvos.yml15
-rw-r--r--elevate/ele-telesto.yml55
-rw-r--r--elevate/ele-thetys.yml52
-rw-r--r--elevate/ele-tsdatacop.yml48
-rw-r--r--elevate/ele-uhrturm.yml16
-rw-r--r--elevate/ele-winvm.yml18
-rw-r--r--elevate/ele-ymir.yml51
-rw-r--r--elevate/emc-cdn.yml17
-rw-r--r--elevate/generic.yml5
-rw-r--r--elevate/group_vars/all.yml12
-rw-r--r--elevate/group_vars/ele-router.yml167
-rw-r--r--elevate/group_vars/elevate-festival.yml15
-rw-r--r--elevate/group_vars/elevate-mediachannel.yml10
-rw-r--r--elevate/group_vars/elevate.yml9
-rw-r--r--elevate/group_vars/k8s-emc.yml10
-rw-r--r--elevate/host_vars/ele-calypso.yml22
-rw-r--r--elevate/host_vars/ele-coturn.yml18
-rw-r--r--elevate/host_vars/ele-gwhetzner.yml17
-rw-r--r--elevate/host_vars/ele-jitsi.yml26
-rw-r--r--elevate/host_vars/ele-lt.yml20
-rw-r--r--elevate/host_vars/ele-media.yml18
-rw-r--r--elevate/image-generate.yml20
-rw-r--r--elevate/info-beamer.yml14
-rw-r--r--elevate/iso-generate.yml10
-rw-r--r--elevate/iso-install.yml10
-rw-r--r--elevate/k8s-emc.yml52
-rw-r--r--elevate/openwrt-deploy.yml9
-rw-r--r--elevate/usb-generate.yml10
-rw-r--r--elevate/usb-install.yml10
-rw-r--r--elevate/vm-deploy.yml18
-rw-r--r--elevate/vm-install.yml11
52 files changed, 1475 insertions, 0 deletions
diff --git a/elevate/cloud-install.yml b/elevate/cloud-install.yml
new file mode 100644
index 00000000..72db81d9
--- /dev/null
+++ b/elevate/cloud-install.yml
@@ -0,0 +1,10 @@
+---
+- name: cook variables for host
+ hosts: "{{ install_hostname }}"
+ gather_facts: no
+ tasks:
+ - set_fact:
+ install: "{{ install | default({}) }}"
+ network: "{{ network | default({}) }}"
+
+- import_playbook: ../common/cloud-install.yml
diff --git a/elevate/common.yml b/elevate/common.yml
new file mode 100644
index 00000000..af4b4fda
--- /dev/null
+++ b/elevate/common.yml
@@ -0,0 +1,10 @@
+---
+- name: Basic Setup
+ hosts: "{{ install_hostname }}"
+ roles:
+ - role: apt-repo/base
+ when: ansible_pkg_mgr == "apt"
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
diff --git a/elevate/ele-calypso.yml b/elevate/ele-calypso.yml
new file mode 100644
index 00000000..5d8e51ce
--- /dev/null
+++ b/elevate/ele-calypso.yml
@@ -0,0 +1,56 @@
+---
+- name: Basic Setup
+ hosts: ele-calypso
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-calypso
+ roles:
+ - role: apt-repo/spreadspace
+ - role: streaming/blackmagic/desktopvideo
+ - role: storage/lvm/base
+ - role: kubernetes/base
+ - role: kubernetes/standalone/base
+ - role: streaming/player
+ - role: nginx/base
+ - role: monitoring/sachet
+ - role: monitoring/prometheus/server
+ - role: monitoring/prometheus/exporter
+ - role: monitoring/prometheus/alertmanager
+ - role: monitoring/grafana
+ - role: monitoring/landingpage
+ post_tasks:
+ ## TODO: move to network/interfaces when this is done
+ - name: install vlan interfaces
+ loop: "{{ network.vlans | dict2items }}"
+ loop_control:
+ label: "{{ item.key }} ({{ item.value | join(',') }})"
+ copy:
+ dest: "/etc/network/interfaces.d/{{ item.key }}"
+ content: |
+ auto {{ item.key }}
+ iface {{ item.key }} inet manual
+ {% for vlan in item.value %}
+ {% set vlan_ifname = item.key + '.' + (vlan | string) %}
+ {% set vlan_iface = (network.interfaces | selectattr('name', 'eq', vlan_ifname)) %}
+
+ auto {{ vlan_ifname }}
+ {% if vlan_iface %}
+ iface {{ vlan_ifname }} inet static
+ address {{ (vlan_iface | first).address }}
+ {% for route in vlan_iface[0].static_routes | default([]) %}
+ up /bin/ip route add {{ route.destination }} via {{ route.gateway }}{% if 'source' in route %} src {{ route.source }}{% endif %}{{ '' }}
+ {% endfor %}
+ {% for route in vlan_iface[0].static_routes | default([]) | reverse %}
+ down /bin/ip route del {{ route.destination }} via {{ route.gateway }}{% if 'source' in route %} src {{ route.source }}{% endif %}{{ '' }}
+ {% endfor %}
+ {% else %}
+ iface {{ vlan_ifname }} inet manual
+ {% endif %}
+ {% endfor %}
diff --git a/elevate/ele-chromebook.yml b/elevate/ele-chromebook.yml
new file mode 100644
index 00000000..411c49b7
--- /dev/null
+++ b/elevate/ele-chromebook.yml
@@ -0,0 +1,28 @@
+---
+- name: Basic Setup
+ hosts: ele-chromebook
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-chromebook
+ roles:
+ - role: ws/base
+ - role: core/users
+ - role: ws/flatpak
+ post_tasks:
+ - name: install script to configure hdmi out
+ copy:
+ dest: /usr/local/bin/display-setup.sh
+ mode: 0755
+ content: |
+ #!/bin/bash
+ xrandr --output eDP --mode 1920x1080 --primary
+ xrandr --output DisplayPort-3 --mode 1920x1080 --rate 50 --left-of eDP
+ exit 0
+
+## TODO: vlan setup was done manually...
diff --git a/elevate/ele-companion-raspi.yml b/elevate/ele-companion-raspi.yml
new file mode 100644
index 00000000..e16c4d70
--- /dev/null
+++ b/elevate/ele-companion-raspi.yml
@@ -0,0 +1,36 @@
+---
+- name: Basic Setup
+ hosts: ele-companion-raspi
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: ele-companion-raspi
+ roles:
+ - role: apt-repo/spreadspace
+ - role: kubernetes/base
+ - role: kubernetes/standalone/base
+ - role: streaming/companion
+ - role: streaming/ontime
+ post_tasks:
+ - name: install vlan package
+ apt:
+ name: vlan
+ state: present
+
+ ## TODO: this should be moved to a generac interfaces role...
+ - name: add vlan config for mixer vlan
+ blockinfile:
+ path: /etc/network/interfaces
+ block: |
+
+ auto {{ network.primary.name }}.{{ network_zones.mixer.vlan }}
+ iface {{ network.primary.name }}.{{ network_zones.mixer.vlan }} inet static
+ up echo 0 > /proc/sys/net/ipv6/conf/$IFACE/accept_ra
+ up echo 0 > /proc/sys/net/ipv6/conf/$IFACE/autoconf
+ address {{ network_zones.mixer.prefix | ansible.utils.ipaddr(network_zones.mixer.offsets[inventory_hostname]) | ansible.utils.ipaddr('address') }}
+ netmask {{ network_zones.mixer.prefix | ansible.utils.ipaddr(network_zones.mixer.offsets[inventory_hostname]) | ansible.utils.ipaddr('netmask') }}
diff --git a/elevate/ele-coturn.yml b/elevate/ele-coturn.yml
new file mode 100644
index 00000000..4111f156
--- /dev/null
+++ b/elevate/ele-coturn.yml
@@ -0,0 +1,19 @@
+---
+- name: Basic Setup
+ hosts: ele-coturn
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: ele-coturn
+ roles:
+ - role: apt-repo/spreadspace
+ - role: kubernetes/base
+ - role: kubernetes/standalone/base
+ - role: x509/acmetool/base
+ - role: apps/coturn
+ - role: apps/mumble
diff --git a/elevate/ele-dione.yml b/elevate/ele-dione.yml
new file mode 100644
index 00000000..95800036
--- /dev/null
+++ b/elevate/ele-dione.yml
@@ -0,0 +1,77 @@
+---
+- name: Basic Setup
+ hosts: ele-dione
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-dione
+ roles:
+ - role: core/users
+ - role: storage/zfs/base
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: streaming/blackmagic/desktopvideo
+ post_tasks:
+ - name: install lm-sensors and i7z
+ apt:
+ name:
+ - lm-sensors
+ - i7z
+ - s-tui
+
+ - name: load modules for lm-sensors
+ vars:
+ sensors_modules:
+ - coretemp
+ block:
+ - name: load special modules for lm-sensors
+ loop: "{{ sensors_modules }}"
+ modprobe:
+ name: "{{ item }}"
+ state: present
+
+ - name: make sure sensor modules are loaded on reboot
+ copy:
+ content: |
+ # Ansible managed
+
+ {% for module in sensors_modules %}
+ {{ module }}
+ {% endfor %}
+ dest: /etc/modules-load.d/sensors.conf
+
+ ## TODO: move to network/interfaces when this is done
+ - name: install vlan interfaces
+ loop: "{{ network.vlans | dict2items }}"
+ loop_control:
+ label: "{{ item.key }} ({{ item.value | join(',') }})"
+ copy:
+ dest: "/etc/network/interfaces.d/{{ item.key }}"
+ content: |
+ auto {{ item.key }}
+ iface {{ item.key }} inet manual
+ {% for vlan in item.value %}
+ {% set vlan_ifname = item.key + '.' + (vlan | string) %}
+ {% set vlan_iface = (network.interfaces | selectattr('name', 'eq', vlan_ifname)) %}
+
+ auto {{ vlan_ifname }}
+ {% if vlan_iface %}
+ iface {{ vlan_ifname }} inet static
+ address {{ (vlan_iface | first).address }}
+ {% for route in vlan_iface[0].static_routes | default([]) %}
+ up /bin/ip route add {{ route.destination }} via {{ route.gateway }}{% if 'source' in route %} src {{ route.source }}{% endif %}{{ '' }}
+ {% endfor %}
+ {% for route in vlan_iface[0].static_routes | default([]) | reverse %}
+ down /bin/ip route del {{ route.destination }} via {{ route.gateway }}{% if 'source' in route %} src {{ route.source }}{% endif %}{{ '' }}
+ {% endfor %}
+ {% else %}
+ iface {{ vlan_ifname }} inet manual
+ {% endif %}
+ {% endfor %}
diff --git a/elevate/ele-dolmetsch-raspi.yml b/elevate/ele-dolmetsch-raspi.yml
new file mode 100644
index 00000000..cbb2ca58
--- /dev/null
+++ b/elevate/ele-dolmetsch-raspi.yml
@@ -0,0 +1,31 @@
+---
+- name: Basic Setup
+ hosts: "{{ install_hostname }}"
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+
+- name: Payload Setup
+ hosts: "{{ install_hostname }}"
+ roles:
+ - role: streaming/dolmetsch-raspi
+ post_tasks:
+ - when: inventory_hostname == "ele-dol-raspi0"
+ loop:
+ - rtp-recv.service
+ - dolmetschctld.service
+ systemd:
+ name: "{{ item }}"
+ state: started
+ enabled: yes
+
+ - when: inventory_hostname == "ele-dol-raspi1"
+ loop:
+ - rtp-send.service
+ - dolmetschctl.service
+ systemd:
+ name: "{{ item }}"
+ state: started
+ enabled: yes
diff --git a/elevate/ele-emc-ctrl.yml b/elevate/ele-emc-ctrl.yml
new file mode 100644
index 00000000..b24d8df4
--- /dev/null
+++ b/elevate/ele-emc-ctrl.yml
@@ -0,0 +1,18 @@
+---
+- name: Basic Setup
+ hosts: ele-emc-ctrl
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: ele-emc-ctrl
+ roles:
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: storage/lvm/base
+ - role: elevate/emc-stats
diff --git a/elevate/ele-emcplayer.yml b/elevate/ele-emcplayer.yml
new file mode 100644
index 00000000..0b9d7568
--- /dev/null
+++ b/elevate/ele-emcplayer.yml
@@ -0,0 +1,32 @@
+---
+- name: Basic Setup
+ hosts: "{{ install_hostname }}"
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: "{{ install_hostname }}"
+ roles:
+ - role: ws/base
+ - role: core/users
+ post_tasks:
+ - name: generate play script
+ copy:
+ content: |
+ #!/bin/bash
+ exec mpv -fs --loop=inf --af-add="channelmap=0|1:stereo" rtmp://{{ network_zones.guest.prefix | ansible.utils.ipaddr(network_zones.guest.offsets['ele-helene']) | ansible.utils.ipaddr('address') }}/emc/full
+ dest: /usr/local/bin/emc-play.sh
+ mode: 0755
+
+## TODO:
+# * add user "player" (no admin rights)
+# * set background for user player
+# * configure power management:
+# * activate "Presentaion Mode"
+# * change power button to "shutdown"
+# * add emc-play.sh to autostart
diff --git a/elevate/ele-gwhetzner.yml b/elevate/ele-gwhetzner.yml
new file mode 100644
index 00000000..754fae65
--- /dev/null
+++ b/elevate/ele-gwhetzner.yml
@@ -0,0 +1,17 @@
+---
+- name: Basic Setup
+ hosts: ele-gwhetzner
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: ele-gwhetzner
+ roles:
+ - role: network/wireguard/base
+ - role: network/wireguard/p2p
+ - role: network/nftables/base
+ - role: network/wireguard/gateway
diff --git a/elevate/ele-helene.yml b/elevate/ele-helene.yml
new file mode 100644
index 00000000..dda7134f
--- /dev/null
+++ b/elevate/ele-helene.yml
@@ -0,0 +1,43 @@
+---
+- name: Basic Setup
+ hosts: ele-helene
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-helene
+ roles:
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: streaming/blackmagic/desktopvideo
+ - role: kubernetes/base
+ - role: kubernetes/standalone/base
+ - role: streaming/handbrake
+ - role: vm/host/base
+ - role: vm/host/network
+ - role: installer/debian/base
+ - role: apt-repo/backports
+ post_tasks:
+ - name: install kernel from backports
+ apt:
+ name:
+ - linux-image-amd64
+ default_release: bookworm-backports
+ state: latest
+
+ - name: install firmware and tools needed for GPU
+ apt:
+ name:
+ - firmware-misc-nonfree ## we should probably install this from backports as well,
+ - intel-media-va-driver-non-free ## alas there are currently no backports for this packages
+ - intel-gpu-tools
+ - vainfo
+ state: present
+
+ # Test VA-API with: vainfo --display drm --device /dev/dri/renderD129
diff --git a/elevate/ele-hpws-maxi.yml b/elevate/ele-hpws-maxi.yml
new file mode 100644
index 00000000..1661de96
--- /dev/null
+++ b/elevate/ele-hpws-maxi.yml
@@ -0,0 +1,18 @@
+---
+- name: Basic Setup
+ hosts: ele-hpws-maxi
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-hpws-maxi
+ roles:
+ - role: apt-repo/obs-studio
+ - role: apt-repo/spreadspace
+ - role: ws/base
+ - role: core/users
diff --git a/elevate/ele-hpws-mini1.yml b/elevate/ele-hpws-mini1.yml
new file mode 100644
index 00000000..2d2690b6
--- /dev/null
+++ b/elevate/ele-hpws-mini1.yml
@@ -0,0 +1,15 @@
+---
+- name: Basic Setup
+ hosts: ele-hpws-mini1
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-hpws-mini1
+ roles:
+ - role: streaming/browser-kiosk
diff --git a/elevate/ele-hpws-mini2.yml b/elevate/ele-hpws-mini2.yml
new file mode 100644
index 00000000..83341a64
--- /dev/null
+++ b/elevate/ele-hpws-mini2.yml
@@ -0,0 +1,31 @@
+---
+- name: Basic Setup
+ hosts: ele-hpws-mini2
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-hpws-mini2
+ roles:
+ - role: apt-repo/spreadspace
+ - role: ws/base
+ - role: core/users
+ post_tasks:
+ - name: install chromium start script
+ copy:
+ content: |
+ #!/bin/sh
+
+ SITE=$1
+ if [ -z "$SITE"]; then
+ SITE="https://remote.elev8.at/stream-ui/player.html#control={{ hostvars['ele-jitsi'].jitsi_meet_streamui.default_control_room }}&displayName={{ host_name }}"
+ fi
+ export DISPLAY=:0.0
+ exec chromium-browser "$SITE" --disable-infobars --use-fake-ui-for-media-stream --kiosk --temp-profile --start-maximized --enabled --enable-logging --autoplay-policy=no-user-gesture-required
+ dest: /usr/local/bin/jitsi-display.sh
+ mode: 0755
diff --git a/elevate/ele-hyperion.yml b/elevate/ele-hyperion.yml
new file mode 100644
index 00000000..3402de41
--- /dev/null
+++ b/elevate/ele-hyperion.yml
@@ -0,0 +1,67 @@
+---
+- name: Basic Setup
+ hosts: ele-hyperion
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-hyperion
+ roles:
+ - role: apt-repo/obs-studio
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: ws/base
+ - role: core/users
+ - role: streaming/blackmagic/desktopvideo
+ - role: streaming/blackmagic/mediaexpress
+ - role: docker/engine
+ post_tasks:
+ ## TODO: move to network/netplan when this is done
+ - name: install vlan interfaces
+ loop: "{{ network.vlans | dict2items }}"
+ loop_control:
+ label: "{{ item.key }} ({{ item.value | join(',') }})"
+ copy:
+ dest: "/etc/netplan/20-{{ item.key }}.yaml"
+ content: |
+ network:
+ vlans:
+ {% for vlan in item.value %}
+ {% set vlan_ifname = item.key + '.' + (vlan | string) %}
+ {% set vlan_iface = (network.interfaces | selectattr('name', 'eq', vlan_ifname)) %}
+ {{ vlan_ifname }}:
+ id: {{ vlan }}
+ link: {{ item.key }}
+ {% if vlan_iface %}
+ addresses:
+ - {{ (vlan_iface | first).address }}
+ {% endif %}
+ {% endfor %}
+
+ - name: install script to play videos via decklink card
+ copy:
+ dest: /usr/local/bin/play-video.sh
+ mode: 0755
+ content: |
+ #!/bin/bash
+
+ if [ -z "$1" ]; then
+ echo "Usage: $0 <vidoe-file>"
+ exit 1
+ fi
+ video_path_full=$(realpath "$1")
+ video_name=$(basename "$video_path_full")
+
+ decklink_device="DeckLink Duo (2)"
+
+ exec docker run --rm -it --device=/dev/blackmagic:/dev/blackmagic -v /usr/lib/libDeckLinkAPI.so:/usr/lib/libDeckLinkAPI.so \
+ -v /usr/lib/libDeckLinkAPI.so:/usr/lib/libDeckLinkAPI.so -v /usr/lib/blackmagic:/usr/lib/blackmagic \
+ -v "$video_path_full:/srv/$video_name" \
+ registry.gitlab.com/spreadspace/docker/ffmpeg:bookworm-decklink12.5-2024-02-18.33 \
+ /usr/bin/ffmpeg -i "/srv/$video_name" -ac 2 -pix_fmt uyvy422 -s 1920x1080 -r 25 -f decklink "$decklink_device"
diff --git a/elevate/ele-jitsi.yml b/elevate/ele-jitsi.yml
new file mode 100644
index 00000000..7fd463d8
--- /dev/null
+++ b/elevate/ele-jitsi.yml
@@ -0,0 +1,21 @@
+---
+- name: Basic Setup
+ hosts: ele-jitsi
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: ele-jitsi
+ roles:
+ - role: apt-repo/spreadspace
+ - role: kubernetes/base
+ - role: kubernetes/standalone/base
+ - role: x509/acmetool/base
+ - role: nginx/base
+ - role: apps/jitsi/meet
+ - role: apps/mumble
+ - role: monitoring/prometheus/exporter
diff --git a/elevate/ele-lt.yml b/elevate/ele-lt.yml
new file mode 100644
index 00000000..67eaafcd
--- /dev/null
+++ b/elevate/ele-lt.yml
@@ -0,0 +1,17 @@
+---
+- name: Basic Setup
+ hosts: ele-lt
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: ele-lt
+ roles:
+ - role: apt-repo/spreadspace
+ - role: x509/acmetool/base
+ - role: nginx/base
+ - role: elevate/liquidtruth
diff --git a/elevate/ele-media.yml b/elevate/ele-media.yml
new file mode 100644
index 00000000..d22f91dd
--- /dev/null
+++ b/elevate/ele-media.yml
@@ -0,0 +1,25 @@
+---
+- name: Basic Setup
+ hosts: ele-media
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-media
+ roles:
+ - role: core/users
+ - role: storage/zfs/base
+ - role: apt-repo/spreadspace
+ - role: kubernetes/base
+ - role: kubernetes/standalone/base
+ - role: network/wireguard/base
+ - role: network/wireguard/gateway
+ - role: x509/acmetool/base
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: elevate/media
diff --git a/elevate/ele-router.yml b/elevate/ele-router.yml
new file mode 100644
index 00000000..e160b57a
--- /dev/null
+++ b/elevate/ele-router.yml
@@ -0,0 +1,105 @@
+---
+- name: generate TLS CA for openvpn
+ hosts: ele-router
+ connection: local
+ gather_facts: no
+ tasks:
+ - name: generate CA key and certificate
+ run_once: yes
+ block:
+ - name: generate CA keys
+ community.crypto.openssl_privatekey_pipe:
+ type: "Ed25519"
+ content: "{{ vault_ovpn_ca_key | default(omit) }}"
+ return_current_key: yes
+ register: ovpn_ca_key_result
+ no_log: true
+
+ - name: create signing request for CA certificate
+ community.crypto.openssl_csr_pipe:
+ privatekey_content: "{{ ovpn_ca_key_result.privatekey }}"
+ CN: "CA for ele-router vpn"
+ useCommonNameForSAN: no
+ key_usage:
+ - cRLSign
+ - keyCertSign
+ key_usage_critical: yes
+ basic_constraints:
+ - 'CA:TRUE'
+ - 'pathlen:0'
+ basic_constraints_critical: yes
+ register: ovpn_ca_csr_result
+ changed_when: false
+
+ - name: create self-signed CA certificate
+ community.crypto.x509_certificate_pipe:
+ content: "{{ vault_ovpn_ca_cert | default(omit) }}"
+ csr_content: "{{ ovpn_ca_csr_result.csr }}"
+ privatekey_content: "{{ ovpn_ca_key_result.privatekey }}"
+ provider: selfsigned
+ selfsigned_digest: sha256
+ selfsigned_not_after: "+18250d" ## 50 years
+ selfsigned_create_subject_key_identifier: always_create
+ register: ovpn_ca_cert_result
+
+
+ - name: generate key
+ community.crypto.openssl_privatekey_pipe:
+ type: "Ed25519"
+ content: "{{ vault_ovpn_keys[inventory_hostname] | default(omit) }}"
+ return_current_key: yes
+ register: ovpn_key_result
+ no_log: true
+
+ - name: create signing request for certificate
+ community.crypto.openssl_csr_pipe:
+ privatekey_content: "{{ ovpn_key_result.privatekey }}"
+ CN: "{{ inventory_hostname }}"
+ key_usage:
+ - digitalSignature
+ - keyEncipherment
+ key_usage_critical: yes
+ extended_key_usage:
+ - "{{ (inventory_hostname == 'ele-router-hmtsaal') | ternary('serverAuth', 'clientAuth') }}"
+ extended_key_usage_critical: yes
+ basic_constraints:
+ - 'CA:FALSE'
+ basic_constraints_critical: yes
+ register: ovpn_csr_result
+ changed_when: false
+
+ - name: create certificate
+ community.crypto.x509_certificate_pipe:
+ content: "{{ vault_ovpn_certs[inventory_hostname] | default(omit) }}"
+ csr_content: "{{ ovpn_csr_result.csr }}"
+ privatekey_content: "{{ ovpn_key_result.privatekey }}"
+ provider: ownca
+ ownca_content: "{{ ovpn_ca_cert_result.certificate }}"
+ ownca_privatekey_content: "{{ ovpn_ca_key_result.privatekey }}"
+ ownca_digest: sha256
+ ownca_not_after: "+18250d" ## 50 years
+ register: ovpn_cert_result
+
+
+ - run_once: yes
+ set_fact:
+ vault_content: |
+ ---
+ vault_ovpn_ca_key: |
+ {{ ovpn_ca_key_result.privatekey | indent(2) }}
+ vault_ovpn_ca_cert: |
+ {{ ovpn_ca_cert_result.certificate | indent(2) }}
+ vault_ovpn_keys:
+ {% for host in play_hosts %}
+ {{ host }}: |
+ {{ hostvars[host].ovpn_key_result.privatekey | indent(4) }}
+ {% endfor %}
+ vault_ovpn_certs:
+ {% for host in play_hosts %}
+ {{ host }}: |
+ {{ hostvars[host].ovpn_cert_result.certificate | indent(4) }}
+ {% endfor %}
+
+ - pause:
+ prompt: "Please put this into a vault file: \n\n{{ vault_content }}"
+ seconds: 1
diff --git a/elevate/ele-stage-raspi.yml b/elevate/ele-stage-raspi.yml
new file mode 100644
index 00000000..b19389c4
--- /dev/null
+++ b/elevate/ele-stage-raspi.yml
@@ -0,0 +1,14 @@
+---
+- name: Basic Setup
+ hosts: ele-stage-raspi
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: ele-stage-raspi
+ roles:
+ - role: streaming/browser-kiosk
diff --git a/elevate/ele-tarvos.yml b/elevate/ele-tarvos.yml
new file mode 100644
index 00000000..d034d970
--- /dev/null
+++ b/elevate/ele-tarvos.yml
@@ -0,0 +1,15 @@
+---
+- name: Basic Setup
+ hosts: ele-tarvos
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-tarvos
+ roles:
+ - role: streaming/mpv-headless
diff --git a/elevate/ele-telesto.yml b/elevate/ele-telesto.yml
new file mode 100644
index 00000000..f8f7f55a
--- /dev/null
+++ b/elevate/ele-telesto.yml
@@ -0,0 +1,55 @@
+---
+- name: Basic Setup
+ hosts: ele-telesto
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-telesto
+ roles:
+ - role: core/users
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: streaming/blackmagic/desktopvideo
+ post_tasks:
+ ## this is needed for local icecast relay
+ # - name: install interface config for guest vlan
+ # copy:
+ # content: |
+ # auto {{ ansible_default_ipv4.interface }}.{{ network_zones.guest.vlan }}
+ # iface {{ ansible_default_ipv4.interface }}.{{ network_zones.guest.vlan }} inet static
+ # address {{ network_zones.guest.prefix | ansible.utils.ipaddr(network_zones.guest.offsets[inventory_hostname]) }}
+ # dest: "/etc/network/interfaces.d/{{ ansible_default_ipv4.interface }}.{{ network_zones.guest.vlan }}"
+
+ - name: install lm-sensors and i7z
+ apt:
+ name:
+ - lm-sensors
+ - s-tui
+
+ - name: load modules for lm-sensors
+ vars:
+ sensors_modules:
+ - nct6775
+ block:
+ - name: load special modules for lm-sensors
+ loop: "{{ sensors_modules }}"
+ modprobe:
+ name: "{{ item }}"
+ state: present
+
+ - name: make sure sensor modules are loaded on reboot
+ copy:
+ content: |
+ # Ansible managed
+
+ {% for module in sensors_modules %}
+ {{ module }}
+ {% endfor %}
+ dest: /etc/modules-load.d/sensors.conf
diff --git a/elevate/ele-thetys.yml b/elevate/ele-thetys.yml
new file mode 100644
index 00000000..a1a259d2
--- /dev/null
+++ b/elevate/ele-thetys.yml
@@ -0,0 +1,52 @@
+---
+- name: Basic Setup
+ hosts: ele-thetys
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-thetys
+ roles:
+ - role: storage/lvm/base
+ - role: core/users
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: streaming/blackmagic/desktopvideo
+ - role: kubernetes/base
+ - role: kubernetes/standalone/base
+ - role: streaming/streamer/rtmp
+ post_tasks:
+ - name: install lm-sensors and i7z
+ apt:
+ name:
+ - lm-sensors
+ - i7z
+ - s-tui
+
+ - name: load modules for lm-sensors
+ vars:
+ sensors_modules:
+ - coretemp
+ - it87
+ block:
+ - name: load special modules for lm-sensors
+ loop: "{{ sensors_modules }}"
+ modprobe:
+ name: "{{ item }}"
+ state: present
+
+ - name: make sure sensor modules are loaded on reboot
+ copy:
+ content: |
+ # Ansible managed
+
+ {% for module in sensors_modules %}
+ {{ module }}
+ {% endfor %}
+ dest: /etc/modules-load.d/sensors.conf
diff --git a/elevate/ele-tsdatacop.yml b/elevate/ele-tsdatacop.yml
new file mode 100644
index 00000000..949bbba2
--- /dev/null
+++ b/elevate/ele-tsdatacop.yml
@@ -0,0 +1,48 @@
+---
+- name: Basic Setup
+ hosts: ele-tsdatacop
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-tsdatacop
+ roles:
+ - role: apt-repo/obs-studio
+ - role: apt-repo/spreadspace
+ - role: ws/base
+ - role: core/users
+ - role: streaming/blackmagic/desktopvideo
+ - role: streaming/blackmagic/mediaexpress
+ post_tasks:
+ - name: install lm-sensors and i7z
+ apt:
+ name:
+ - lm-sensors
+ - i7z
+ - s-tui
+
+ - name: load modules for lm-sensors
+ vars:
+ sensors_modules:
+ - coretemp
+ block:
+ - name: load special modules for lm-sensors
+ loop: "{{ sensors_modules }}"
+ modprobe:
+ name: "{{ item }}"
+ state: present
+
+ - name: make sure sensor modules are loaded on reboot
+ copy:
+ content: |
+ # Ansible managed
+
+ {% for module in sensors_modules %}
+ {{ module }}
+ {% endfor %}
+ dest: /etc/modules-load.d/sensors.conf
diff --git a/elevate/ele-uhrturm.yml b/elevate/ele-uhrturm.yml
new file mode 100644
index 00000000..2b102803
--- /dev/null
+++ b/elevate/ele-uhrturm.yml
@@ -0,0 +1,16 @@
+---
+- name: Basic Setup
+ hosts: ele-uhrturm
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-uhrturm
+ roles:
+ - role: streaming/blackmagic/desktopvideo
+ - role: apt-repo/spreadspace
+ - role: docker/engine
diff --git a/elevate/ele-winvm.yml b/elevate/ele-winvm.yml
new file mode 100644
index 00000000..1af6ad58
--- /dev/null
+++ b/elevate/ele-winvm.yml
@@ -0,0 +1,18 @@
+---
+- name: Basic Setup
+ hosts: ele-winvm
+ gather_facts: no
+ pre_tasks:
+ - name: prepare disk
+ loop: "{{ install.disks.virtio | default({}) | combine(install.disks.scsi | default({})) | dict2items | selectattr('value.type', 'eq', 'lvm') | list }}"
+ loop_control:
+ label: "{{ item.value.vg }} / {{ item.value.lv }} ({{ item.value.size }})"
+ delegate_to: "{{ vm_host.name }}"
+ lvol:
+ vg: "{{ item.value.vg }}"
+ lv: "{{ item.value.lv }}"
+ size: "{{ item.value.size }}"
+ state: present
+
+ roles:
+ - role: vm/guest/create
diff --git a/elevate/ele-ymir.yml b/elevate/ele-ymir.yml
new file mode 100644
index 00000000..ac94cbee
--- /dev/null
+++ b/elevate/ele-ymir.yml
@@ -0,0 +1,51 @@
+---
+- name: Basic Setup
+ hosts: ele-ymir
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: core/cpu-microcode
+
+- name: Payload Setup
+ hosts: ele-ymir
+ roles:
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
+ - role: ws/base
+ - role: core/users
+ post_tasks:
+ ## TODO: move to network/netplan when this is done
+ - name: install vlan interfaces
+ loop: "{{ network.vlans | dict2items }}"
+ loop_control:
+ label: "{{ item.key }} ({{ item.value | join(',') }})"
+ copy:
+ dest: "/etc/netplan/20-{{ item.key }}.yaml"
+ content: |
+ network:
+ vlans:
+ {% for vlan in item.value %}
+ {% set vlan_ifname = item.key + '.' + (vlan | string) %}
+ {% set vlan_iface = (network.interfaces | selectattr('name', 'eq', vlan_ifname)) %}
+ {{ vlan_ifname }}:
+ id: {{ vlan }}
+ link: {{ item.key }}
+ {% if vlan_iface %}
+ addresses:
+ - {{ (vlan_iface | first).address }}
+ {% endif %}
+ {% endfor %}
+
+ - name: install script to play videos fullscreen
+ copy:
+ dest: /usr/local/bin/play-video.sh
+ mode: 0755
+ content: |
+ #!/bin/bash
+
+ exec mpv --vo=gpu --keep-open=yes --geometry=1920x1080+1920+0 --fs --osd-level=0 \
+ --term-status-msg='${?pause==yes:(Paused) }${time-remaining} ${time-pos} / ${duration} (${percent-pos}%) A-V: ${avsync}' "$@"
diff --git a/elevate/emc-cdn.yml b/elevate/emc-cdn.yml
new file mode 100644
index 00000000..94697fdf
--- /dev/null
+++ b/elevate/emc-cdn.yml
@@ -0,0 +1,17 @@
+---
+- name: Basic Setup
+ hosts: "{{ install_hostname }}"
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+
+- name: Payload Setup
+ hosts: "{{ install_hostname }}"
+ roles:
+ - role: storage/lvm/base
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+ - role: monitoring/prometheus/exporter
diff --git a/elevate/generic.yml b/elevate/generic.yml
new file mode 100644
index 00000000..bc8866c5
--- /dev/null
+++ b/elevate/generic.yml
@@ -0,0 +1,5 @@
+---
+- name: "Apply role {{ myrole }} to hosts: {{ myhosts }}"
+ hosts: "{{ myhosts }}"
+ roles:
+ - role: "{{ myrole }}"
diff --git a/elevate/group_vars/all.yml b/elevate/group_vars/all.yml
new file mode 100644
index 00000000..863c856e
--- /dev/null
+++ b/elevate/group_vars/all.yml
@@ -0,0 +1,12 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+66366436633334323132373938653730316533353366326661393566646664386463373564313766
+3932306136616238376636303731636565623137323963320a306461373761653931393939323135
+65666234373531623434336434383366646366616561343934626635633066313861636230623337
+3766356432623363380a333034323539383064666537303337626539396635393135646263633161
+33373938333766656534316661623734663861623035646235303133316431303937343036363832
+38393039383538373965376637313566653430323930643333373036363064613430333064626163
+61313735623933663261653337613836376165333634663034653237663662316633363262373332
+34633436626630303064663834613135303864383562393233363139383662313766656261336162
+63363034383766353635613261366561376237653661633862356435373864313736366434663531
+32323466353832383461393635323564373664623761386533633135666262373436353731623663
+373163633037356130626137636463326266
diff --git a/elevate/group_vars/ele-router.yml b/elevate/group_vars/ele-router.yml
new file mode 100644
index 00000000..2793b6f0
--- /dev/null
+++ b/elevate/group_vars/ele-router.yml
@@ -0,0 +1,167 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+62666535326238396536643861623335353861653832366661643937333335666332646138643564
+6161623938663063656537373736323137306461616230370a326237633131656563323633323537
+33346336666363646231353330616364303434346336643162303066653037613432396132653162
+3764626365653764390a303638363930393031663739383665633630643039653937353332366230
+65633734633339656435393465336133383061306265373033623232636430356537643638643166
+34333038663430323631343038383736636636393266383466393537386232386466613165393361
+64366562663561346134663662646532396431646135353865346437383463613039613333666431
+61613134623735383235393239396338326632343530316261646665626239333035336236616637
+38633032316566336563343039633330393063353437623938363931363835376136393365643635
+66333231626432646435326138396438366165633264643032636666323166656266653936323339
+38306238313461663136353133323230316538393834323339316233353066653838363331326337
+64373735326561353836306530313133393939393261396565623331373361393130363835636638
+36356565636230646263643165373264336662313234363138363934313764386634363366613966
+66316439383439626132636662333463383737366432643365386136316139633630656661343261
+34323264623432613761643534333836356133326634376338376465343236306661643437616137
+31626565346436623166373565306231623233303966333234333438303666653966363465376366
+36306337343963323564316230356263613261666333373834663063313230376163383839356536
+39353030336231366331633866636538383961626261396532643264616464616437393566353163
+37326237623039623264643066653239626635353732316634666635666631323164346565363066
+61353931626337393861643664623338666561613261363564323534396231343336316133646436
+64346236323963663335306432626137353336373330363063396331663430303530376166393532
+30613062343630646163336431616662303666626434323966663933663664363462636530653336
+31666338376135353637646161303633636436643366306532623438613332663537616564353539
+66393437663937366665323762366230623331646361343036653464396239633631663766323735
+62623766343339623361643438636663656339643835316164356564613537643231313032373331
+65613131343561313663336435363837313863333630633539383337356131646630373732613739
+39623761326537663935343964633064363638646531333265626262363139663161336436343033
+34656363356433663063643263316533393763333537666437303630643430393466653934316466
+66616334373965633664363635373064353861643634353935363164303138346364633163313635
+65666563313065316233383539363765616233623437346632626663393839653138643162303335
+39396162623136343937316431373931636531323161336461323237646366646466633837653136
+61393637393532636265373632636566643039323362656438333533636239343265373332636261
+36393737653962303136303163303466393630363966356639316632636261643331366231313264
+33653834356238386135326632306535663436363835623162396539393531643463623563633130
+33366130383634633162656165376535666638643239313833393965323033333732393465386435
+32353031323430636261383061666430343063336133396366313861306235356234333535613864
+63633338383531346262343639656263313135343331316337316561353130643163306134613165
+63333538616434396262313431383331623330346632616136383962613965366632653131313339
+61616366343139393936643432326530326530633162393431323263303339393033386165363132
+36313237326331616636643131386165633030363030616165353830393939636534646163656638
+30623164386637346231623931623166376136663438333661396238343066313863333738373430
+31613833653033616663343964306331613938646462343362333130653964616563653536373039
+63376135346163653337356266396334666162613565313762363031316237656662353064653462
+32363132373838613265366262363734393961383365313766383466316431613462663065393133
+61306465663938346233656331363432623030666663366262663032643335336564633861373632
+65633739343531316237373365613861363762343135323134663731613835346664306333626664
+61353862646632373634356331383366306136343539633138313230313066396534653062616564
+34356336643130666333343233316364663634363437656432356631666264336531313331303937
+63666230353465366635666635343038666533643961336563313332623530386462303063323638
+34356263366633313035623734616635393737653331316162633538306235303463623739366162
+32366233653330303661393030653337303037376133396235353830316630316363316536393337
+65343830663031333764373061313832643133363662303230626438353733643737633263363130
+32663632386565346538393064666339626262323536373333643236626562336164326132306563
+62393338356530323162666431396333303931306462376432623366616235383338613935353732
+61653933353838666665663365393438306230366662303237626664363732366161626430323738
+36393463363535646462303534373435363865326466663838376131323131393361373430393231
+37393463373965346466376363326139616137373564356464343666653964303833326566373235
+62646432366231323764336530393439306665363163306662363031636632343762313232653931
+62326565633163393239323963396563643066383239373866343435643065653839323361633966
+30363138613934616366653230646264613031383830346161633537373566323263316532343061
+36616638356662353364306139656364366231653234653536383938636532393630633639313930
+36663434633832396637626137643633653861366135383430393963336232633165613064636435
+65336138616666303866323236623938633761373234626563623832356632356462643439396263
+35313234396466316436633937633764653538623761356336363536666634626361666436363330
+63376232313235333939393238383035383463376264343839613032663966653766633630363365
+66613632336631626535626539366566373339653334656630343531636262633534353033343939
+66666163336663663830313932333361346566633366363232373138373835373835356235316138
+65643932646535383039383730623236323063366463303337663232383637326433613131636663
+65386165306666396563633736333133313039383330363031326132363637616661613234633935
+62323066396363373138346364643331353534386265303661383065373366373665303832386236
+35623930353738396362323539383362653233316632353062663537396237383930663230636665
+37363634356437643437336130353763393133646637353830343739386639373038626263333961
+61393234356563303039656231303039646636613561323033383662623064313166666232383236
+37303034306538326363653133643034336561626331313938636230666236616134316537646134
+64623761343061636435383837383166373330643236316164646666363537343031353539313930
+31666163353739326432343736343662373430333939376237343465353665336533373735306663
+64646665623535393339353636316466303561646534633532653866663230323433303232303965
+62366238353265376639666134653162303562316262303765343132353930363835666539343162
+39396233326639663638346136623761386166313537343334306261663433346331663232633962
+65346364663465383561346238376434336362626135303137316266353638356235353136333431
+35353265313234323030653461636535386337343732633634643134353134353462666634346239
+65376264326337313664333330326639326534383733373433343037623065376537663062373638
+39336561656639396638666636613238636261373331353863383336316139376539313237663263
+34613433383839306231623530666363333139363431393339333730366335343962356337313636
+65666335643166316265653238366139303336663934363963353162323539366636316337643661
+30303035353532363437653061356363396531613838353031623061633538303438643932396431
+39393938353435353630343235346165373731346530363932343161626635343036366366393639
+30346363353363663836326339343435306636643834396231653433303239623833363962373661
+34373661353938303033303139613262333864633130663631626133633130333038313063393631
+61643338393832633632396163323935666237353730643162623238616464336338303337616339
+31613932636361353933303339653537613832316333666362626563373463646633613238333364
+35653033623239326634653939663933373466373935303561333838326665343932363133396461
+33383839313435646661303965366234353232656438363263393738633566353435643033376236
+37663433646136376564306266363664343765666362653866343032376665323462393430303331
+65623631633233633730366638393438633530323663666239316463623963386666623830383633
+30623831613664663231636262306663353661383764636666666233386461343832613565636432
+38666165646631306630623937396438373435636165653337306538366439316335366464663238
+37663362633331613534666365626338653032393031656635626539623639346335636533333630
+38326163313763653434396231333035343932376137666336393165646562363966633365666661
+61393639643934653935633765313139393761663038396334373030363566643231353137666162
+65303036343030323164373538623933326339633737643337383837363762393330313136333835
+36663764376131383761343162346562326233613933346234386462376337343538636261313431
+34353235363665333132313563613166326364643936613330653030376663366330336331336239
+33313561363032386532346463373236653339396234626534643834636535633235346265656336
+34613463653166663233393231383231343364613134366233663235306337306434333038626433
+34343161646334636430383861656532613238646136303165333739393437633166623833393761
+33613666656462316534613138323362333266663561376532636662373630303463393535366631
+63376337373135393061626335633831333239633232386130393233666264663662613331353162
+37346535653439613737333265623139623036333165363166343564616162373836396234636336
+65643238353233353532326665633832386439343232393265366563343931353862643166646337
+30326436646466373036373666323464633464343762306264356637336335666230306632343336
+61323164323566643037363762323332356465623963663633366662353435356165373531373965
+36346437383131623364623561303535383930616366616131326238626163346361633434326338
+64623139653232323762613737653864363231383635633161663163346238346564353833653464
+37393634316335613239306430376464353361333364323263306232666233343031333835333262
+39633862623862643738366563393662363330363663666363393830373635346238393136313434
+63613665313438636665396664363934303964643230386562643339396662623035646632633962
+35333430623930383036643134303533666164326261616464323637663831633132306337316362
+61303539316332323230353863306534656535666263646631643432626235336630333064633462
+37383561663863653735383631613961383637353832336364666636386431383765356239383734
+34623030346565636533366332333133363662306465633939343132353233303138373639616430
+32633531643537663334346665633038626538393138646639303064376430623165386239336532
+33343965313530643331363539383738366265346165396138313366373234323132663635346631
+64663866396531333833343863393138643635613564366339333731386437303536383264613230
+30633033643966663636373732313864316638363363613933353732653061633366306364646436
+37356565303137333039376630336161653364353738313236303532383530633037333231633835
+33336535616331636565393864333737383966613238316136393665376637353436656139323436
+63643461663331656461303838303238623035643435343636343937653964616362623038396337
+65383465343566396366643539336433633664663136373138373562633238653833396266376530
+62303733633061303231396330343365323866303566616464626331303565333435363537303762
+62313732313365373038363736666462623537643332333035353362653330356266393839323432
+35323934663332333534363135643162306666386437323666313464363234656339393065376536
+35373831326439353232613865633165666435623533303265303632336637653536616536366165
+61653939656639306636636662383034366166333262383836326637356437656134633330326138
+39653961313461636163333138363966326363366261626565323434346539336434313435316336
+30663733663061363064653539656435656338323734333465633264653736373561326436343539
+33323832313866363663343665633031643762323265303133663061336331626337383061356432
+63376561323634643930333063616636393433636534343239356338396333643363303232396538
+33373761656638636134646234396563333431626630393564383339303636653537353265383432
+62666231383363633937383865333065623763323966373831313836633138333165373033323537
+39313231653335373661396462633234343933346235396633323666336666353238613932356431
+65656532353063363963306136373632386434656530303134363862663235323432663839343237
+65666533656235303734363765333232616263316565633264386565373937393861646338613834
+33356366616434386535643332633534663939383935333939393834663365323266386133633639
+39623562346333366262643463653231313539626363383165343964333733613064326464653137
+38313164316562616532363263393639323334393263346565666536643664343234356534386333
+63656664653537616163343931323766643839316363323736306237323263376536616232303934
+61343434303338383230616232663836633333373436396432623562643439336639623364323737
+64363536613336343837653939663933333737633836383635346631356537656535313632386162
+36306335323865363736386635643161643736333933343435613566376137393366346533363862
+32353735303261363634316561626661353931643239376634366635303264393466343366396237
+61613436653333353866396365656233643663636439623538303139663865383835386634396532
+62363238613465373235626138366464663531373039656431383261336337363936373931613339
+30623935393831656361646435383533666431393966313337313735656636656232373464326432
+30343935373864633064363935363465326438313863643237313865666636323932323932393363
+63663739373433643661323965303662396363663134636637613134303861386363656164366633
+65393766316265376664303435656437343730363536663764346365373961643737373934633166
+39373263393139646465386564313132313265346135653439373661386264353261663634326434
+34316466613464303938376165313566626633313365393966326437356134616337666533303661
+35666632623965333663386432363433643861313636623861623731623763303136376465356233
+32393932373363336664633132396634646664326131636462636264386663343834313139343462
+36306163633036663966353831346535313036393334393964363238323466623932633739633262
+62303233373966636531613439343065626531366464613566373130313534313831363034383462
+38646165366233326464656330383932616362633564633739306630393466646433663435393463
+39653539313961333265383534396533366565633464343130363431656563343664363163663662
+3639333531643235396232316262623239363864623032613232
diff --git a/elevate/group_vars/elevate-festival.yml b/elevate/group_vars/elevate-festival.yml
new file mode 100644
index 00000000..ea2cd4aa
--- /dev/null
+++ b/elevate/group_vars/elevate-festival.yml
@@ -0,0 +1,15 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+39626666613066636362366536663934343261366635366638666365393065316437383064643139
+3465316361303730323666336161363866656233333936340a383139373764393430306164356336
+36653761636139613638376638623964313561303365346464353066616631336265633262313765
+6438396634393332640a343731663030643563303335316236333333633564626436313137623365
+31373739353961393138393237306237646636666531393433363965373734643030613063343532
+39343831306337373462663331333132393335336361363432663462366362396631356238643330
+38353933626165616436613033663730326434313435613534353162336537363436306265646131
+65393961313736326330656366393637343435373862326365313934613532396431336136653933
+39616166346438633366373132313439643135393631376138336361366165386165386336363638
+35646436613633353464653337353761323362326437343036373365663263343364313737656663
+64646461343833303835323930333438323164656661666139386536626166396234323538393961
+62373361663533633535326665653434353939366530386334386463346463373062366439666462
+30333262356436623133313438336435343534623435633533643461353563613063616332666230
+6134393036366565396165323930353030386665643266663466
diff --git a/elevate/group_vars/elevate-mediachannel.yml b/elevate/group_vars/elevate-mediachannel.yml
new file mode 100644
index 00000000..4fb9a2eb
--- /dev/null
+++ b/elevate/group_vars/elevate-mediachannel.yml
@@ -0,0 +1,10 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+65333264376332373164623736623330633833626435636637343930633261313030396335306664
+3431373866316237663335313438323836613266393939350a303239373562323664623838333339
+66336338326639363137353136336364636264396332396165663763613666353532363938353332
+6638343232643763630a623232376264306530626563303866393966643335636165616661356138
+35373639323133663837616639383862633631633931636430663331393462376234643831376134
+31396439363134356339313734363633643537376566383966323466393934646665313435313265
+63363863316264343563346535393432626661333365346364613032313165343161353465393535
+35653537303664343863346239373636613734373862343132663936623065626536663737373862
+6164
diff --git a/elevate/group_vars/elevate.yml b/elevate/group_vars/elevate.yml
new file mode 100644
index 00000000..59f65c1f
--- /dev/null
+++ b/elevate/group_vars/elevate.yml
@@ -0,0 +1,9 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+61656330653064313535396131363439636234333566356439366133383737336366313264643861
+3365633735666464393532303463646634386231656634640a326530316234383832343062336363
+61393565616463306236353736653466353839306232646663623063663539393339633337383164
+3764386139333964310a303865373666393261366632386533656164633766626136303530316534
+65386335623433626234363430653933333534613565326364616163303666373866366338303633
+39373530326661613734346230636235653334666561383036353130303539326638336137306166
+32613935313435333864626161643139643631623230383534356461633630396638653931643131
+35656262303632313965
diff --git a/elevate/group_vars/k8s-emc.yml b/elevate/group_vars/k8s-emc.yml
new file mode 100644
index 00000000..53ac56c6
--- /dev/null
+++ b/elevate/group_vars/k8s-emc.yml
@@ -0,0 +1,10 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+61333930636361366561623133393666393566646538316464613834386236373463623762336335
+6237333534653261376537366463633536636438616230610a663461346436326330303862313039
+36343136376230306438633239303263326263383436333533373731656236396466363433636565
+3962316137343233620a363461633638316561303631343331303764336465356435313662393538
+30653536653934343534373835356637626430306437643730303562656437306434623263346261
+33313836336561373063383661666334383961653164323066653262613131393266393264383235
+30353462326630656363653461326433363739353837316164363733333463396165313330663065
+30303831376161376233323335616431633738653735366139646439653563653331653130313537
+62303166383264636162636266653738333762396564633630653032623531653539
diff --git a/elevate/host_vars/ele-calypso.yml b/elevate/host_vars/ele-calypso.yml
new file mode 100644
index 00000000..4daaaae9
--- /dev/null
+++ b/elevate/host_vars/ele-calypso.yml
@@ -0,0 +1,22 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+37393363613766653939336635386264386434393136373236366330333131363764343633633639
+6436353937376339383233313335396163663134373635650a653365666539313130613464383666
+62623964383261303365366161373938366131366465366433636364356639333766313162303766
+6164373537316331300a666137633636353332363838303236306465313462346366633934386564
+35643031646134613239623931343062643431366139643462323032316334376234633834653964
+32383235636264653764323364313164313435366564393038393963383963373839353463616431
+38393835333661386461623836333135353066356464636638303433386236616538393465326330
+39336330313039353664663961363965383231303863613530383465636133633637643135373838
+39326132623961376133613034663330366237396361373239336238363461353232363333303330
+32616238303262326665353162383263353764653732663366313437353161343333653962663863
+37313630613232333637376234656533313831666331326263363130343236626633663838643535
+33343864323436353236373464633866656532313936613736303733616639393831353137636238
+32363630396361323139613630666238623434373636646265353832313639306333326231666633
+64616634656665366663666435313464333432346135346563383131333061353635316362326434
+65623132316538616137323234656536666663303839383066666136633464313131373737316131
+36333564636630633130353465346461373761303764323738663638653761373263313438333335
+66333066393934633939313834303564623235353436396231393739613639633366343538383364
+66353835633561356266366233313439363433666565636537313139636536356333316463356363
+30346565646638346337613461376631663965343439303139643035303562393131613166313663
+63376233376638376539333533643639393062653639343262313838643430373339303635393437
+6537
diff --git a/elevate/host_vars/ele-coturn.yml b/elevate/host_vars/ele-coturn.yml
new file mode 100644
index 00000000..3a21a255
--- /dev/null
+++ b/elevate/host_vars/ele-coturn.yml
@@ -0,0 +1,18 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+33643766613664653232346436333636376564396235303135336164383263616335656464363862
+6165653236323338323133316434636332396537666662320a333461656262333233313133626163
+64366339353039373061393532333036636439383637653535343036303033666261386636653638
+6162613361396234390a353966623732663633326663333531666131616336383463356234626363
+34633830323862343266656165306264303465343930653161383336626230653335326261646637
+64636637386666396232326435626630613865343864663361623637396264363433323065653864
+34343130376436396536623162623633623837396332363566323136336435306230306132333862
+33303936653530633738613662626163336132393834393438393662653363626137623466616430
+39656262633933346239663562336635653633353162316430313137366562323366613332323966
+37646635653931323335306537396538333431616538653435663335343064353966323666386636
+65303730623863623262626238363361333864333839393331663465643837643937653234626234
+65356430663832613338343737653335363531393133646236313730393165393132383739333962
+62333538363139663764316238636466343538666462386266616133346563373763313663616364
+35663536343064323234396662353035386239653532623739643237366139303737633436656438
+38323233646565323839326539343232313234383862313835363730616335303766656437343761
+64366338343661313530623664333935303762323363613731666330623238393966656431323538
+6635
diff --git a/elevate/host_vars/ele-gwhetzner.yml b/elevate/host_vars/ele-gwhetzner.yml
new file mode 100644
index 00000000..2ce26e90
--- /dev/null
+++ b/elevate/host_vars/ele-gwhetzner.yml
@@ -0,0 +1,17 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+36343835316464333566383362316662323461393339643462653138303565333663373938663836
+3764643539303864386532636539343461613063383865380a356237663837663931326266376131
+62306631366466393736323764396539653661666363326335626439326430613537656363333163
+6332336333346664310a613066373039336531346131656563353265646562366261393532333664
+31323731663838633731653961333934326636313866336235613838643732313632616339643837
+34386533363835333632633634336262633665353663393662303165336639373136616161616266
+61656566656136613238383963376239666264373230313337303131353861633461323732373130
+38623537333163393662616537356435383462363265613736313161393466336566646431373531
+32643430323730326536306464396261393564323366643065663865633666303862326236393338
+37663864646434353634373762313236613130653733643763646265366232376639653164303935
+37646139316166633136626265316130326363323436623035633731656665373965366362613965
+61353038636462393666666438306239656563316537373262633362303937346336333830313137
+64613639323631326662386638343734356362366466623930633837353666663933353666333538
+62653038316330616637633365316536643666666537303764306134326561343036303631383830
+36666539386239633361323337303061626261313039323334636237336331633463383037626462
+30396361316663636531
diff --git a/elevate/host_vars/ele-jitsi.yml b/elevate/host_vars/ele-jitsi.yml
new file mode 100644
index 00000000..2ca197a5
--- /dev/null
+++ b/elevate/host_vars/ele-jitsi.yml
@@ -0,0 +1,26 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+38373939316137333037336333356362653866633962323666643232323230333631666463633038
+3434653263316531363431363164623637663862616439630a343632306266646339363864306333
+33643433346637346366323036306537346633386461313861636662303138363265636630643337
+3831663830316234350a346432613830346533393262383139393038626466326231383833373261
+64303738336630623234303363373162393933636634646634646566353466306438376639343834
+31346337646435623838326231393664306232326637323634363031303139383433333263323433
+61626134636561653435663831326261323165353062366564616131383230323832333832366331
+34623237356433306661396566366235396536323436626364613666313037306662376463393836
+64326236616232356234326638373161366138316664303035623732313138643438653335326533
+33656432616234373234663637333463636635323464326364343337623930393661623262333564
+61333439363361666633373033623062333836373366353764366264646662343738363431343030
+61336661353066633033636263656231396461323637356531303331363963633166643137616531
+38613231613335613739386361666337366161343562613539653938643961356537613938356462
+32623162393530623261323163613930653862636332383138303664613434663039663633353163
+30356136666536623764373430343235373334343732396338313261303838663934616533313437
+35306538373435373637343764353539323538373538343766386236613630363736303763653633
+61653834656135666536646438323834653930623363306466313539633137613138333537663163
+30396332313962386136633961386665366232376336343833666562643139613538316166373961
+64396434353730323764643463616137376161323565626332356665333332303439333935333238
+36643639373739343237643633666232373639313336643264663239633462306462613736356136
+35303464613431396636666631383731383966633138373166643266643730363131616332313737
+63326166613030356538373064393039626230323961643536656166373634346331376237353237
+62623866306234356662336263666531656562363134343333376561306365386138653765653432
+65613832623836656531623835383738656662616138653730323764343437393634383666623966
+3563
diff --git a/elevate/host_vars/ele-lt.yml b/elevate/host_vars/ele-lt.yml
new file mode 100644
index 00000000..ee4341c2
--- /dev/null
+++ b/elevate/host_vars/ele-lt.yml
@@ -0,0 +1,20 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+33623330323462663137623863303262373039363563663434373736646462616237616161353330
+6438336330633039633134643230633036383631313535330a663439643563616631343337663336
+33663165323636386435306438393534633339626232306464663238353634343238363965363765
+3338363339326130370a393964393934623036623239323636643562366136323963363737646331
+39313866633339376539376333363365383364616635353332356137643330643533346134363930
+30653331623135386335316339343366323735666137386231383034313465616465343831643765
+35316235653737333132336564346634323739643966626461323939393638313361646365396231
+34363265366133306637363233356463333637353363626537653561366262353362386236306436
+37373366386535346165343131333532613639383563343135356432393264346162326463343165
+64353135653262356635633739666131323837656235313331373631376431393737316263306237
+31386161346531376432643830303865393565316432333534663732353132303034653162346632
+30383435366136323161333237376461333161386631646165626135313632386331353936393439
+38663939326462633338323732623237656161303063363365383461366161616565653663666465
+63646230343661343764653566326165393535376137326231633865303934646364303633633363
+33333937663433636539636531316432393430303530306130333331663232346533663262323733
+36363963636630613035303937376533636137646362333835613838666536336436306630626263
+62303331643962303738333461373531343937393236326130383766656131343365316131363462
+32613161353861623033666431303039386530613064643763353037333466383135616639653235
+303037343830366264653835313163313331
diff --git a/elevate/host_vars/ele-media.yml b/elevate/host_vars/ele-media.yml
new file mode 100644
index 00000000..57da7067
--- /dev/null
+++ b/elevate/host_vars/ele-media.yml
@@ -0,0 +1,18 @@
+$ANSIBLE_VAULT;1.2;AES256;elevate
+32383030626365353437666338353362653263373234613333386537333465366536396533343739
+6165663837376238636161386162373666313135376264370a346166363462323831346237393266
+64666238656632323331356230363331316534626437326538636433336239626164616665383864
+3064333035656334300a306535623632666566636631666339396435346435663064613463306366
+66326436333364303434623132643063666137366461613634353335666164376231303462633233
+65653532613761636537646439623338663338373364323531383936373765356436306265366465
+32636465323237623562356262356238363263383837386565393565366433376236366363623838
+30356336393139333561633863386431343731306331313137363731366335373435643866316332
+36323666376135313538663334663338313364313638666165333439666365373264656465363461
+38303262323237363733313633636131353661643433393530656232396363373664323639646635
+32303836386532353335363835376439363532333830343237346437346639636530333831356637
+35663335376435653839346166336465396462323231396235623762373032363064383662613764
+38653230623061333533373033373137393132366362343438346163393062663137653532633338
+65643430386466616366333164396637633764613938313232613631616535653366346135663865
+35643931666363616566356435303665386663656562373862646538326265373430656630343363
+37636432343561323737383538386563316234323438303563613537616565336239663439363936
+3231
diff --git a/elevate/image-generate.yml b/elevate/image-generate.yml
new file mode 100644
index 00000000..1b11f1eb
--- /dev/null
+++ b/elevate/image-generate.yml
@@ -0,0 +1,20 @@
+---
+- name: generate os image
+ hosts: "{{ install_hostnames }}"
+ connection: local
+ gather_facts: no
+ roles:
+ - role: "installer/{{ install_distro }}/image"
+ post_tasks:
+ - pause:
+ seconds: 0
+ prompt: |
+ The resulting images can be found here:
+
+ {% for host in play_hosts %}
+ {{ host }}:
+ {% for image in hostvars[host].output_images %}
+ - {{ image }}
+ {% endfor %}
+
+ {% endfor %}
diff --git a/elevate/info-beamer.yml b/elevate/info-beamer.yml
new file mode 100644
index 00000000..6160e9f2
--- /dev/null
+++ b/elevate/info-beamer.yml
@@ -0,0 +1,14 @@
+---
+- name: configure info-beamer
+ hosts: "{{ infobeamer_hostname }}"
+ connection: local
+ gather_facts: no
+
+ vars_prompt:
+ - name: info_beamer_base_path
+ prompt: Where is the SD-Card mounted to?
+ default: ""
+ private: no
+
+ roles:
+ - role: info-beamer/config
diff --git a/elevate/iso-generate.yml b/elevate/iso-generate.yml
new file mode 100644
index 00000000..584b8914
--- /dev/null
+++ b/elevate/iso-generate.yml
@@ -0,0 +1,10 @@
+---
+- name: cook variables for host
+ hosts: "{{ install_hostnames }}"
+ gather_facts: no
+ tasks:
+ - set_fact:
+ install: "{{ install | default({}) }}"
+ network: "{{ network | default({}) }}"
+
+- import_playbook: ../common/iso-generate.yml
diff --git a/elevate/iso-install.yml b/elevate/iso-install.yml
new file mode 100644
index 00000000..5defe6d3
--- /dev/null
+++ b/elevate/iso-install.yml
@@ -0,0 +1,10 @@
+---
+- name: cook variables for host
+ hosts: "{{ install_hostname }}"
+ gather_facts: no
+ tasks:
+ - set_fact:
+ install: "{{ install | default({}) }}"
+ network: "{{ network | default({}) }}"
+
+- import_playbook: ../common/iso-install.yml
diff --git a/elevate/k8s-emc.yml b/elevate/k8s-emc.yml
new file mode 100644
index 00000000..206c0211
--- /dev/null
+++ b/elevate/k8s-emc.yml
@@ -0,0 +1,52 @@
+---
+- name: Basic Node Setup
+ hosts: k8s-emc
+ roles:
+ - role: apt-repo/base
+ - role: core/base
+ - role: core/sshd/base
+ - role: core/zsh
+ - role: core/ntp
+ - role: apt-repo/spreadspace
+ - role: nginx/base
+# - role: monitoring/prometheus/exporter
+
+- name: TLS Certificate and storage volumes for Edge Nodes
+ hosts: elevate-mediachannel-edge
+ roles:
+ - role: x509/acmetool/base
+ - role: x509/acmetool/cert
+ acmetool_cert_hostnames:
+ - "{{ host_name }}.{{ host_domain }}"
+ - role: storage/lvm/base
+
+- import_playbook: ../common/kubernetes-cluster-layout.yml
+ vars:
+ kubernetes_cluster_layout:
+ nodes_group: k8s-emc
+ controlplane_nodes:
+ - ele-emc-ctrl
+
+### hack hack hack...
+- name: cook kubernetes secrets
+ hosts: _kubernetes_nodes_
+ gather_facts: no
+ tasks:
+ - set_fact:
+ kubernetes_secrets: "{{ kubernetes_secrets }}"
+ - when: external_ip is defined
+ set_fact:
+ external_ip: "{{ external_ip }}"
+
+- import_playbook: ../common/kubernetes-cluster.yml
+- import_playbook: ../common/kubernetes-cluster-cleanup.yml
+
+- name: install addons
+ hosts: _kubernetes_nodes_
+ roles:
+ - role: kubernetes/addons/metrics-server
+ #- role: kubernetes/addons/openebs-zfs
+ - role: kubernetes/addons/cert-manager
+ - role: kubernetes/addons/ingress-nginx
+ #- role: kubernetes/addons/node-feature-discovery
+ #- role: kubernetes/addons/intel-gpu-device-plugin
diff --git a/elevate/openwrt-deploy.yml b/elevate/openwrt-deploy.yml
new file mode 100644
index 00000000..e7cc49fa
--- /dev/null
+++ b/elevate/openwrt-deploy.yml
@@ -0,0 +1,9 @@
+---
+- name: generate os image
+ hosts: "{{ install_hostname }}"
+ connection: local
+ gather_facts: no
+ roles:
+ - role: installer/openwrt/image
+
+- import_playbook: ../common/openwrt-deploy.yml
diff --git a/elevate/usb-generate.yml b/elevate/usb-generate.yml
new file mode 100644
index 00000000..7f633f1e
--- /dev/null
+++ b/elevate/usb-generate.yml
@@ -0,0 +1,10 @@
+---
+- name: cook variables for host
+ hosts: "{{ install_hostnames }}"
+ gather_facts: no
+ tasks:
+ - set_fact:
+ install: "{{ install | default({}) }}"
+ network: "{{ network | default({}) }}"
+
+- import_playbook: ../common/usb-generate.yml
diff --git a/elevate/usb-install.yml b/elevate/usb-install.yml
new file mode 100644
index 00000000..0f62bc85
--- /dev/null
+++ b/elevate/usb-install.yml
@@ -0,0 +1,10 @@
+---
+- name: cook variables for host
+ hosts: "{{ install_hostname }}"
+ gather_facts: no
+ tasks:
+ - set_fact:
+ install: "{{ install | default({}) }}"
+ network: "{{ network | default({}) }}"
+
+- import_playbook: ../common/usb-install.yml
diff --git a/elevate/vm-deploy.yml b/elevate/vm-deploy.yml
new file mode 100644
index 00000000..8530b14a
--- /dev/null
+++ b/elevate/vm-deploy.yml
@@ -0,0 +1,18 @@
+---
+- name: generate os image
+ hosts: "{{ install_hostname }}"
+ connection: local
+ gather_facts: no
+ roles:
+ - role: "installer/{{ install_distro }}/image"
+
+- name: cook variables for host
+ hosts: "{{ install_hostname }}"
+ gather_facts: no
+ tasks:
+ - set_fact:
+ install: "{{ install | default({}) }}"
+ network: "{{ network | default({}) }}"
+ vm_host: "{{ vm_host | default({}) }}"
+
+- import_playbook: ../common/vm-deploy.yml
diff --git a/elevate/vm-install.yml b/elevate/vm-install.yml
new file mode 100644
index 00000000..da6a29a5
--- /dev/null
+++ b/elevate/vm-install.yml
@@ -0,0 +1,11 @@
+---
+- name: cook variables for host
+ hosts: "{{ install_hostname }}"
+ gather_facts: no
+ tasks:
+ - set_fact:
+ install: "{{ install | default({}) }}"
+ network: "{{ network | default({}) }}"
+ vm_host: "{{ vm_host | default({}) }}"
+
+- import_playbook: ../common/vm-install.yml