Administration von Unix-Rechnern mit cfengine
Entwurf einer System-Konfiguration
Annahmen und Vorüberlegungen
- ohne Einschränkung der Allgemeingültigkeit auf eine BS-Plattform (RedHat Linux 5.x) beschränkt
- nur Konfigurationsfiles administrieren, die "lebensnotwendig" sind bzw.nach der Installation modifiziert werden (müssen)
- Konfigurationsfiles sind Systemfiles
-
- die individuelle Eigenschaften eines Hosts beschreiben
- die einen installierten Host an lokale Bedingungen anpassen oder funktionell erweitern
- deren Konsistenz für die korrekte Funktionsweise des Hosts notwendig ist
- Beispiele:
/etc/network
/etc/inetd.conf
/etc/rc.d/init.d/afs(Symlink:/etc/rc.d/rc3.d/S35afs)
/etc/printcap
/etc/hosts.allow
/etc/login.access
/etc/resolv.conf
/bin/login
/usr/sbin/sendmail
/usr/X11R6/bin/startx - Prototypen (Master) der Konfigurationsfiles werden zentral im AFS verwaltet, wo für alle Hosts zu jedem Zeitpunkt Lesezugriff besteht
- Änderungen in Konfigurationsfiles erfolgen grundsätzlich indirekt, d.h. durch Modifikation der entsprechenden Master-Konfigurationsfiles
- Abgleich der entsprechenden Host-Konfigurationsfiles erfolgt per cfengine (MD5, Fileattribute, Link-Strukturen)
Entwurf einer Klassenhierarchie
- Ansatz: Aufbau einer Klassenhierarchie entsprechend der Funktionalität und spezifischer Eigenschaften der Hosts
- Klasse <hostname> :
-
- Klassen bzgl. Zugehörigkeit zu einer Administrationsdomäne (bzgl. der Hosts disjunkt):
-
DOM_MB3, DOM_PHIL, DOM_PHYSIK, DOM_URZ, ...
- Klassen bzgl. OS-Distribution (bzgl. Hosts disjunkt):
-
RH42, RH51,RH52,...
- Klassen bzgl. Funktionalität (bzgl. der Hosts in der Regel disjunkt):
-
PC_Pool, PhysikPool, PhilPriv, UrzPriv, CpuServer, SambaSerer, CdromServer, CdromBrenner, SquidServer,...
- Jeder Host gehört im Regelfall zu genau einer dieser Klassen
- Klassen bzgl. bestimmter Eigenschaften:
-
SubNetz200, SubNetz072, SubNetz16, ... X11Systems, NIS, NoNIS, Staroffice
- Jeder Host gehört zu genau einer Subnetzklasse
- Hosts der Klassen PC_Pool, UrzPriv gehören zur Klasse X11Systems
- Host ist NIS-Client oder nicht (NoNIS)
- generische Klasse any für Eigenschaften, die allen Hosts gemeinsam sind
Aufbau der Verzeichnishierarchie im AFS
- für jede Klasse wird eine Filesystemstruktur aufgespannt (Source-Root) mit den Master-Konfigurationsfiles, die diese Klasse von denen anderen Klassen unterscheiden (d.h. die für alle Hosts, die zur Klasse gehören, identisch sind)
-
- Für jedes Master-Konfigurationsfile gilt es, die allgemeingültigste Klasse zu finden, in die es eingeordnet werden kann, identische Master-Konfigurationsfiles sind zu vermeiden
- Master-Konfigurationsfiles für Klasse(n) <hostname> z.B.
/etc/hosts
/etc/ssh_host_key (verschlüsselt!)
- Master-Konfigurationsfiles für Administartionsdomäne, z.B. DOM_PHYSIK
-
/etc/amd.conf
/etc/amd.physik
/etc/sendmail.cf
/etc/rc.d/init.d/amd.init
- Masterkonfigurationsfiles für OS-Distributionen, z.B. RH51 (RH52)
-
/etc/pam.d/ftp
/etc/pam.d/login
/etc/pam.d/xdm
/etc/pamd.d/xlock
/usr/sbin/in.telnetd
/lib/security/pam_login_access.so
/lib/security/pam_linux_afs.so
/lib/security/pam_fbtab.so
/usr/local/etc/sshd
/usr/share/locale/de/*
- Master-Konfigurationsfiles für Subnetz-Klassen, z.B.
- /etc/resolv.conf
/etc/yp.conf (nur, falls nis-Client)
- Master-Konfigurationsfiles für Klasse PhysikPool z.B.
- /etc/login.access
/etc/lilo.conf
/etc/fbtab
/etc/crontab
/etc/hosts.allow
/etc/fstab.save
/etc/X11/ XF86Config
/etc/cron.daily/autorpm
/boot/vmlinuz-2.0.35-2.smp
- analog Master-Konfigurationsfiles für Klassen PC_Pool, UrzPriv, CpuServer, ... z.B.
/etc/hosts.allow
/etc/login.access
...
- Master-Konfigurationsfiles für Klasse any ,z.B.
/etc/ntp.conf
/etc/nntpserver
/etc/logrotate.conf
/etc/shells
/etc/cron.cfengine/cfengine.hourly
/etc/cron.daily/cfengine.daily
/etc/cron.weekly/cfengine.weekly
/etc/cron.monthly/cfengine.monthly
/etc/rc.d/init.d/cf.startup
/etc/rc.d/init.d/xntpd
/etc/logrotate.d/syslog
/usr/bin/telnet
/usr/local/bin/cfengine
/usr/local/bin/priv
/usr/local/bin/sys_update
/usr/sbin/sendmail
/etc/nntpserver
/etc/logrotate.conf
/etc/shells
/etc/cron.cfengine/cfengine.hourly
/etc/cron.daily/cfengine.daily
/etc/cron.weekly/cfengine.weekly
/etc/cron.monthly/cfengine.monthly
/etc/rc.d/init.d/cf.startup
/etc/rc.d/init.d/xntpd
/etc/logrotate.d/syslog
/usr/bin/telnet
/usr/local/bin/cfengine
/usr/local/bin/priv
/usr/local/bin/sys_update
/usr/sbin/sendmail
- außerdem in geeignete Verzeichnishierarchien eingeordnet: Kopien von Files, deren Reproduzierbarkeit kritisch ist, z.B. nach einem Plattencrash
-
/etc/lilo.conf
/etc/fstab
/boot/vmlinuz
/usr/src/linux/.config
- Log-Fileverzeichnis für jeden Host <hostname> als "Ablage" für Informationen zu einem Host
-
- allgemeine Informationen (Funktion des Hosts, Standort, Admin-Verantwortung, ...)
- rotierte Log-Files (/var/log/messages, /var/log/demsg)
- cfengine-Logs
- HW-Infos, System-Infos, Infos über rpm-Pakete
01. Dezember 1997 , überarbeitet am 02.12.1998
Matthias Clauß, TU Chemnitz, URZ