summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2023-07-08 17:13:10 +0000
committerLars Wirzenius <liw@liw.fi>2023-07-08 17:13:10 +0000
commit08e1d205fe26fd3a18fe70d09607628f32f8177c (patch)
treeb7dc08e07869890cf8ab57083fb3578a4c300a1c
parent526c03cfa7db98de8c8921780a0f05bbad4e5a2f (diff)
parent994647ea63959a1bcff19e58f535dc69c95c69ec (diff)
downloadv-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.yml14
-rw-r--r--installer.vmdb2
-rwxr-xr-xv-i43
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
diff --git a/v-i b/v-i
index c4772fc..9f34eea 100755
--- a/v-i
+++ b/v-i
@@ -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)