Fehler durch Abhängigkeit - Datei in Verzeichnis anlegen

Eine Datei anlegen und in dieses eine Datei zu schreiben ist kein Hit. wie sieht es jedoch mit den Abhängigkeiten aus?

Puppet würfelt ja nun die Ressourcen “durcheinander” und führt diese aus, wie es “will”. Will man ein Verzeichnis und dann, im Anschluss, davon ausgehen können, dass dieses da ist, muss man Abhängigkeiten definieren. Beim Anlegen von Gruppen und Nutzer (die in der Gruppe sind) und der Abhängigkeit von Verzeichnis und Datei, erledigt Puppet dies automatisch. Wenn ich dennoch eine Abhängigkeit definiere, ist das nicht schlimm; das ergibt keinen Fehler.

Aber…

$root = '/var/tmp'

define subdir(String $path = $title) {
  file { "${::root}/${path}":
      ensure => directory,
      owner  => 'root',
      group  => 'root',
      mode   => '0644',
  }
}

class manage(String $dir, String $file) {
  subdir { $dir: }
  file { "${::root}/${dir}/${file}":
    ensure  => file,
    content => "Managed by puppet\n",
    owner   => 'root',
    group   => 'root',
    mode    => '0600',
    #before  => Subdir[$dir],
  }
}

class { 'manage':
  dir  => 'test1',
  file => 'file1.txt',
}

Bleibt nun die Abhängigkeit “before” im file-Block enthalten, folgt ein Fehler: >Error: Found 1 dependency cycle: >(File[/var/tmp/test1/file1.txt] => Subdir[test1] => File[/var/tmp/test1] => File[/var/tmp/test1/file1.txt])the ‘–graph’ option and opening the resulting ‘.dot’ file in OmniGraffle or GraphViz >Error: Failed to apply catalog: One or more resource dependency cycles detected in graph

Gut, was? Daher ist das Attribut “before” auskommentiert; denn so funktioniert es. Puppet hat offenkundig Probleme, die bereits gesetzte, implizite Abhängigkeit aufzulösen.