Vagrant,Puppet和nodejs模块:在npm模块安装上抛出错误

我有以下清单:

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

我正在使用puppetlab node.js模块:

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 

当我运行vagrant up我得到以下错误:

 [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 

起初我想也许它试图安装npm之前安装“服务”模块,所以我试着require => Package[npm]但给了相同的结果。

那么是否有人可以点亮一下为什么不安装'serve'模块呢?

这似乎是订购 – 提供商需要npm命令,你还没有。

尝试改变你的清单,如:

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

或者,可能:

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

我碰到了这个 – 它在我看来像puppetlabs-nodejs模块实际上并不接受ensure => latest ,这与文档相反。 我的问题已经修正,当我改变,以ensure => present ,代码看起来也支持特定的版本以及ensure => 1.12.4例如。