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)
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_ –
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
Bekam es. Aber ich benutze Chef-Solo, nicht Chef-Client. Das Verhalten ist das gleiche? Eine andere Frage ist: Wann sollte ich Berksfile benutzen? –