2012-11-11 5 views
6

Ich habe folgendes Manifest:Vagrant, Puppen- und NodeJS Modul: werfen Fehler auf npm Modulinstallation

include nodejs 

package { 'serve': 
    ensure => latest, 
    provider => 'npm', 
} 

ich die puppetlab bin mit node.js Modul:

http://forge.puppetlabs.com/puppetlabs/nodejs

Vagrantfile:

Vagrant::Config.run do |config| 
    config.vm.box = "precise64" 
    config.vm.box_url = "http://files.vagrantup.com/precise64.box" 

    config.vm.provision :puppet do |puppet| 
    puppet.manifests_path = '~/work/environments/default/' 
    puppet.manifest_file = 'site.pp' 
    puppet.module_path = '~/work/environments/default/modules' 
    end 

end 

Als ich vagrant up betreibe ich bin der immer folgende Fehlermeldung:

[default] Running provisioner: Vagrant::Provisioners::Puppet... 
[default] Running Puppet with /tmp/vagrant-puppet/manifests/site.pp... 
stdin: is not a tty 
err: /Stage[main]//Package[serve]/ensure: change from absent to latest failed: Could not update: Got nil value for ensure at /tmp/vagrant-puppet/manifests/site.pp:6 
notice: /Stage[main]/Nodejs/Package[nodejs]/ensure: ensure changed 'purged' to 'present' 
notice: /Stage[main]/Nodejs/Package[npm]/ensure: ensure changed 'purged' to 'present' 
notice: Finished catalog run in 14.89 seconds 

Zuerst dachte ich, vielleicht installierte es versucht, das ‚dienen‘ Modul vor npm zu installieren, so habe ich versucht, require => Package[npm] aber das gab das gleiche Ergebnis.

Könnte irgendjemand etwas Licht in die Sache werfen, warum es nicht das "Serve" Modul installiert?

Antwort

8

Es scheint zu bestellen - der Provider benötigt den npm Befehl, den Sie noch nicht haben.

Versuchen Sie offenbar etwas zu ändern wie:

class { 'nodejs': } -> package { 'serve': ensure => present, provider => 'npm', } 

alternativ vielleicht:

include nodejs 

package { 'serve': 
    ensure => present, 
    provider => 'npm', 
    require => Package['npm'], 
} 
+0

Wie können Sie das Paket ['npm'] anfordern? Es scheint nicht definiert zu sein ("konnte das Abhängigkeitspaket [npm] nicht finden") – Karan

+0

Sie können tun "require => Class ['nodejs']," –

11

ich über das so gut lief - es sieht für mich wie die Puppet Labs-NodeJS Modul nicht tatsächlich akzeptieren ensure => latest, die im Gegensatz zu der Dokumentation ist. Mein Problem wurde behoben, als ich zu ensure => present wechselte, und der Code sieht auch vor, spezifische Versionen sowie ensure => 1.12.4 zum Beispiel zu unterstützen.

+0

Ja, das ist die richtige Antwort! –

+0

Es gibt eine Pull-Anfrage, die offen ist, um das Problem zu beheben, aber es scheitert derzeit an seinem Travis-Build, wenn jemand helfen möchte, dies zu korrigieren: https://github.com/puppetlabs/puppetlabs-nodejs/pull/78 – ScottSB