diff options
author | Lars Wirzenius <liw@liw.fi> | 2023-07-08 17:13:10 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2023-07-08 17:13:10 +0000 |
commit | 08e1d205fe26fd3a18fe70d09607628f32f8177c (patch) | |
tree | b7dc08e07869890cf8ab57083fb3578a4c300a1c | |
parent | 526c03cfa7db98de8c8921780a0f05bbad4e5a2f (diff) | |
parent | 994647ea63959a1bcff19e58f535dc69c95c69ec (diff) | |
download | v-i-08e1d205fe26fd3a18fe70d09607628f32f8177c.tar.gz |
Merge branch 'liw/demoprep' into 'main'
various improvements in preparation for a demo
See merge request larswirzenius/v-i!53
-rw-r--r-- | installer-ansible.yml | 14 | ||||
-rw-r--r-- | installer.vmdb | 2 | ||||
-rwxr-xr-x | v-i | 43 |
3 files changed, 49 insertions, 10 deletions
diff --git a/installer-ansible.yml b/installer-ansible.yml index 8e99730..b545e55 100644 --- a/installer-ansible.yml +++ b/installer-ansible.yml @@ -50,6 +50,20 @@ install -d /etc/systemd/system/ssh.service.wants ln -nsf /etc/systemd/system/v-i-config.service /etc/systemd/system/ssh.service.wants/v-i-config.service + - name: "add non-free-firmware (and more) to apt sources, for wifi" + apt_repository: + repo: "deb http://deb.debian.org/debian bookworm contrib non-free non-free-firmware" + + - name: "install wifi firmware" + apt: + name: + - firmware-brcm80211 + - firmware-iwlwifi + - firmware-libertas + - firmware-misc-nonfree + - firmware-realtek + - firmware-ti-connectivity + # Install vmdb2, which actually does the installation to the # target system. diff --git a/installer.vmdb b/installer.vmdb index f4f7244..da12124 100644 --- a/installer.vmdb +++ b/installer.vmdb @@ -29,7 +29,7 @@ steps: - unpack-rootfs: root - - debootstrap: bullseye + - debootstrap: bookworm mirror: http://deb.debian.org/debian target: root unless: rootfs_unpacked @@ -2,6 +2,7 @@ import argparse import glob +import json import logging import os import shutil @@ -32,8 +33,27 @@ def error(msg): def run(argv, **kwargs): - log(f"RUN: {argv} {kwargs}") - return subprocess.run(argv, **kwargs) + log(f"RUN: {argv[0]}") + for arg in argv: + log(f"RUN: - {arg!r}") + for key in kwargs: + log(f"RUN: - {key}={kwargs[key]!r}") + check = False + if kwargs.get("check"): + check = True + del kwargs["check"] + if "capture_output" not in kwargs: + kwargs["capture_output"] = True + p = subprocess.run(argv, **kwargs) + if check and p.returncode != 0: + stdout = indent(p.stdout.decode()) + stderr = indent(p.stderr.decode()) + error(f"Ran command that failed: {argv}") + error(f"Exit code {p.returncode}") + error(f"Stdout:\n{stdout}") + error(f"Stderr:\n{stderr}") + sys.exit("command failed") + return p def physical_volumes(): @@ -427,7 +447,7 @@ class SystemSpec: "ansible_vars": {}, "ansible_vars_files": [], "luks": "", - "debian_release": "bullseye", + "debian_release": "stable", "root_fstype": "ext4", } with open(filename) as f: @@ -455,14 +475,17 @@ class SystemSpec: for key in self._obj: setattr(self, key, self._obj[key]) - del self._obj self._check() def __repr__(self): - return repr( - {key: getattr(self, key) for key in dir(self) if not key.startswith("_")} - ) + return repr(self.as_dict()) + + def as_dict(self): + return {key: self._obj[key] for key in self._obj} + + def as_json(self): + return json.dumps(self.as_dict(), indent=4) def _check(self): try: @@ -514,7 +537,8 @@ def main(): log("v-i starts") system = SystemSpec(args.spec) - log(f"spec: {system!r}") + spec_json = system.as_json() + log(f"formatted spec:\n{spec_json}") cache = args.cache or cache_name(system) log(f"cache: {cache}") @@ -526,7 +550,8 @@ def main(): with open(filename) as f: vars_dict = yaml.safe_load(f) ansible_vars.update(vars_dict) - log(f"ansible_vars: {ansible_vars!r}") + ansible_vars_json = json.dumps(ansible_vars, indent=4) + log(f"ansible_vars:\n{ansible_vars_json}") timings.reached("read configuration") clean_up_disks([system.drive] + system.extra_drives) |