OPSI/Installation
Inhaltsverzeichnis
- 1 Ziel
- 2 Starten mit Livesystem
- 3 Rechner mit GRML vom USB-Stick starten
- 4 Festplatten automatisch partitionierern
- 5 LVM erzeugen
- 6 Grundsystem installieren
- 7 Host bequem machen
- 8 Host vorbereiten
- 9 Server Software installieren
- 10 MACs der Client-PCs finden
- 11 samba
- 12 Anmerkungen
- 13 Scripte
- 14 Später mal
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.
Der folgende Befehl ersetzt NUR den ERSTEN Treffer des Suchstings.
sed -i '0,/00:00:00:00:00:00/s//00:1f:16:0d:7d:26/' /etc/dhcp/dhcp.conf
/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";
samba
/etc/samba/smb.conf
Bei der Installation von OPSI werden wir gefragt, ob wir Änderungen an der smb.conf zulassen wollen:
Wenn "ja", dann wurde der Block OPSI eingefügt:
Wir können aber die folgende smb.conf nutzen.
Dadurch wird samba zum Domänen-Controller im NT4-Style.
Der Name der Domäne ist OPSI-1
# # /etc/samba/smb.conf # [global] ## Browsing/Identification ### workgroup = OPSI-1 server string = %h server wins support = yes dns proxy = no name resolve order = wins lmhosts host bcast #### Networking #### interfaces = 127.0.0.0/8 eth1 bind interfaces only = yes #### Debugging/Accounting #### log file = /var/log/samba/log.%m max log size = 4096 # syslog only = no syslog = 0 panic action = /usr/share/samba/panic-action %d ####### Authentication ####### security = user encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes pam password change = no unix password sync = no passwd program = /bin/false ########## Domains ########### domain logons = yes domain master = yes local master = yes logon path = \\%N\profiles\%a\%U logon drive = Z: logon home = \\%N\%U logon script = logon.bat add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u ########## Printing ########## load printers = yes printing = cups printcap name = cups printer admin = @admin, root ################################################################################ # Domain stuff # ################################################################################ [homes] comment = Home Directories browseable = no read only = no create mask = 0640 directory mask = 0750 valid users = %S [netlogon] comment = Network Logon Service path = /local/smb/shares/netlogon/ guest ok = yes read only = yes write list = winadmin @admin [profiles] comment = Users profiles path = /local/smb/profiles/ guest ok = no read only = no browseable = no create mask = 0600 directory mask = 0700 ################################################################################ # Printing stuff # ################################################################################ [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /local/smb/printers/ browseable = no guest ok = no write list = root, @admin ################################################################################ # OPSI # ################################################################################ [opsi_depot] available = yes comment = opsi depot share (ro) path = /var/lib/opsi/depot oplocks = no follow symlinks = yes level2 oplocks = no writeable = no invalid users = root [opsi_depot_rw] available = yes comment = opsi depot share (rw) path = /var/lib/opsi/depot oplocks = no follow symlinks = yes level2 oplocks = no writeable = yes invalid users = root [opsi_images] available = yes comment = opsi ntfs images share (rw) path = /var/lib/opsi/ntfs-images oplocks = no level2 oplocks = no writeable = yes invalid users = root [opsi_config] available = yes comment = opsi config share path = /var/lib/opsi/config writeable = yes invalid users = root [opsi_workbench] available = yes comment = opsi workbench path = /home/opsiproducts writeable = yes invalid users = root create mask = 0660 directory mask = 0770 ################################################################################ # Data shares # ################################################################################ [programme] path = /local/smb/shares/programme/ comment = Programmdaten guest ok = no read only = no create mask = 0644 directory mask = 2755 force user = schueler [software] path = /local/smb/shares/software/ comment = Softwarepakete guest ok = no read only = yes
Samba-User
Das Setup bekommt drei Samba-User
- domainadmin: Dieser User darf alles,
- domainjoin: Dieser User darf PCs in die Domain aufnehmen
- domainuser: Einfacher Benutzer, keinerlei administrative Rechte
Bei der Variante groupmap wird eine unix-group einer NT-Group zugewiesen.
groupadd ntadmin
Anmerkungen
/opt/pcbin und das dazugehörige samba-share [opt_pcbin] ist eine OPSI-Altlast, die der Hersteller los werden will.
Paket winxppro ohne Verzeichnisstruktur in /opt/pcbin/install
Wenn sehr alte OPSI-Pakete eingesetzt werden, könnten wir allerdings darauf angewiesen sein.
Scripte
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
Später mal
OPSI
OPSI Installation Anleitung
opsi-getting-started-stable-en.pdf Anleitung auf English
opsi-getting-started-stable-de.pdf Anleitung auf Deutsch