2016-04-25 2 views
1

Раньше у меня была аналогичная конфигурация для этой работы, но как только я добавил hiera в свою кукольную сборку, у меня начались проблемы. Ошибка я в настоящее время после запуска vagrant provision выглядит следующим образом:Модуль Node.js не будет переустанавливаться с помощью кукольного/бродячего

==> 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' 

В принципе, моя проблема заключается в том, что мой кукольном установить не переустановку nodejs (я удалил его ранее с помощью rm -rf puppet/modules/nodejs)

Кто-нибудь есть какие-либо идеи, как и почему кукольный теперь отказывается установить nodejs модуль марионетки в кукольный/модуль каталог?

FYI - Я установил/nodejs модуль willdurand с помощью puppet module install willdurand/nodejs

Любая помощь очень ценится - Я стучал головой о кирпичную стену на это в течение нескольких дней, теперь!

+0

кажется вы используете библиотекаря, так что вы можете подтвердить, что вы есть плагин ' vagrant-librarian-puppet' –

+0

Hi Frédéric - вы можете расширить это, пожалуйста? –

+0

Я очень привык к марионетке. Я работаю из книги «Книга кукол-3» от Джона Арундела, но большая часть работы была собрана из отрывочных примеров по всему миру и других примеров GitHub, которые я нашел, поэтому вполне возможно, что я получил свои проводы, пересеченные –

ответ

1

Puppetfile Используется марионеткой-марионеткой, чтобы установить ваш кукольный модуль, чтобы он был установлен.

Убедитесь, что плагин установлен

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

Если вы не видите плагин, убедитесь, чтобы установить его

$ vagrant plugin install vagrant-librarian-puppet 
+0

. Я считаю, что я это сделал, но я проверю, когда буду дома. Из интереса мне все еще нужно вручную устанавливать марионеточные модули, например. 'puppet module install willdurand/nodejs'? Или бродячий кукольный библиотекарь сделает это для меня? –

+0

Идея с библиотекарем заключается в том, что он сделает это за вас - вы установите все необходимые модули, и он запустит для вас макеты-куклы установки до того, как будет выполнено какое-либо обеспечение.Идя дальше, лично я по-прежнему предпочитаю иметь сценарий оболочки, который запускает макеты кукол установки, поскольку он не полагается на еще один плагин на рабочей станции моих членов команды, но это вопрос вкуса и того, как вы его используете. –

+0

Okay - I Думаю, моя проблема в том, что я установил библиотеку вручную, и она не будет ее устанавливать, потому что она считает, что она существует. Я попробую удалить его и повторить шаг обеспечения бродяг, чтобы подтвердить - спасибо –