===== 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 <> /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 < /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