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> :
  •  
    castor, pollux, sirius, regulus, wega, arktur, algol, capella, deneb, prokyon, rigel,atair, azrael, brenner, bruford, argus, devil, diskus, foxtrott, merowech, pandora, tango, thrak, ...
  • 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
 
  • 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