Debian-OPSI-samba4: Unterschied zwischen den Versionen
HK (Diskussion | Beiträge) (→Auf dem Host Container opsi-1.test2.local einrichten) |
HK (Diskussion | Beiträge) (→Auf dem Host Container samba4.test2.local einrichten) |
||
Zeile 203: | Zeile 203: | ||
=== Auf dem Host Container samba4.test2.local einrichten === | === Auf dem Host Container samba4.test2.local einrichten === | ||
Als erstes wird die erzeugte Conf bearbeitet. | Als erstes wird die erzeugte Conf bearbeitet. | ||
− | vim /var/lib/lxc/ | + | vim /var/lib/lxc/samba4.test2.local/config |
Entfernen | Entfernen | ||
Zeile 218: | Zeile 218: | ||
lxc.network.link=lxc-in | lxc.network.link=lxc-in | ||
lxc.network.hwaddr = 00:FF:AA:00:21:01 | lxc.network.hwaddr = 00:FF:AA:00:21:01 | ||
− | lxc.network.ipv4 = 10.0.0. | + | lxc.network.ipv4 = 10.0.0.5/24 |
# Gateway des Containers | # Gateway des Containers | ||
lxc.network.ipv4.gateway = 10.0.0.1 | lxc.network.ipv4.gateway = 10.0.0.1 | ||
Zeile 230: | Zeile 230: | ||
lxc.network.link=lxc-out | lxc.network.link=lxc-out | ||
lxc.network.hwaddr = 00:FF:AA:00:21:11 | lxc.network.hwaddr = 00:FF:AA:00:21:11 | ||
− | lxc.network.ipv4 = 10.8.190. | + | lxc.network.ipv4 = 10.8.190.5/24 |
lxc.network.flags=up | lxc.network.flags=up | ||
# Name des TUN-Devices auf dem Host | # Name des TUN-Devices auf dem Host | ||
Zeile 240: | Zeile 240: | ||
#Setzt den Hostnamen mittels <Container>/rootfs/etc/hosts | #Setzt den Hostnamen mittels <Container>/rootfs/etc/hosts | ||
− | lxc.utsname = | + | lxc.utsname = samba4 |
=== Im Container samba4.test2.local einrichten === | === Im Container samba4.test2.local einrichten === |
Version vom 18. Oktober 2015, 11:14 Uhr
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 backup
- 3.4 Container samba4.test2.local erstellen
- 3.5 Container opsi-1.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 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.
lxc-backup
Ein sehr simples Script für das Container Backup
cd /var/lib/lxc lxc-backup <container-name>
Er wird automatisch im selben Verzeichniss eine Kopie mit Zeitstempel erzeugt.
autostart muss händisch abgeschaltet werden. Kommt noch.......
LXC-Scripte von code.netz.coop
Container samba4.test2.local erstellen
Container samba4.test2.local erzeugen
lxc-create --name samba4.test2.local -t debian
Auf dem Host Container samba4.test2.local einrichten
Als erstes wird die erzeugte Conf bearbeitet.
vim /var/lib/lxc/samba4.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.5/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.5/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 #Setzt den Hostnamen mittels <Container>/rootfs/etc/hosts lxc.utsname = samba4
Im 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 -y install bash-completion vim less iputils-* dnsutils
- Zeitzone anpassen
dpkg-reconfigure tzdata
Die Zeit übernimmt der Container vom Host, die Zeitzone nicht.
- /etc/hosts
127.0.0.1 localhost 10.8.190.5 samba4.test2.local samba4
Testen mit
getent hosts $(hostname -f)
Ausgabe muss bei unserem Beispiel so aussehen
10.8.190.5 samba4.test2.local samba4
Samba4 AD DC installieren und einrichten
apt-get install samba krb5-config smbclient
Samba4 AD DC install => Genutzt zur Ersteinrichtung des AD DCs, sehr knapp.
Setup_a_Samba_Active_Directory_Domain_Controller
Container opsi-1.test2.local erstellen
Container opsi-1.test2.local erzeugen
lxc-create --name opsi-1.test2.local -t debian
Auf dem Host Container opsi-1.test2.local einrichten
Rest wie beim Container samba4.test2.local. config anpassen.
- Die MACs und IPs müssen verschieden sein!
- Unser Beispiel:
10.0.0.10 => lxc-in 10.8.190.1 => lxc-out lxc.utsname = opsi-1 MACs beliebig
Im Container opsi-1.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 -y install bash-completion vim less iputils-* dnsutils
- Zeitzone anpassen
dpkg-reconfigure tzdata
Die Zeit übernimmt der Container vom Host, die Zeitzone nicht.
- /etc/hosts
127.0.0.1 localhost 10.8.190.1 opsi-1.test2.local samba4
Testen mit
getent hosts $(hostname -f)
Ausgabe muss bei unserem Beispiel so aussehen
10.8.190.1 opsi-1.test2.local opsi-1