From 5d1e71e83ed474cec7a5169f619bab27fdecd824 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Sun, 27 Sep 2020 16:46:26 +0200 Subject: [PATCH] bundles/raspberrypi: introduce --- bundles/raspberrypi/files/config.txt | 14 ++++++++++++ bundles/raspberrypi/items.py | 27 +++++++++++++++++++++++ bundles/raspberrypi/metadata.py | 16 ++++++++++++++ groups/os.py | 12 ++++++++++ nodes/home/octoprint-vielschichtigkeit.py | 10 ++++----- 5 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 bundles/raspberrypi/files/config.txt create mode 100644 bundles/raspberrypi/items.py create mode 100644 bundles/raspberrypi/metadata.py create mode 100644 groups/os.py diff --git a/bundles/raspberrypi/files/config.txt b/bundles/raspberrypi/files/config.txt new file mode 100644 index 0000000..80d4b1f --- /dev/null +++ b/bundles/raspberrypi/files/config.txt @@ -0,0 +1,14 @@ +disable_overscan=1 +hdmi_force_hotplug=1 +dtparam=spi=on +dtparam=spi=on +dtoverlay=vc4-fkms-v3d +max_framebuffers=2 + +% if node.os == 'debian': +arm_64bit=1 +% endif + +% for key, value in node.metadata['raspberrypi']['config.txt'].items(): +${key}=${value} +% endfor diff --git a/bundles/raspberrypi/items.py b/bundles/raspberrypi/items.py new file mode 100644 index 0000000..dc453a9 --- /dev/null +++ b/bundles/raspberrypi/items.py @@ -0,0 +1,27 @@ +default_target = node.metadata['raspberrypi']['default-target'] + +# On a FAT filesystem. +file_perms = { + 'owner': None, + 'group': None, + 'mode': None, +} + +actions = { + 'raspberrypi_assure_target': { + 'command': f'systemctl set-default {default_target}', + 'unless': f'[ $(systemctl get-default) = "{default_target}" ]', + }, +} + +files = { + '/boot/cmdline.txt': { + 'content': ' '.join(sorted(node.metadata['raspberrypi']['cmdline'])), + **file_perms, + }, + '/boot/config.txt': { + 'content_type': 'mako', + 'context': node.metadata['raspberrypi'], + **file_perms, + }, +} diff --git a/bundles/raspberrypi/metadata.py b/bundles/raspberrypi/metadata.py new file mode 100644 index 0000000..0b70601 --- /dev/null +++ b/bundles/raspberrypi/metadata.py @@ -0,0 +1,16 @@ +defaults = { + 'raspberrypi': { + 'default-target': 'multi-user.target', + 'cmdline': { + 'console=tty1', + 'root=/dev/mmcblk0p2', + 'rootfstype=ext4', + 'elevator=deadline', + 'fsck.repair=yes', + 'rootwait', + 'quiet', + 'plymouth.ignore-serial-consoles', + }, + 'config.txt': {}, + }, +} diff --git a/groups/os.py b/groups/os.py new file mode 100644 index 0000000..98b384a --- /dev/null +++ b/groups/os.py @@ -0,0 +1,12 @@ +groups['raspberry'] = { + 'bundles': { + 'raspberrypi', + }, + 'metadata': { + 'users': { + 'pi': { + 'delete': True, + }, + }, + }, +} diff --git a/nodes/home/octoprint-vielschichtigkeit.py b/nodes/home/octoprint-vielschichtigkeit.py index f4b7d26..20fdf29 100644 --- a/nodes/home/octoprint-vielschichtigkeit.py +++ b/nodes/home/octoprint-vielschichtigkeit.py @@ -4,8 +4,11 @@ nodes['home.octoprint-vielschichtigkeit'] = { 'nginx', 'octoprint', }, - 'groups': set(), + 'groups': { + 'raspberry', + }, 'metadata': { + 'hostname': 'octoprint-vielschichtigkeit', 'interfaces': { 'eth0': { 'ipv4': { @@ -32,11 +35,6 @@ nodes['home.octoprint-vielschichtigkeit'] = { }, }, }, - 'users': { - 'pi': { - 'delete': True, - }, - }, 'vm': { 'cpu': 4, 'ram': 1,