OPSI/Installation
Inhaltsverzeichnis
Ziel
Am Ende der Installation wird ein Host mit folgenen Funktionen zur Verfügung stehen.
Primär
- OPSI-Server ohne mysql
- PrimaryDomainController (PDC im NT4 Style)
- dhcp-Server
- name-Server
Sekundär
- openvpn
- Backup wichtiger Userdaten
- Squid für Black- & Withelisting
Eckdaten
- Hostname: opsi-1-lnx01
- Netzwerkname: opsi-1.local
- Domain-Name: opsi-1
- IP zum OPSI-Netzwerk: 10.8.190.1 (optional zusätzlich 10.8.190.10)
Namenskonventionen in AD für Computer, Domänen, Standorte und Organisationseinheiten
Starten mit Livesystem
Rechner mit GRML vom USB-Stick starten
Das Live-System grml bietet mit grml-debootstrap mehr Komfort als das Debian-debbotstrap.
grml-debootstrap
Speicher vorbereiten
Festplatten automatisch partitionierern
sfdisk /dev/sda < my.layout
Nur ein Beispiel
my.layout
# partition table of /dev/sda unit: sectors /dev/sda1 : start= 2048, size= 497664, Id=83, bootable /dev/sda2 : start= 501758, size=1953021954, Id= 5 /dev/sda3 : start= 0, size= 0, Id= 0 /dev/sda4 : start= 0, size= 0, Id= 0 /dev/sda5 : start= 501760, size=1953021952, Id=8e
RAID 1 erzeugen (mirror)
mdadm --create --verbose /dev/md0 --level=mirror --raid-devices=2 /dev/sda1 /dev/sdb1
LVM erzeugen
Physical Volume erzeugen.
pvcreate /dev/md0
Wir erzeugen die Volumegroup opsi_system. Diese besteht aus einem physical volume.
vgcreate opsi_system /dev/md0
Danach zwei logical volumes, eins für / und eins für /local
lvcreate -L 20G -n lv_root opsi_system lvcreate -L 50G -n lv_local opsi_system
-L Größe des Volumes. G für Gigabyte
-n = Name des Volumes
mkfs.ext4 /dev/opsi_system/lv_root mkfs.ext4 /dev/opsi_system/lv_local
Grundsystem installieren
grml-debootstrap --target /dev/opsi_system/lv_root --grub /dev/sda
grub2 auch auf /dev/sdb installieren
Dafür brauchen wir ein chroot in das neue System.
- /dev/opsi_system/lv_root auf /mnt mounten
mount -t proc none /mnt/proc mount -o bind /dev /mnt/dev mount -t sysfs sys /mnt/sys chroot /mnt /bin/bash
In der Chroot-Umgebung ausführen
grub-install --recheck --no-floppy/dev/sdb
Chroot verlassen
exit
Erststart des Systems
- USB Stick <Bootmedium> entfernen.
reboot
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
Host bequem machen
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
Host vorbereiten
Hostname
Wir nennen diesen Rechner opsi-1-lnx01
vim /etc/hostname
opsi-1 eintragen
Hosts Datei
Der Name wird mit der IP verknüpft, die die Verbindung zum OPSI-Netzwerk bereitstellt.
vim /etc/hosts
Folgene Zeile einfügen (entsprechend Installation#Eckdaten)
10.8.190.1 opsi-1.opsi-1-lnx01.local opsi-1-lnx01
Prüfen mit folgendem Befehl
getent hosts $(hostname -f)
Das Ergebniss muss ausehen wie die eingefügte Zeile in /etc/hosts
10.8.190.1 opsi-1-lnx01.opsi-1.local opsi-1-lnx01
Server Software installieren
nameserver
apt-get install bind9 dnsutils
zone file
mkdir /etc/bind/zones
Die Dateien opsi-1.local.zone und 190.8.10.in-addr.arpa im Verzeichniss /etc/bind/zones erzeugen.
- opsi-1.local.zone => Zuständig für die Namensauflösung (Auflösen eines Namens in eine IP)
- 190.8.10.in-addr.arpa.zone => Zuständig für reverse mapping (Auflösung der IP in einen Hostnamen)
zones einbinden
Eine Zone wird in
vim /etc/bind/named.conf.local
eingebunden.
// // Do any local configuration here // // Consider adding the 1918 zones here, if they are not used in your // organization //include "/etc/bind/zones.rfc1918"; zone "opsi-1.local" { type master; file "/etc/bind/zones/opsi-1.local.zone"; }; zone "190.8.10.in-addr.arpa" { type master; file "/etc/bind/zones/190.8.10.in-addr.arpa.zone"; };
/etc/bind/zones/opsi-1.local.zone
; Kopf Start ; BIND zone file for opsi-1.local ; $TTL 604800 @ IN SOA opsi-1-lnx01.opsi-1.local. admin.opsi-1.local. ( 2014091001 ; Serial => JahrMonatTag0-99, ist willkürlich bis 4,294,967,295 604800 ; Refresh in Sekunden 86400 ; Retry in Sekunden 2419200 ; Expire in Sekunden 604800 ) ; Negative Cache TTL in Sekunden ; @ IN NS opsi-1-lnx01.opsi-1.local. ; Kopf Ende ; Ab hier werden die Namen aufgelöst. gw IN A 10.8.190.1 opsi-1-lnx01 IN A 10.8.190.10 server CNAME opsi-1 wpad CNAME opsi-1
printer01 IN A 10.8.17.31 win01 IN A 10.8.17.101 win02 IN A 10.8.17.102 win03 IN A 10.8.17.103 win04 IN A 10.8.17.104 win05 IN A 10.8.17.105
/etc/bind/zones/190.8.10.in-addr.arpa.zone
; ; BIND zone file for 190.8.10.in-addr.arpa zone ; $TTL 604800 @ IN SOA opsi-1-lnx01.opsi-1.local. admin.opsi-1.local. ( 20140601801 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS opsi-1-lnx01.opsi-1.local. 1 IN PTR gw.opsi-1.local. 10 IN PTR opsi-1-lnx01.opsi-1.local. 31 IN PTR printer01.opsi-1.local. 101 IN PTR win01.opsi-1.local. 102 IN PTR win02.opsi-1.local. 103 IN PTR win03.opsi-1.local. 104 IN PTR win04.opsi-1.local.
DHCP-Client anpassen
Wenn der Server seine incoming IP über dhcp bezieht:
Damit unsere /etc/resolv.conf nicht andauernt überschrieben wird, muss das Verhalten des isc-dhcp-client geändert werden.
vim /etc/dhcp/dhclient.conf
Im Block request auskommentieren:
- domain-name
- domain-name-servers
- domain-search
- host-name
- dhcp6.name-servers
- dhcp6.domain-search,
- netbios-name-servers
Damit haben wir noch ein paar weitere requests abgeschaltet. Sollte nicht schaden.
DHCP
apt-get install isc-dhcp-server
/etc/default/isc-dhcp-server
In /etc/default/isc-dhcp-server das etsprechende Netzwerkinterface eintragen, auf dem der DHCP-Server auf Anfragen lauschen soll.
vim /etc/default/isc-dhcp-server
In die Zeile
INTERFACES=""
das entsprechende Interface eintragen.
WICHTIG: Nur ein Interface darf rein, da die nc-opsi Tools darauf zurückgreifen!
INTERFACE="eth0"
/etc/dhcp/dhcpd.conf
Einträge für die Zone 10.8.190.0/24
vim /etc/dhcp/dhcpd.conf
ddns-update-style none; # Ist der offizielle DHCP-Server für alles in 10.8.190.0/24 authoritative; # DNS-Domain-Name in der /etc/resolv.conf des Clienten # Das ist nicht die Windows Domain option domain-name "opsi-1.local"; # Nameserver option domain-name-servers 10.8.190.10; default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 10.8.190.0 netmask 255.255.255.224 { # Der Range für nicht unten aufgeführte Computer per default abgeschaltet. # range 10.8.190.230 10.8.190.245; option routers 10.8.190.1; option broadcast-address 10.8.190.255; default-lease-time 600; max-lease-time 7200; } # Bei dieser Config werden die IPs über den nameserver aufgelöst. host win00 { hardware ethernet 08:00:07:26:c0:a5 fixed-address win00.opsi-1.local; }
Abhängigkeiten installieren
-y beantwortet die Frage nach dem "Soll installiert werden?" mit "Ja"
apt-get install -y wget lsof host python-mechanize p7zip-full cabextract openbsd-inetd samba samba-common smbclient cifs-utils samba-doc
In diesem Beispiel wird OPSI ohne mysql installiert
OPSI installieren
Hinzufügen des Repositories
echo "deb http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_7.0 ./" >> /etc/apt/sources.list.d/opsi.list
Signatur des Repositories importieren
wget -O - http://download.opensuse.org/repositories/home:/uibmz:/opsi:/opsi40/Debian_7.0/Release.key | apt-key add -
Der Erfolg kann mit
apt-key list
überprüft werden
Paketliste aktualisieren
apt-get update
System upgraden
apt-get upgrade -y
Die eigentlichen OPSI-Pakete installieren
apt-get install -y opsi-atftpd apt-get install -y opsi-depotserver apt-get install -y opsi-configed
MACs der Client-PCs finden
PXE-Boot
In diesem HowTo wird TinyCore eingesetzt.
Der große Vorteil liegt im per default eingesetzten dhcp-Clienten, der ein gebootetes TinyCore automatisch mit einer IP versorgt.
apt-get install syslinux nmap
Folgende Verzeichnisse erstellen
mkdir -p /tftpboot/lookmac/pxelinux.cfg mkdir -p /tftpboot/lookmac/tinycore
cp /usr/lib/syslinux/memdisk /tftpboot/lookmac/ cp /usr/lib/syslinux/pxelinux.0 /tftpboot/lookmac/
Im Verzeichniss /tftpboot/lookmac/pxelinux.cfg die Datei default erstellen.
vim /tftpboot/lookmac/pxelinux.cfg/default
Inhalt
default core label core kernel tinycore/boot/vmlinuz append initrd=tinycore/boot/core.gz
Ein TinyCore Iso downloaden.
wget http://tinycorelinux.net/5.x/x86/release/Core-current.iso -O /tftpboot/lookmac/core.iso
ISO bearbeiten
Der Timeout des Startmenues liegt bei 300 Sekunden, der soll auf 3 Sekunden verkürzt werden.
Mit Tools wie z.B. isomaster lässt sich ein ISO einfach bearbeiten.
Im Verzeichniss /boot/isolinux/ liegt die Datei isolinux.cfg
timeout 300 ändern in timeout 3 oder weniger.
timeout 0 ist nicht empfehlenswert, immerhin steht uns jetzt ein TinyCore mit allen Möglichkeiten zur Verfügung.
Das sollten wir uns erhalten.
Das ISO mounten
mount -o loop core.iso /tftpboot/lookmac/tinycore
/etc/dhcp/dhcp.conf anpassen
In der /etc/dhcp/dhcp.conf folgendes Änderung durchführen.
- range 10.8.190.15 10.8.190.30;
range 10.8.190.15 10.8.190.254; # filename "linux/pxelinux.0"; filename "lookmac/pxelinux.0";
MACs finden
nmap -sP 10.8.190.0//24 -n|grep MAC|awk '{print $3}'
Das Ergebniss des Scans wird in /etc/dhcp/dhcp.conf eingetragen.
= /etc/dhcp/dhcp.conf zurück setzen
In der /etc/dhcp/dhcp.conf folgendes Änderung durchführen.
range 10.8.190.15 10.8.190.30;
- range 10.8.190.15 10.8.190.254;
filename "linux/pxelinux.0";
- filename "lookmac/pxelinux.0";
Später mal
samba
User automatisch anlegen: Entwurf
login=<USER> pass=<PASSWRD> options="" # zum Beispiel das Homeverzeichniss, die shell (/bin/false, /bin/bash) useradd $login $options echo -ne "$pass\n$pass\n" | smbpasswd -a -s $login
Mit net rpc rights grant den Benutzern winadmin alle Rechte und joindom "SeMachineAccountPrivilege" geben.
Altetnativ:
net rpc groupmap add ntgroup="Domain Admins" unixgroup=ntadmin rid=512 type=d
Der bekannte winadmin muss alternativ der Gruppe ntadmin angehören.
Dann muss kein net rpc rights grant .... ausgeführt werden.
net rpc groupmap add ntgroup="Domain Users" unixgroup=ntuser rid=513 type=d
Table 12.1. Well-Known User Default RIDs
Samba Docu: Table 12.1. Well-Known User Default RIDs
OPSI
OPSI Installation Anleitung
opsi-getting-started-stable-en.pdf Anleitung auf English
opsi-getting-started-stable-de.pdf Anleitung auf Deutsch