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
Später mal
MACs finden
Um die Liste zu füllen, könnte folgender Befehl funktionieren:
nmap -sP 10.8.190.0/24 -n|grep MAC|awk '{print $3}'
Könnte bedeutet, dass noch nicht klar ist, ab wann ein PC auf ein Ping antwortet.
Reicht es, dass er "an" ist? Oder muss ein BS laufen?
Erstes Fazit nach kurzem Test: Nicht gut.
Lösung: Alle Clients werden kurz mit einem Miminalsystem per tftp gebootet.
Das kann auf Ping reagieren.
Freedos ist ein guter Kandidat, superklein. Diskettenimage ist knapp über 200 k
FreeDOS PXE-Boot
Für pxelinux.0 und memdisk
apt-get install syslinux
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