6

私は次のマニフェストを持っています:

include nodejs

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

私はpuppetlabnode.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をインストールする前に「serve」モジュールをインストールしようとしているのではないかと思ったので、試しrequire => Package[npm]ましたが、同じ結果になりました。

では、なぜ「serve」モジュールがインストールされていないのか、誰かが光を当てることができるでしょうか?

4

2 に答える 2

11

私もこれに出くわしました-puppetlabs-nodejsモジュールが実際には受け入れないように見えますがensure => latest、これはドキュメントに反しています。に変更したときに問題が修正されました。たとえばensure => present、コードは特定のバージョンもサポートするように見えますensure => 1.12.4

于 2013-05-14T21:14:09.937 に答える
8

注文しているようです。プロバイダーには、npmまだ持っていないコマンドが必要です。

マニフェストを次のようなものに変更してみてください。

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

あるいは、おそらく:

include nodejs

package { 'serve':
  ensure => present,
  provider => 'npm',
  require => Package['npm'],
}
于 2012-11-11T14:53:42.727 に答える