2016-04-16 5 views
1

Ich versuche, Django zu installieren und ein Github-Projekt mit einem Marionettenskript zu klonen. Ich verwende Module wie folgt:Fehler beim Klonen Projekt mit Puppe auf Vagabund

  • Dateien
    • (leeres Verzeichnis)
  • manifestiert
    • nodes.pp
    • web.pp
  • mo Dules
    • django
      • manifestiert
        • init.pp
      • Dateien
        • (leeres Verzeichnis)
    • git
      • manifestiert
        • init.pp
      • Dateien
        • (leeres Verzeichnis)
    • Postgres

Im web.pp Datei Ich habe:

import ' nodes.pp ' 

In nodes.pp Datei Ich habe:

node default { 
     include postgres 
     include git 
     include django 
    } 

In init. pp Datei im Manifest-Ordner, der ist im Inneren des git Ordner ich den folgenden Code haben:

class git{ 
    include git::install 
} 

class git::install{ 
    package { 'git:': 
     ensure => present 
    } 
} 

define git::clone ($path, $dir){ 
    exec { "clone-$name-$path": 
     command => "/usr/bin/git clone [email protected]:$name $path/$dir", 
     creates => "$path/$dir", 
     require => [Class["git"], File[$path]], 
    } 
} 

In init.pp Datei innerhalb des Manifests Ordner, der im Inneren des django Ordner ich den folgenden Code haben:

class django{ 
    include django::install, django::clone, django::environment 
} 

class django::install { 
    package { [ "python", "python-dev", "python-virtualenv", "python-pip", 
       "python-psycopg2", "python-imaging"]: 
     ensure => present, 
    } 
} 

class django::clone { 
    git::clone { 'My GitHub repository name': 
     path => '/home/vagrant/', 
     dir => 'django', 
    } 
} 

define django::virtualenv($path){ 
    exec { "create-ve-$path": 
     command => "/usr/bin/virtualenv -q $name", 
     cwd => $path, 
     creates => "$path/$name", 
     require => [Class["django::install"]], 
    } 
} 

class django::environment { 
    django::virtualenv{ 've': 
     path => '/usr/local/app', 
    } 
} 

Um die Skripte Puppe betreibe ich verwenden Sie den Befehl:

sudo puppet apply --modulepath=/vagrant/modules /vagrant/manifests/web.pp 

und führen Sie diesen Befehl, den ich die bekommen folgende Fehler:

Could not find dependency File[/home/vagrant/] for 
Exec[clone-My GitHub repository name-/home/vagrant/] at 
/vagrant/modules/git/manifests/init.pp:16 

Hinweis: wo der Name 'My GitHub-Repository Name' ist, habe ich den Namen meines gith ub-Repository korrekt.

Was ist falsch und wie löse ich dieses Problem?

Antwort

1

in Ihrer define git :: clone haben Sie sichergestellt, dass die Dateiressource für $ path deklarieren?

sollten Sie haben:

file { $path: ensure => directory } 

Sie können nicht benötigen eine Ressource, die Sie nicht speziell

delcared