Intelligente Lösungen
in neuer Dimension

LXC: Neuer 32/64-Bit-Container für Ubuntu-20.04 oder 22.04

Kurzanleitung zur Erstellung eines neuen 32-Bit-Containers. Ubuntu stellt die 32-Bit-Images ja nur bis Version 18.04 (bionic) bereit. Mein Ablauf funktioniert auch mit 20.04 oder neuer! Und weil er sich bewährt, habe ich ihn auch für 64-Bit-Container angepasst. So werde ich auch dort Dinge wie “ubuntu-advantage” los!

Vorbereitungen

Die vorbereitenden Schritte habe ich im Github-Repo lxc-ubuntu-i386-amd64 beschrieben. Dort erstelle ich Images für

  • 32bit und 64bit Ubuntu 20.04 (focal)
  • 32bit und 64bit Ubuntu 22.04 (jammy)

Die Images liegen bei Releases zum herunterladen bereit.

Herunterladen

1
2
3
backup$ wget https://github.com/uli-heller/lxc-ubuntu-i386-amd64/releases/download/v1.6/focal-v1.6-i386-lxcimage.tar.xz
...
2022-08-08 12:36:09 (28.3 MB/s) - ‘focal-v1.6-i386-lxcimage.tar.xz’ saved [112364357/112364357]

Importieren

1
2
backup$ lxc image import focal-v1.6-i386-lxcimage.tar.xz --alias focal-32bit-import
Image imported with fingerprint: 80038793fc413512ea14bd87f085a0e530b3800349ad7d5ae84d2b378f82cf2a

Starten

1
2
3
backup$ lxc launch focal-32bit-import ubuntu-2004-32-test
Creating ubuntu-2004-32-test
Starting ubuntu-2004-32-test

Zusammenfassung für Ubuntu-20.04

1
2
3
4
5
6
7
8
9
# 32 bit
wget https://github.com/uli-heller/lxc-ubuntu-i386-amd64/releases/download/v1.6/focal-v1.6-i386-lxcimage.tar.xz
lxc image import focal-v1.6-i386-lxcimage.tar.xz --alias focal-32bit-import
lxc launch focal-32bit-import ubuntu-2004-32-test

  # 64 bit
wget https://github.com/uli-heller/lxc-ubuntu-i386-amd64/releases/download/v1.6/focal-v1.6-amd64-lxcimage.tar.xz
lxc image import focal-v1.6-amd64-lxcimage.tar.xz --alias focal-64bit-import
lxc launch focal-64bit-import ubuntu-2004-64-test

Zusammenfassung für Ubuntu-22.04

1
2
3
4
5
6
7
8
9
# 32 bit
wget https://github.com/uli-heller/lxc-ubuntu-i386-amd64/releases/download/v1.6/jammy-v1.6-i386-lxcimage.tar.xz
lxc image import jammy-v1.6-i386-lxcimage.tar.xz --alias jammy-32bit-import
lxc launch jammy-32bit-import ubuntu-2204-32-test

  # 64 bit
wget https://github.com/uli-heller/lxc-ubuntu-i386-amd64/releases/download/v1.6/jammy-v1.6-amd64-lxcimage.tar.xz
lxc image import jammy-v1.6-amd64-lxcimage.tar.xz --alias jammy-64bit-import
lxc launch jammy-64bit-import ubuntu-2204-64-test

Kontrolle

1
2
3
4
5
6
backup$ lxc ls ubuntu-2004-32-test
+---------------------+---------+---------------------+------+-----------+-----------+
|      NAME           |  STATE  |        IPV4         | IPV6 |   TYPE    | SNAPSHOTS |
+---------------------+---------+---------------------+------+-----------+-----------+
| ubuntu-2004-32-test | RUNNING | 10.2.110.165 (eth0) |      | CONTAINER | 0         |
+---------------------+---------+---------------------+------+-----------+-----------+

Anpassen

Anpassen der Netzwerkschnittstellen, so dass kein direkter Zugriff vom/ins Internet mehr möglich ist:

1
2
$ ./bin/lxc-hostonly.sh ubuntu-2004-32-test
Profiles hostonly applied to ubuntu-2004-32-test

Löschen

1
2
3
$ lxc delete ubuntu-2004-32-test
  # ... oder
$ lxc delete ubuntu-2004-32-test --force

Ansible

host_vars/(server).yml

Beispiel: host_vars/backup.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
diff --git a/host_vars/backup.yml b/host_vars/backup.yml
index 4e6d9bb..c179bb2 100644
--- a/host_vars/backup.yml
+++ b/host_vars/backup.yml
@@ -27,4 +27,9 @@ lxd:
       timezone: Europe/Berlin
       pubkeys: |
         ssh-rsa AAAAB3NzaC1y...
-
+    - ubuntu_2004_32:
+      name: ubuntu-2004-32
+      alias: focal-32bit-import
+      timezone: Europe/Berlin
+      pubkeys: |
+        ssh-rsa AAAAB3NzaC1y...

Ausrollen

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$ ansible-playbook.sh site.yml -l backup
...
TASK [lxd-host : Check for base container 'ubuntu-2004-32'] ************************************************************************
ok: [backup]

TASK [lxd-host : Copy image 'focal-32bit-import'] **********************************************************************************
skipping: [backup]

TASK [lxd-host : hostonly to nat] **************************************************************************************************
skipping: [backup]

TASK [lxd-host : Add container 'ubuntu-2004-32' to the inventory as 'backup_ubuntu-2004-32'] ***************************************
skipping: [backup]

TASK [lxd-host : Install python3 on 'ubuntu-2004-32'] ******************************************************************************
skipping: [backup]

TASK [lxd-host : debian tasks] *****************************************************************************************************
skipping: [backup]

TASK [lxd-host : nat to hostonly] **************************************************************************************************
...

Historie und Anmerkung

  • 2022-08-13: Version v1.6 verwenden, neue Repo-Url
  • 2022-08-12: Version v1.5 verwenden, neue Repo-Url, neuer Titel, Nachschlag entfällt, .tar.gz –> .tar.xz
  • 2022-08-10: Version v1.2 verwenden
  • 2022-08-09: Verweis auf Github-Repo
  • 2022-08-02: Erste Version