Intro Ich lerne Chef, um das Server-Management bei der Arbeit zu automatisieren. Ich heruntergeladen Chefdk 3.0 von here und jetzt versuche ich mein erstes Kochbuch mit Koch zu bauen.Warum kann Koch meine Kochbücher nicht auflösen?
Wichtige ich dies für Testzwecke in einer Windows-Umgebung verwenden, ich erwarte, dass es zum Scheitern verurteilt, da Windows nicht iptables, aber ich erwarte nicht, es zu sagen scheitern, dass es nicht das Kochbuch finden . Ich habe versucht mit Windows cookbook und es funktioniert.
Das Problem Ich bin in der Lage, das Kochbuch zu erstellen und es auszuführen, aber ich bin nicht in der Lage Abhängigkeiten von Supermarkt verweisen.
Ich habe zwei Alternativen versucht:
Alternative 1
ich den folgenden Befehl ein, um das Kochbuch
chef generate cookbook learn_chef_httpd
(von this tutorial)
Ich war in der Lage zu erstellen Vervollständige das Tutorial und nun würde ich gerne einen Verweis auf ein anderes Kochbuch testen, also wählte ich simple_iptables
Ich habe diese Zeile
cookbook 'simple_iptables', '~> 0.7.0'
Zu meiner Berksfile, wie im Supermarkt beschrieben.
Dann habe ich diese Zeilen in meine default.rb Datei:
include_recipe 'simple_iptables'
# Allow HTTP, HTTPS
simple_iptables_rule "http" do
rule [ "--proto tcp --dport 80",
"--proto tcp --dport 443" ]
jump "ACCEPT"
end
Und ich laufe das Kochbuch mit:
chef-client --local-mode --runlist 'recipe[learn_chef_httpd]'
Das Problem ist, dass Chef nicht das Kochbuch findet
Ich habe versucht, es zu den Metadaten hinzufügen:
depends 'simple_iptables', '~> 0.7.0'
Aber ich immer noch einen Fehler:
Error Resolving Cookbooks for Run List:
Missing Cookbooks:
No such cookbook: simple_iptables
Alternative 2
ich immer noch versuche, so zu machen, arbeitet ich auch versucht, es "der berkshelf Weg" zu machen, so dass ich erstellt ein neues Kochbuch.
berks cookbook test
Und fügte ich diese Zeile
cookbook 'simple_iptables', '~> 0.7.0'
Zu meiner Berksfile, wie im Supermarkt beschrieben.
Dann habe ich diese Zeilen in meine default.rb Datei:
include_recipe 'simple_iptables'
# Allow HTTP, HTTPS
simple_iptables_rule "http" do
rule [ "--proto tcp --dport 80",
"--proto tcp --dport 443" ]
jump "ACCEPT"
end
Ausgeführt berks installieren:
berks install
und es lief:
chef-client --local-mode --runlist 'recipe[test]'
Der gleiche Fehler zurück kam
Chef::Exceptions::CookbookNotFound
----------------------------------
Cookbook simple_iptables not found. If you're loading simple_iptables from anoth er cookbook, make sure you configure the dependency in your metadata
Ich habe versucht, es auf die Metadaten hinzufügen:
depends 'simple_iptables', '~> 0.7.0'
Aber ich immer noch einen Fehler:
Error Resolving Cookbooks for Run List:
Missing Cookbooks:
No such cookbook: simple_iptables
ich im ~/berkshelf Ordner gesucht und die Kochbücher sind da.
** Alternative 3 **
ich eine CentOS 6.5 EC2-Instanz auf Amazon, installierte Ruby-2.1.3 und Chef gestartet. erstellt einen ~/Koch-repo/Kochbücher Ordner
ich ein Kochbuch mit berkshelf erstellt, lief
bundle install
die Referenz/code wie in den anderen alterantives hinzugefügt dann
berks install
und lief genauso, wie ich es letztes Mal gemacht habe.
Ich habe die gleichen Probleme.
Was fehlt mir? Was muss ich tun, damit es funktioniert?
Handelt es sich um ‚diese Zeilen‘, um Ihre berksfile oder zu Ihrem default.rb Rezept? –
Zum default.rb Rezept – JSBach
Ich mag falsch sein, aber Sie haben nicht erwähnt, eine 'Berks-Installation' nach dem Ändern der Berksfile zu tun. Sie können auch den berks-Anbieter verwenden, um ein Verzeichnis mit allen benötigten Kochbüchern zu erstellen und den repo-Pfad des Chef-Clients auf dieses Verzeichnis zu verweisen. Alles in allem sind Ihre Kochbücher auf Ihrer Festplatte, aber nicht irgendwo Koch-Null-Look. – Tensibai