Node.js模块不会使用puppet / vagrant

时间:2016-04-25 05:51:28

标签: vagrant puppet librarian-puppet

以前我有一个类似于这个工作的配置,但是一旦我将hiera添加到我的木偶构建中,我就开始遇到问题。运行vagrant provision后我当前遇到的错误如下:

==> default: [vagrant-hostsupdater] Checking for host entries
==> default: [vagrant-hostsupdater]   found entry for: 192.168.33.10 local.mysite
==> default: Configuring cache buckets...
==> default: Running provisioner: puppet...
==> default: Running Puppet with app.pp...
==> default: stdin: is not a tty
==> default: Error: Could not find class nodejs for local.mysite on node local.mysite
==> default: Error: Could not find class nodejs for local.mysite on node local.mysite
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.

我的流浪汉配置是:

# -*- mode: ruby -*-
# vi: set ft=ruby :
require "yaml"

# Load yaml configuration
config_file = "#{File.dirname(__FILE__)}/config/vm_config.yml"
default_config_file = "#{File.dirname(__FILE__)}/config/.vm_config_default.yml"

vm_external_config = YAML.load_file(config_file)

# Configure Vagrant
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/trusty64"

  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"

  config.vm.network :private_network, ip: vm_external_config["ip"]
  config.vm.hostname = vm_external_config["hostname"]
  config.vm.network "forwarded_port", guest: vm_external_config["port"], host: 2368

  config.vm.synced_folder vm_external_config["ghost_path"], "/var/www/mysite.com", :nfs => true

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", vm_external_config["memory"]]
  end

  config.cache.scope = :box

  config.librarian_puppet.placeholder_filename = ".gitkeep"

  config.vm.provision :puppet do |puppet|
    puppet.hiera_config_path = "puppet/hiera/hiera.yaml"
    puppet.manifests_path = "puppet/manifests"
    puppet.manifest_file = "app.pp"
    puppet.module_path = "puppet/modules"
    puppet.facter = {
        "environment" => ENV['ENV'] ? ENV['ENV'] : 'local'
    }
  end
end

我的源代码树看起来是这样的(除了自定义博客模块和hiera配置的文件夹结构之外,其中大部分内容都不相关):

├── Vagrantfile
├── config
│   └── vm_config.yml
└── puppet
    ├── Puppetfile
    ├── hiera
    │   ├── common.yaml
    │   ├── hiera.yaml
    │   ├── local
    │   │   └── site.yaml
    │   └── production
    │       └── site.yaml
    ├── manifests
    │   └── app.pp
    └── modules
        ├── blog
        │   └── manifests
        │       └── app.pp
        ├── ghost
        │   └── manifests
        │       └── app.pp
        ├── init.d
        │   └── files
        │       ├── WebhookServer
        │       └── ghost
        ├── mailgunner
        ├── nginx
        │   ├── files
        │   │   ├── local
        │   │   │   ├── mysite.com
        │   │   │   └── mail.mysite.com
        │   │   └── production
        │   │       ├── mysite.com
        │   │       └── mail.mysite.com
        │   └── manifests
        │       └── server.pp
        ├── tools
        │   ├── files
        │   │   ├── local
        │   │   │   ├── backup.sh
        │   │   │   ├── ghostsitemap.sh
        │   │   │   └── init-mysite.sh
        │   │   └── production
        │   │       ├── backup.sh
        │   │       ├── ghostsitemap.sh
        │   │       └── init-mysite.sh
        │   └── manifests
        │       └── install.pp
        └── webhooks
            ├── files
            │   ├── local
            │   │   └── init-webhook.sh
            │   ├── production
            │   │   └── init-webhook.sh
            │   ├── webhook.sh
            │   └── webhooks.rb
            └── manifests
                └── install.pp

hiera.yaml:

---
:backends:
  - yaml

:yaml:
  :datadir: /vagrant/hieradata

:hierarchy:
  - "%{::environment}/site
  - common

common.yaml

--
classes:
  - site

本地/ site.yaml

--
:site:
  environment: local
  name: local.mysite
  mailserver: local.mail.mysite

博客/舱单/ app.pp

class blog::app {

  class { 'nodejs':
    version => 'v0.10.25',
  } ->
  package { 'pm2':
    ensure => present,
    provider => 'npm',
    require => Class['nodejs'],
  }
}

Puppetfile

forge 'https://forgeapi.puppetlabs.com'

mod 'willdurand/nodejs', '1.9.4'

基本上,我的问题是我的puppet安装没有重新安装nodejs(之前我使用rm -rf puppet/modules/nodejs删除了它)

有没有人有任何想法如何或为什么木偶现在拒绝在puppet / modules目录中安装nodejs puppet模块?

仅供参考 - 我使用puppet module install willdurand/nodejs

安装了willdurand / nodejs模块

任何帮助都非常感激 - 我已经在这上面撞了一堵砖墙了几天了!

1 个答案:

答案 0 :(得分:1)

vagrant-librarian-puppet使用Puppetfile来安装你的木偶模块,以便它安装。

确保已安装插件

$ vagrant plugin list
vagrant-librarian-puppet (0.9.2)
....

如果您没有看到插件,请确保安装

$ vagrant plugin install vagrant-librarian-puppet