Inhaltsverzeichnis

LinuX Container-Vorlage

Software (nach)installieren

Ich gehe hier davon aus, dass folgende Pakete bereits in einem der vorherigen Schritte Einzug auf dem Server gefunden haben:

# aptitude install lxc

logisches Volume erstellen

Ich gehe hier davon aus, dass folgende Voraussetzungen bereits in einem der vorherigen Schritte konfiguriert wurden:

# 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 <<EOF >> /var/lib/lxc/template/config
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.ipv4 = 192.168.0.254/24
lxc.network.ipv4.gateway = 192.168.0.1
lxc.network.hwaddr = 02:34:56:78:90:fe
EOF

Debian Repository

# cat <<EOF > /var/lib/lxc/template/rootfs/etc/apt/sources.list
deb http://ftp.de.debian.org/debian jessie main contrib non-free
deb http://ftp.de.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org/ jessie/updates main contrib non-free
EOF

(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