===== Software (nach)installieren =====
Ich gehe hier davon aus, dass folgende Pakete bereits in einem der vorherigen Schritte Einzug auf dem Server gefunden haben:
* mdadm
* lvm2
* xfsprogs
# aptitude install lxc
===== logisches Volume erstellen =====
Ich gehe hier davon aus, dass folgende Voraussetzungen bereits in einem der vorherigen Schritte konfiguriert wurden:
* eine Netzwerkbrücke (z. B. "br0")
* ein Software-RAID1 (z. B. "/dev/md3") als pysikalisches Volume für LVM2
* eine Volume-Gruppe für logische Volumen (z. B. "sys")
# lvcreate -L2G -n lxc_template sys
===== Dateisystem erstellen und einhängen =====
# mkfs.xfs -L template /dev/sys/lxc_template
# mkdir /var/lib/lxc/template
# mount /dev/mapper/sys-lxc_template /var/lib/lxc/template
===== LinuX Container erstellen =====
# lxc-create -n template -t debian -- -r jessie
In der letzten Ausgabe des Befehls, erfährt man das root-Passwort für den Container.
Wer mag, kann es sich aufschreiben, in wenigen Minuten werden wir es jedoch selber "von außen" ändern.
===== LXC anpassen =====
==== Netzwerkkonfiguration ====
# cat <
=== Debian Repository ===
# cat <
=== (mein persönliches) "sauberes" Update-/Upgrade-Skript ===
# wget https://raw.githubusercontent.com/casualscripter/debian-stuff/master/usr/local/sbin/clean_upgrade \
-O /var/lib/lxc/template/rootfs/usr/local/sbin/clean_upgrade
# chown root:root /var/lib/lxc/template/rootfs/usr/local/sbin/clean_upgrade
# chmod 700 /var/lib/lxc/template/rootfs/usr/local/sbin/clean_upgrade
=== /etc/hosts ===
# echo "192.168.0.254 template.domain template" > /var/lib/lxc/template/rootfs/etc/hosts.tmp
# cat /var/lib/lxc/template/rootfs/etc/hosts" >> /var/lib/lxc/template/rootfs/etc/hosts.tmp
# mv /var/lib/lxc/template/rootfs/etc/hosts{.tmp,}
=== /root/.bashrc ===
# mv /var/lib/lxc/template/rootfs/root/.bashrc{,_DEBIAN}
# cp /var/lib/lxc/template/rootfs/etc/skel/.bashrc /var/lib/lxc/template/rootfs/root/.bashrc
# sed 's/HISTSIZE=1000/&0/' /var/lib/lxc/template/rootfs/root/.bashrc > /var/lib/lxc/template/rootfs/root/.bashrc.tmp
# mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
# sed 's/HISTFILESIZE=2000/&0/' /var/lib/lxc/template/rootfs/root/.bashrc > /var/lib/lxc/template/rootfs/root/.bashrc.tmp
# mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
# sed 's/#force_color_prompt=yes/force_color_prompt=yes/' > /var/lib/lxc/template/rootfs/root/.bashrc.tmp
# mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
Die Zeile
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
durch
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\[\033[01;35m\](lxc)\[\033[01;31m\]\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
ersetzten (z. B. mit "nano").
# sed "s/#alias grep='grep --color=auto'/alias grep='grep --color=auto'/" > /var/lib/lxc/template/rootfs/root/.bashrc.tmp
# mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
# sed "s/#alias ll='ls -l'/alias ll='ls -lisa'/" > /var/lib/lxc/template/rootfs/root/.bashrc.tmp
# mv /var/lib/lxc/template/rootfs/root/.bashrc{.tmp,}
# echo 'HISTTIMEFORMAT="%F %T "' >> /var/lib/lxc/template/rootfs/root/.bashrc
=== root-Passwort ändern ===
# echo "Change password for root in the LXC template:"
# passwd -R /var/lib/lxc/template/rootfs
=== öffentlichen SSH-Schlüssel (ggf. erstellen und) integrieren ===
Wenn man für root auf dem Host noch keinen SSH-Schlüsselpaar erzeugt hat, muss man es wie folgt nachholen:
# ssh-keygen -b 2048 -t rsa -N "" -f /root/.ssh/id_rsa
Danach kopieren wir den öffentlichen Schlüssel in den LXC, damit wir uns später per SSH vom Host aus im Gast anmelden können:
# cp /root/.ssh/id_rsa /var/lib/lxc/template/rootfs/root/.ssh/authorized_keys