Debian-OPSI-samba4
Inhaltsverzeichnis
- 1 Herausforderung
- 2 Ziel
- 3 Installation LXC-Host
- 3.1 Server mit GRML starten
- 3.2 System starten
- 3.2.1 Keyboard layout einstellen
- 3.2.2 Sprache einstellen
- 3.2.3 Bash-completion
- 3.2.4 Farbiges Promt
- 3.2.5 Hostname
- 3.2.6 /etc/network/interfaces
- 3.2.7 LXC installieren
- 3.2.8 LVM für LXC einbinden
- 3.2.9 Netzwerk für LXC vorbereiten
- 3.2.10 Packet Forwarding einschalten
- 3.2.11 MASQUERADE der Firewall einschalten
- 3.3 Container opsi-1.test2.local erstellen
- 3.4 Container samba4.test2.local erstellen
Herausforderung
OPSI und Samba4 als AD/DC verstehen sich nicht wirklich gut.
Der Ansatz dieses Postings ist es, beide relativ unabhängig von ein ander im Netzwerk arbeiten zu lassen.
Der OPSI-Server soll kein Teil der Domäne werden. Der OPSI-Agent auf den Clienten soll sich beinm Systemstart am OPSI-Server im Workgroup-Mode anmelden, wenn er Daten für Installationen benötigt.
Beim Anmelden des Users am Clienten geschieht über den Samba4 AD DC.
Soweit die Theorie. Dieses Posting soll klären, ob die Idee etwas wert ist.
Ziel
- LXC-Host auf Debian Jessie Basis.
- Zwei Container
- OPSI - Nicht Teil der Domäne. Es soll Software installieren, bevor die Domäne in Kraft tritt.
- Samba4 - AD/DC
Installation LXC-Host
Server mit GRML starten
Festplatten partitionieren
fdisk /dev/sda * / 5G * swap 1G * lvm Rest
LVM nur für die Container
pvcreate /dev/sda3 vgcreate vg_lxc /dev/sda3 lvcreate -L 20G -n lv_lxc vg_lxc
grml-debootstrap --target /dev/sda1 --grub /dev/sda
reboot
System starten
Keyboard layout einstellen
dpkg-reconfigure console-data
Im ncurses-Menu auswählen.
- Select keymap from arch list => O.K.
- qwertz => O.K.
- German => O.K.
- Standard => O.K.
- latin1 => O.K.
Sprache einstellen
dpkg-reconfigure locales
de_DE.UTF-8 auswählen und als default einstellen
Bash-completion
apt-get install bash-completion
Farbiges Promt
vim ~/.bashrc
export PS1='\[\033[0;31m\]\u\[\033[0;36m\]@\h:\[\033[0m\]\w\$ '
- [0;36m] Türkis (cyan)
- [0;32m] Grün (green)
- [0;31m] Rot (red)
- Meine Farbregeln
- Vor dem Promt: rot für root und grün für user.
- Hinter dem Promt: rot für Produktivserver, türkis für Testrechner und grün für Privatrechner/Workstations.
Meine .bashrc für root auf einem Testrechner.
# ~/.bashrc: executed by bash(1) for non-login shells. export PS1='\[\033[0;31m\]\u\[\033[0;36m\]@\h:\[\033[0m\]\w\$ ' export LS_OPTIONS='--color=auto' eval "`dircolors`" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA' # Some more alias to avoid making mistakes: alias rm='rm -i' # bash-completion . /etc/bash_completion PATH=$PATH:~/bin
Damit PATH wirksam werden kann:
mkdir ~/bin
Dort leben alle custom-scripts.
Hostname
Wir nennen diesen Rechner host-1-lnx01
vim /etc/hostname
host-1-lnx01 eintragen
/etc/network/interfaces
Die interfaces Datei anpassen.
vim /etc/network/interfaces
eth1 ist hier das Interface zum Intranet
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet static address 10.8.190.1 broadcast 10.8.190.255 netmask 255.255.255.0
LXC installieren
apt-get install lxc lxctl
LVM für LXC einbinden
LVM auf /var/lib/lxc einbinden.
mkfs.ext4 /dev/vg_lxc/lv_lxc blkid |grep mapper >> /etc/fstab vim /etc/fstab
Am Ende muss die Zeile so außsehen. Der UUID weicht natürlich ab.
/dev/disk/by-uuid/2c58a476-7b09-428c-8277-b80889443220 /var/lib/lxc ext4 defaults 0 0
Netzwerk für LXC vorbereiten
vim /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback # eth0 verbindet den Host mit dem Internet auto eth0 iface eth0 inet dhcp # Mit diese Bridge werden die Container verbunden, damit sie Verbindung zum Internet bekommen. auto lxcbr0 iface lxcbr0 inet static address 10.0.0.1 netmask 255.255.255.0 pre-up (ip addr show |grep lxcbr0) || brctl addbr lxcbr0 # eth1 verbindet den Host physikalisch mit dem Intranet auto eth1 iface eth1 inet manual # Per Bridge steht eth1 den Containern zur Verfügung auto lxc-out iface lxc-out inet manual bridge_ports eth1 bridge_maxwait 1
Packet Forwarding einschalten
vim /etc/sysctl.conf
Die folgende Zeile suchen und einkommentieren (# vor der Zeile entfernen)
net.ipv4.ip_forward=1
MASQUERADE der Firewall einschalten
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Dauerhaft abspeichern und nach jedem Hoststart laden
apt-get install iptables-persistent
Änderungen an der Firewall speichern mit
iptables-save > /etc/iptables/rules.v4
Container opsi-1.test2.local erstellen
Container opsi-1.test2.local erzeugen
lxc-create --name opsi-1.test2.local -t debian
Container config bearbeiten
Als erstes wird die erzeugte Conf bearbeitet.
vim /var/lib/lxc/opsi-1.test2.local/config
Entfernen
lxc.network.type = empty
Hinzufügen
# Autostart des Containers ( 0 steht für kein Autostart) lxc.start.auto = 1 # Netzwerk # Erzeugt tun-device, dass in die Bridge lxcbr0 eingefügt wird (Internet) lxc.network.type=veth # Bridge, in der das Interface eingefügt wird lxc.network.link=lxc-in lxc.network.hwaddr = 00:FF:AA:00:21:01 lxc.network.ipv4 = 10.0.0.10/24 # Gateway des Containers lxc.network.ipv4.gateway = 10.0.0.1 lxc.network.flags=up # Name des TUN-Devices auf dem Host lxc.network.veth.pair=opsi-in # Erzeugt tun-device, dass in die Bridge lxc-out eingefügt wird (Intranet) lxc.network.type=veth # Bridge, in der das Interface eingefügt wird lxc.network.link=lxc-out lxc.network.hwaddr = 00:FF:AA:00:21:11 lxc.network.ipv4 = 10.8.190.1/24 lxc.network.flags=up # Name des TUN-Devices auf dem Host lxc.network.veth.pair=opsi-out # OpenVPN # Damit OpenVPN im Container genutzt werden kann. lxc.cgroup.devices.allow = c 10:200 rwm
Container backup
Immer eine gute Idee, bevor mensch weitere Schritte im Container unternimmt.
cd /var/lib/lxc cp -a <container-name> <container-name>-$(date +%Y-%m-%d_%H.%M) vim /var/lib/lxc/<container-name>-Datum/config
# Autostart des Containers ( 0 steht für kein Autostart) lxc.start.auto = 0
Einspielen des Backup:
rm -rf <container-name> cp -a <container-name>-Datum <container-name> vim /var/lib/lxc/<container-name>-Datum/config
# Autostart des Containers ( 0 steht für kein Autostart) lxc.start.auto = 0
- Das Backup lässt sich nicht einfach starten. Dazu müssen sämtliche Pfade in der config angepasst werden.
Alternativ steht lxc-clone zur Verfügung, dass auch die config an den neuen Namen anpasst.
Der geclonte Container ist sofort startbereit.
- Bitte beachten: die erzeugte config sieht anders aus, z.B. sind alle Kommetare weg.
Container samba4.test2.local erstellen
Container samba4.test2.local erzeugen
lxc-create --name samba4.test2.local -t debian
Rest wie beim Container opsi-1.test2.local.
- Die MACs und IPs müssen verschieden sein!
Container samba4.test2.local einrichten
In einem Container, der mit lxc-create erzeugt wurde, ist viel weniger Software installiert als auf dem Host, der mit grml-debootstrab erzeugt wurde.
apt-get update apt-get install bash-completion vim less iputils-*
Vorher korrekt einstellen.
- Hostname
- /etc/hosts
Testen mit
getent hosts $(hostname -f)
Ausgabe muss ungefähr so aussehen
10.8.190.5 samba4.test2.local samba4
apt-get install samba krb5-config smbclient