2012-11-11 12 views
6

Mam następujący oczywisty:Vagrant Lalek i moduł nodejs: rzucanie błąd podczas instalacji modułu npm

include nodejs 

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

Używam puppetlab node.js moduł:

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 

Po uruchomieniu vagrant up otrzymuję następujący błąd:

[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 

Na początku myślałem, że może to próbuje zainstalować moduł „służyć” przed zainstalowaniem KMP więc próbowałem require => Package[npm] ale dał ten sam wynik.

Czy ktokolwiek mógłby rzucić nieco światła na to, dlaczego nie instaluje modułu "serve"?

Odpowiedz

8

Wygląda na to, że zamówiłeś - dostawca potrzebuje polecenia npm, którego jeszcze nie masz.

spróbuj zmienić coś oczywistego jak:

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

alternatywnie, ewentualnie:

include nodejs 

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

Jak możesz wymagać pakietu ['npm']? Wygląda na to, że nie jest zdefiniowany ("nie można znaleźć zależności Package [npm]"). – Karan

+0

Możesz zrobić "require => Class ['nodejs']," –

11

natknąłem to za dobrze - wygląda mi jak puppetlabs-nodejs moduł nie faktycznie zaakceptować ensure => latest, co jest sprzeczne z dokumentacją. Mój problem został rozwiązany po zmianie na ensure => present, a kod wygląda na obsługę konkretnych wersji, na przykład z ensure => 1.12.4.

+0

Tak, to jest właściwa odpowiedź! –

+0

Istnieje żądanie otwarcia, aby to naprawić, ale obecnie nie działa jego kompilacja Travis, jeśli ktoś chce pomóc to naprawić: https://github.com/puppetlabs/puppetlabs-nodejs/pull/78 – ScottSB