Puppet eine Vorlage ausgeben, einen Befehl ausführen, eine andere Vorlage für dieselbe Datei erstellen, den Befehl ausführen

461
ds2000

Ich hatte einen guten Riss dabei und kämpfe ein bisschen. Ich habe eine PHP5-Konsolendatei namens parameters.yml. Diese enthält einige Metadaten, um eine Verbindung zu einer Datenbank herzustellen, einige Befehle auszuführen und zu beenden.

Der erste Durchlauf ist perfekt, aber nach dem ersten Durchlauf muss ich parameters.yml von einer zweiten Vorlage mit anderen Metadaten aktualisieren und dann einen anderen Befehl ausführen. Puppet beschwert sich natürlich, dass:

Error: Evaluation Error: Error while evaluating a Resource Statement, Duplicate declaration

Ich habe versucht, ein Define zu erstellen und den Dateinamen als Variable zu setzen, in der Hoffnung, dass Marionette dies nur tun würde, aber leider nicht. Leider sieht es nicht so aus, als würde ich mit php console angeben, wo es die parameters.yml finden wird, mit der ich zwei Dateien ablegen kann, exec Console -parameters1.yml und dann -parameters2.yml.

Hier ist mein Code:

module.pp define module::params_file ($content_variable, $params_notify) { file { "$title": owner => 'root', group => 'root', content => $content_variable, require => File['/home/admin.tar.bz2'], notify => $params_notify, } } 

parentFile:

module::params_file { '/home/components/app/config/parameters.yml': content_variable => "template('ace/admin/parameters.pre.yml.erb'),", # params_notify => "Exec['php console --no-interaction doctrine:migrations:migrate'],", params_notify => 'notice ("ACEInfo: This is applying the post-Config"),', }    # Execute /home/components/app/console ---no-interaction doctrine:migrations:migrate exec { 'php console --no-interaction doctrine:migrations:migrate': path => "/usr/bin:/usr/sbin:/bin;/usr/bin/php;", cwd => '/home/components/admin/app', refreshonly => true, require => File['/home/components/admin/app/config/parameters.yml'], }  module::params_file { '/home/components/app/config/parameters.yml': content_variable => "template('ace/admin/parameters.post.yml.erb'),", # params_notify => "Exec['php console --no-interaction doctrine:migrations:migrate'],", params_notify => 'notice ("ACEInfo: This is applying the post-Config"),', }  # Execute /home/components/admin/app/console ---no-interaction doctrine:migrations:migrate exec { 'php console setup:insert-permissions': path => "/usr/bin:/usr/sbin:/bin;/usr/bin/php;", cwd => '/home/components/admin/app', refreshonly => true, require => File['/home/components/admin/app/config/parameters.yml'], } 

Also, um kurze Notizen zu machen

  1. Quellvorlage /home/components/app/config/(pre)parameters.yml
  2. exec ausführen
  3. Quellvorlage /home/components/app/config/(post)parameters.yml
  4. exac ausführen

Vielen Dank

0

0 Antworten auf die Frage