Bei Puppet-Schulungen werde ich recht häufig gefragt, ob es auch möglich ist, Verzeichnisse rekursiv zu erzeugen und zu verwalten?
Ja, die Existenz und damit natürlich auch das Anlegen kann man sicherstellen. Hierzu kürz ein Beispiel:
Ich möchte für mein Web-Hosting Geschäft, jedem Kunden für seinen virtuellen Host die gleiche Verzeichnisstruktur anlegen.

kunde/
├── ftdocs
|   ├── Welcome.txt
│   ├── incoming
│   └── pub
├── htdocs
├── logs
└── stats

Zuerst legt man sich diese Verzeichnisstruktur unter ./files in seinem Modul webhosting an. Der Puppet-Code kann dann wie folgt aussehen:

file { "/var/www/${kunde}":
    ensure  => directory,
    owner   => $kunde,
    group   => $kunde,
    mode    => '0644',
    recurse => true,
    source  => 'puppet:///modules/webhosting/kunde/';
}

Puppet legt nun bzw. kontrolliert die Existenz dieser Struktur, inklusive der Datei Welcome.txt. Da Puppet für Verzeichnisse die Berechtigungen automatisch anpasst, also z.B. aus 0644 ein 0755 macht, ist damit in unserem Bespiel auch ein Wechseln in die Verzeichnisse möglich.
Einschränkend ist hier natürlich, das alle Unterverzeichnisse und auch die Dateien, den selben Owner, die selbe Gruppe und Berechtigungen haben.

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.