summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2024-05-17 02:33:12 +0200
committerChristian Pointner <equinox@spreadspace.org>2024-05-17 02:33:12 +0200
commitb33323178af73c0e50b39cbbd5128bc5fbcbad35 (patch)
tree8194f22074bab5aa6cbc13285991dc7b23e300df
parentbase install for gstreamer decklink tests (diff)
add cm4 based sensor nodes (base install)
-rw-r--r--inventory/group_vars/chaos-at-home/network.yml2
-rw-r--r--inventory/host_vars/ch-cm4-sensors0.yml36
-rw-r--r--inventory/host_vars/ch-cm4-sensors1.yml36
-rw-r--r--inventory/host_vars/ch-cm4-test.yml50
-rw-r--r--inventory/hosts.ini4
-rw-r--r--roles/installer/raspios/image/templates/firstrun.sh.j214
6 files changed, 121 insertions, 21 deletions
diff --git a/inventory/group_vars/chaos-at-home/network.yml b/inventory/group_vars/chaos-at-home/network.yml
index 2db3ab37..1108ebb1 100644
--- a/inventory/group_vars/chaos-at-home/network.yml
+++ b/inventory/group_vars/chaos-at-home/network.yml
@@ -96,6 +96,8 @@ network_zones:
ch-gw-c3voc: 73
__svc_http__: 80
__svc_imap__: 143
+ ch-cm4-sensors0: 200
+ ch-cm4-sensors1: 201
ch-mon: 230
ch-greenbone: 231
ch-router-obsd: 253
diff --git a/inventory/host_vars/ch-cm4-sensors0.yml b/inventory/host_vars/ch-cm4-sensors0.yml
new file mode 100644
index 00000000..f59eceb6
--- /dev/null
+++ b/inventory/host_vars/ch-cm4-sensors0.yml
@@ -0,0 +1,36 @@
+---
+raspios_variant: lite
+raspios_arch: arm64
+
+network:
+ nameservers: "{{ network_zones.svc.dns }}"
+ domain: "{{ host_domain }}"
+ primary: &_network_primary_
+ name: eth0
+ address: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets[inventory_hostname]) }}"
+ gateway: "{{ network_zones.svc.gateway }}"
+ static_routes:
+ - destination: "{{ network_zones.lan.prefix }}"
+ gateway: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets['ch-gw-lan']) | ansible.utils.ipaddr('address') }}"
+ interfaces:
+ - *_network_primary_
+
+raspios_boot_config:
+ - regexp: '^#?otg_mode=1'
+ line: '#otg_mode=1'
+ - regexp: '^#?dtparam=i2c_vc'
+ line: 'dtparam=i2c_vc=on'
+ - regexp: '^#?dtoverlay=i2c-rtc'
+ line: 'dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi'
+ - regexp: '^#?dtoverlay=disable-bt'
+ line: 'dtoverlay=disable-bt'
+ - regexp: '^#?dtoverlay=disable-wifi'
+ line: 'dtoverlay=disable-wifi'
+ - regexp: '^#?dtoverlay=dwc2'
+ line: 'dtoverlay=dwc2,dr_mode=host'
+ - regexp: '^#?dtoverlay=audremap'
+ line: 'dtoverlay=audremap,pins_18_19'
+ - regexp: '^#?dtoverlay=gpio-shutdown'
+ line: 'dtoverlay=gpio-shutdown,gpio_pin=4'
+
+base_entropy_generator: rngd
diff --git a/inventory/host_vars/ch-cm4-sensors1.yml b/inventory/host_vars/ch-cm4-sensors1.yml
new file mode 100644
index 00000000..f59eceb6
--- /dev/null
+++ b/inventory/host_vars/ch-cm4-sensors1.yml
@@ -0,0 +1,36 @@
+---
+raspios_variant: lite
+raspios_arch: arm64
+
+network:
+ nameservers: "{{ network_zones.svc.dns }}"
+ domain: "{{ host_domain }}"
+ primary: &_network_primary_
+ name: eth0
+ address: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets[inventory_hostname]) }}"
+ gateway: "{{ network_zones.svc.gateway }}"
+ static_routes:
+ - destination: "{{ network_zones.lan.prefix }}"
+ gateway: "{{ network_zones.svc.prefix | ansible.utils.ipaddr(network_zones.svc.offsets['ch-gw-lan']) | ansible.utils.ipaddr('address') }}"
+ interfaces:
+ - *_network_primary_
+
+raspios_boot_config:
+ - regexp: '^#?otg_mode=1'
+ line: '#otg_mode=1'
+ - regexp: '^#?dtparam=i2c_vc'
+ line: 'dtparam=i2c_vc=on'
+ - regexp: '^#?dtoverlay=i2c-rtc'
+ line: 'dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi'
+ - regexp: '^#?dtoverlay=disable-bt'
+ line: 'dtoverlay=disable-bt'
+ - regexp: '^#?dtoverlay=disable-wifi'
+ line: 'dtoverlay=disable-wifi'
+ - regexp: '^#?dtoverlay=dwc2'
+ line: 'dtoverlay=dwc2,dr_mode=host'
+ - regexp: '^#?dtoverlay=audremap'
+ line: 'dtoverlay=audremap,pins_18_19'
+ - regexp: '^#?dtoverlay=gpio-shutdown'
+ line: 'dtoverlay=gpio-shutdown,gpio_pin=4'
+
+base_entropy_generator: rngd
diff --git a/inventory/host_vars/ch-cm4-test.yml b/inventory/host_vars/ch-cm4-test.yml
index bc6f812c..030267d2 100644
--- a/inventory/host_vars/ch-cm4-test.yml
+++ b/inventory/host_vars/ch-cm4-test.yml
@@ -23,37 +23,45 @@ network:
# - regexp: '^#?dtoverlay=disable-wifi'
# line: 'dtoverlay=disable-wifi'
-# ## Waveshare CM4-DUAL-ETH-BASE
-# raspios_boot_config:
-# - regexp: '^#?dtparam=i2c_vc'
-# line: 'dtparam=i2c_vc=on'
-# - regexp: '^#?dtoverlay=i2c-rtc'
-# line: 'dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi'
-# - regexp: '^#?dtoverlay=i2c-fan'
-# line: 'dtoverlay=i2c-fan,emc2301,i2c_csi_dsi'
-# - regexp: '^#?dtoverlay=disable-bt'
-# line: 'dtoverlay=disable-bt'
-# - regexp: '^#?dtoverlay=disable-wifi'
-# line: 'dtoverlay=disable-wifi'
-
-## TuringPi v2.4
-#raspios_boot_config:
-# - regexp: '^#?dtoverlay=disable-bt'
-# line: 'dtoverlay=disable-bt'
-# - regexp: '^#?dtoverlay=disable-wifi'
-# line: 'dtoverlay=disable-wifi'
-
-## Cytron CM4 Maker Board
+## Waveshare CM4-DUAL-ETH-BASE
raspios_boot_config:
- regexp: '^#?dtparam=i2c_vc'
line: 'dtparam=i2c_vc=on'
- regexp: '^#?dtoverlay=i2c-rtc'
line: 'dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi'
+ - regexp: '^#?dtoverlay=i2c-fan'
+ line: 'dtoverlay=i2c-fan,emc2301,i2c_csi_dsi'
- regexp: '^#?dtoverlay=disable-bt'
line: 'dtoverlay=disable-bt'
- regexp: '^#?dtoverlay=disable-wifi'
line: 'dtoverlay=disable-wifi'
+# ## TuringPi v2.4
+# raspios_boot_config:
+# - regexp: '^#?dtoverlay=disable-bt'
+# line: 'dtoverlay=disable-bt'
+# - regexp: '^#?dtoverlay=disable-wifi'
+# line: 'dtoverlay=disable-wifi'
+
+# ## Cytron CM4 Maker Board
+# raspios_boot_config:
+# - regexp: '^#?otg_mode=1'
+# line: '#otg_mode=1'
+# - regexp: '^#?dtparam=i2c_vc'
+# line: 'dtparam=i2c_vc=on'
+# - regexp: '^#?dtoverlay=i2c-rtc'
+# line: 'dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi'
+# - regexp: '^#?dtoverlay=disable-bt'
+# line: 'dtoverlay=disable-bt'
+# - regexp: '^#?dtoverlay=disable-wifi'
+# line: 'dtoverlay=disable-wifi'
+# - regexp: '^#?dtoverlay=dwc2'
+# line: 'dtoverlay=dwc2,dr_mode=host'
+# - regexp: '^#?dtoverlay=audremap'
+# line: 'dtoverlay=audremap,pins_18_19'
+# - regexp: '^#?dtoverlay=gpio-shutdown'
+# line: 'dtoverlay=gpio-shutdown,gpio_pin=4'
+
base_entropy_generator: rngd
diff --git a/inventory/hosts.ini b/inventory/hosts.ini
index dc29d600..4ab98ab6 100644
--- a/inventory/hosts.ini
+++ b/inventory/hosts.ini
@@ -37,6 +37,8 @@ ch-vpn host_name=vpn
ch-mon host_name=mon
ch-greenbone host_name=greenbone
ch-epimetheus host_name=epimetheus
+ch-cm4-sensors0 host_name=cm4-sensors0
+ch-cm4-sensors1 host_name=cm4-sensors1
ch-mclr host_name=mclr
ch-mcbr host_name=mcbr
ch-octopi host_name=octopi
@@ -340,6 +342,8 @@ ch-octopi
ch-epimetheus
ch-companion-raspi
ch-rpi5-test
+ch-cm4-sensors0
+ch-cm4-sensors1
ele-stage-raspi
ele-companion-raspi
[raspios:children]
diff --git a/roles/installer/raspios/image/templates/firstrun.sh.j2 b/roles/installer/raspios/image/templates/firstrun.sh.j2
index 318b17dd..96c74b39 100644
--- a/roles/installer/raspios/image/templates/firstrun.sh.j2
+++ b/roles/installer/raspios/image/templates/firstrun.sh.j2
@@ -52,7 +52,21 @@ iface {{ network.primary.name }} inet static
up echo 0 > /proc/sys/net/ipv6/conf/\$IFACE/autoconf
address {{ network.primary.address | ansible.utils.ipaddr('address') }}
netmask {{ network.primary.address | ansible.utils.ipaddr('netmask') }}
+{% if 'gateway' in network.primary %}
gateway {{ network.primary.gateway }}
+{% endif %}
+{% for address in network.primary.additional_addresses | default([]) %}
+ up /bin/ip addr add dev $IFACE {{ address }}/32
+{% endfor %}
+{% for route in network.primary.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 network.primary.static_routes | default([]) | reverse %}
+ down /bin/ip route del {{ route.destination }} via {{ route.gateway }}{% if 'source' in route %} src {{ route.source }}{% endif %}{{ '' }}
+{% endfor %}
+{% for address in network.primary.additional_addresses | default([]) | reverse %}
+ down /bin/ip addr del dev $IFACE {{ address }}/32
+{% endfor %}
{% endif %}
{% if 'wifi' in network.primary %}
wpa-ssid {{ network.primary.wifi.ssid }}