2017-11-20 8 views
0

erstellen Ich versuche, eine Ubuntu-Maschine mit Vagrant und Chef Solo zu erstellen. Also habe ich eine einfache Vagrantfile und ein einfaches Rezept erstellt, nur um es zu testen. Aber ich bin vor mit der folgenden Fehlermeldung:Ich kann keine Maschine mit Vagrant und Chef

Rezept kompilieren Fehler in /tmp/vagrant-chef/71c53eb7bf7c3d22bf315b2652372569/cookbooks/teste/recipes/default.rb

==> default: NoMethodError ==> default: undefined Methode `[]‘ für nil: NilClass

==> Standard: Kochbuch Trace: ==> Standard:/tmp/Vagabund-Koch/f7fdc686ea08792157234990dd67a042/Kochbücher/apt/Rezepte/default.rb: 33: in from_file ' ==> default: /tmp/vagrant-chef/71c53eb7bf7c3d22bf315b2652372569/cookbooks/teste/recipes/default.rb:3:in `from_file‘

==> default: Relevante Datei-Inhalt: ==> Standard:/tmp/Vagabund-Koch/f7fdc686ea08792157234990dd67a042/Kochbücher/apt/Rezepte/default.rb:

==> default: 26: Datei '/ var/lib/apt/periodic/update-success-Stempel' do
==> Standard: 27: Eigentümer 'root'
==> default: 28: Gruppe 'root'
==> default: 29: Aktion: nichts
==> default: 30: Ende
==> default: 31:= 0 = 0 = 0 = 0 = 0 = 0 = 0 = 0 == Default: 32: # Wenn compile_time_update ausgeführt wird apt-get update zur Kompilierzeit ==> default: 33 >> if node ['apt'] ['compile_time_update'] & & apt_installed?
==> default: 34: apt_update ('Kompilierzeit') DO
==> default: 35: frequency node [ 'apt'] [ 'periodic_update_min_delay']
==> default: 36: ignore_failure wahre
==> default: 37: end.run_action (: periodisch)
==> default: 38: end
==> default: 39:
==> default: 40: apt_update 'periodische' do
==> Standard: 41: Frequenzknoten ['apt'] ['periodic_update_min_delay'] ==> Standard: 42: Ende


Unten befinden sich die Dateien:

Vagrantfile

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

    config.berkshelf.enabled = true 
    config.berkshelf.berksfile_path = "./cookbooks/teste/Berksfile" 

    config.vm.provision "chef_solo" do |chef| 
    chef.install = false 
    chef.add_recipe "teste" 
    end 
end 

Berksfile

source 'https://supermarket.chef.io' 

metadata 

cookbook 'apt' 
cookbook 'java' 

default.rb

include_recipe 'apt::default' 
include_recipe 'java::default' 

Attribute.rb

default['java']['install_flavor'] = 'openjdk' 
default['java']['jdk_version'] = '8' 
default['java']['accept_license_agreement'] = true 

metadata.rb

name 'teste' 
maintainer 'The Authors' 
maintainer_email '[email protected]' 
license 'All Rights Reserved' 
description 'Installs/Configures teste' 
long_description 'Installs/Configures teste' 
version '0.1.0' 
chef_version '>= 12.1' if respond_to?(:chef_version) 

Über meine Konfiguration:

Chef Development Kit Version: 2.3.4 
chef-client version: 13.4.19 
berks version: 6.3.1 
kitchen version: 1.17.0 
inspec version: 1.36.1 

Vagrant 2.0.1 

macOS Sierra (10.12.6) 

Antwort

0

Sie müssen depends 'apt' und depends 'java' auf die Metadaten Ihrer Kochbuch hinzuzufügen. Dann entfernen Sie die Zeilen in der Berksdatei, da sie redundant sind.

+0

Warum sollte ich es ändern? Es sollte für beide Wege (Metadata oder Berksfile) funktionieren, oder? Wie auch immer, nach den Änderungen sehe ich ein neues Problem: _uninitialized constant Chef :: Mixin :: HomebrewUser_ –

+0

Nein, es funktioniert nur in eine Richtung. chef-client kennt nur Abhängigkeiten von den Metadaten, so dass das apt-Kochbuch nicht geladen wurde, obwohl es verfügbar war, weil Berkshelf es heruntergeladen hatte. Bitte starten Sie eine neue Frage für ein neues Problem oder fragen Sie in Slack. – coderanger

+0

Bekam es. Aber ich benutze Chef-Solo, nicht Chef-Client. Das Verhalten ist das gleiche? Eine andere Frage ist: Wann sollte ich Berksfile benutzen? –

Verwandte Themen