使用'cookbook'将烹饪书添加到Berksfile并使用'depends'将cookbook添加到metadata.rb之间有什么区别?例如,如果我添加到metadata.rb
depends 'nginx'
Run Code Online (Sandbox Code Playgroud)
我需要使用它将它添加到Berksfile吗?
cookbook 'nginx'
Run Code Online (Sandbox Code Playgroud)
?
任何人都可以解释为什么我收到以下错误
"Vagrant:网络类型'桥接'无效.请使用有效的网络类型."
当我尝试使用以下Vagrantfile将虚拟框带到虚拟框时
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.hostname = "gitserver"
config.berkshelf.enabled = true
config.vm.box = "centos57"
config.vm.box_url = "http://xx.xx.xx.xx/os/centos-5.7-x86_64.box"
config.vm.network :bridged, :bridge => 'eth0'
# Provision VM using chef
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "mysqlserver"
end
config.vm.customize ["modifyvm", :id, "--memory", 1024]
end
Run Code Online (Sandbox Code Playgroud)
我已尝试过所有可能的桥接配置组合,但它根本不喜欢它.我找不到有关原因的任何其他信息.这里的任何帮助将非常感激.
简介 我正在学习厨师在工作中自动化服务器管理.我从这里下载了chefdk 3.0 ,现在我正在尝试用厨师制作我的第一本食谱.
重要 我在Windows环境中使用它进行测试,我确实认为它失败了,因为Windows没有iptables,但我不认为它会失败,说它找不到食谱.我尝试过使用Windows cookbook,但它确实有效.
问题 我能够创建菜谱并运行它,但我无法引用超市的依赖关系.
我尝试过两种选择:
备选方案1
我使用以下命令来创建cookbook
chef generate cookbook learn_chef_httpd
Run Code Online (Sandbox Code Playgroud)
(来自本教程)
我能够完成教程,现在我想测试引用另一本食谱,所以我选择了simple_iptables
我添加了这一行
cookbook 'simple_iptables', '~> 0.7.0'
Run Code Online (Sandbox Code Playgroud)
对于我的Berksfile,如超市中所述.
然后我将这些行添加到我的default.rb文件中:
include_recipe 'simple_iptables'
# Allow HTTP, HTTPS
simple_iptables_rule "http" do
rule [ "--proto tcp --dport 80",
"--proto tcp --dport 443" ]
jump "ACCEPT"
end
Run Code Online (Sandbox Code Playgroud)
我使用以下方法运行食谱:
chef-client --local-mode --runlist 'recipe[learn_chef_httpd]'
Run Code Online (Sandbox Code Playgroud)
问题是厨师找不到食谱
Chef::Exceptions::CookbookNotFound
----------------------------------
Cookbook simple_iptables not found. If you're loading simple_iptables from anoth er cookbook, make sure you configure the …Run Code Online (Sandbox Code Playgroud) 我是厨师的新手,遇到了berkshelf和chef-client的问题.我想拥有自己的食谱与依赖并应用它.我最初的食谱看起来像这样:
.
??? Berksfile
??? Berksfile.lock
??? chefignore
??? client.rb
??? Gemfile
??? Gemfile.lock
??? metadata.rb
??? README.md
??? recipes
??? default.rb
#./Berksfile
source 'https://supermarket.getchef.com'
metadata
cookbook 'znc'
#./client.rb
cookbook_path '~/.berkshelf/cookbooks'
Run Code Online (Sandbox Code Playgroud)
当我经营sudo bundle exec chef-client -z -o znc --config=client.rb厨师时,客户找不到食谱:
Starting Chef Client, version 11.16.4
[2014-10-25T15:34:59+02:00] WARN: Run List override has been provided.
[2014-10-25T15:34:59+02:00] WARN: Original Run List: []
[2014-10-25T15:34:59+02:00] WARN: Overridden Run List: [recipe[znc]]
resolving cookbooks for run list: ["znc"]
================================================================================
Error Resolving Cookbooks for Run List:
================================================================================ …Run Code Online (Sandbox Code Playgroud) 我正在使用流浪汉+厨师.我的厨师食谱非常完美.然后我安装了vagrant-berkshelf插件,从那一刻起我无法使用自己的烹饪书.Berkshelf覆盖了cookbook目录,当我使用它时,厨师看不到我的食谱.我的配置是这样的:
config.berkshelf.enabled = true
config.vm.provision :chef_solo do |chef|
chef.add_recipe "qbaka-frontend"
end
Run Code Online (Sandbox Code Playgroud)
使用此配置,Chef只能使用指定的cookbook,Berksfile但无法在cookbooks目录中查看我的cookbook .
我如何与我的&Berkshelf的烹饪书同时工作?
根据"berks help update",该命令应该是:
"更新Berksfile中指定的cookbook(和依赖项)"
(是的......这就是它所说的!).
但究竟是什么意思呢?
这会如何随着Berksfile中不同类型的"cookbook"规范而变化?
我试图有条件地运行vagrant-berkshelf插件.默认情况下,vagrant up即使当前的流浪者操作不是配置运行,启用插件也会导致Berkshelf在每一个上解析和供应烹饪书(这是一个相对昂贵的操作).例如,我希望Berkshelf在我运行时运行:
vagrant up 第一次,或 vagrant reload --provision.来源暗示应该有一种方法来查询Vagrant本身以确定它是否是供应运行.具体来说,应该有一种方法可以挂钩@env[:provision_enabled]或者vagrant.actions.vm.provision,但我无法弄清楚如何在Vagrantfile本身内执行此操作.
这个方法实际上是绑定到Vagrant对象吗?如果没有,那么在哪里?我怎么能反省呢?
作为一种解决方法,我尝试在Chef块中移动Berkshelf插件,意图它只在Chef配置器执行时运行.例如:
Vagrant.configure(2) do |config|
config.berkshelf.enabled = false
config.vm.provision :chef_solo do |chef|
config.berkshelf.enabled = true
end
end
Run Code Online (Sandbox Code Playgroud)
然而,Berkshelf仍然运行每次我vagrant up还是vagrant reload,这是不期望的行为.每次运行时,烹饪书仍然可以解决和销售.考虑以下省略的输出:
==>默认:更新Vagrant的Berkshelf ...
==>默认:解决cookbook依赖...
==>默认:使用karaf(0.2.1)
==>默认:将karaf(0.2.1)提供给/ Users /富/ .berkshelf /游民,berkshelf /货架/ berkshelf20160215-19428-unzcx1默认/ karaf
有一个模糊的相关问题,其中接受的答案是一个丑陋的黑客,它寻找.vagrant/machines/default/virtualbox/action_provision或类似的存在,但它不是这个问题的完全重复,因为它没有解决如何以编程方式通过运行时对象或API Vagrant公开查询Vagrant的内部状态.它可能包含基于文件系统信号量的实用(如果是kludgey)答案,但它没有回答我实际问的问题.
我创建了一个名为的食谱foo,并希望与之配合使用Berkshelf.
我写的是这样的Berksfile:
cookbook 'foo', git: 'https://bitbucket.org/ironsand/cookbook-foo.git'
Run Code Online (Sandbox Code Playgroud)
然后将cookbook提供给cookbooks目录,但它失败并出现如下错误:
berks vendor cookbooks
Resolving cookbook dependencies...
Fetching 'foo' from https://bitbucket.org/ironsand/cookbook-foo.git (at master)
Username for 'https://bitbucket.org':
Run Code Online (Sandbox Code Playgroud)
如何告诉ssh用户名和密钥Berkshelf?当然我的用户有权访问git存储库.
我已经安装了厨师客户端12.0.3,除此之外我已经安装了chef-dk版本,0.3.5但为什么chef-dk正在安装厨师客户端版本Chef: 11.18.0.rc.1
错误:
E, [2015-01-08T04:58:36.707534 #22533] ERROR -- : Ridley::Errors::ClientError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
E, [2015-01-08T04:58:36.708931 #22533] ERROR -- : /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/celluloid-0.16.0/lib/celluloid/responses.rb:29:in `value'
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/celluloid-0.16.0/lib/celluloid/calls.rb:92:in `value'
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/celluloid-0.16.0/lib/celluloid/proxies/sync_proxy.rb:33:in `method_missing'
/opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/celluloid-0.16.0/lib/celluloid/proxies/cell_proxy.rb:17:in `_send_
There was an error connecting to the Chef Server
Run Code Online (Sandbox Code Playgroud) 我正在使用berkshelf管理食谱,厨师11.6.2和nginx cookbook v 2.0.0
我从源代码编译nginx的设置:
set[:nginx][:source][:modules] = ["http_gzip_static_module", "http_ssl_module"]
Run Code Online (Sandbox Code Playgroud)
配置给了我错误:
Cookbook http_gzip_static_module not found. If you're loading http_gzip_static_module from another cookbook, make sure you configure the dependency in your metadata
Run Code Online (Sandbox Code Playgroud)
这是nginx cookbook的一个bug,你是如何解决的?一切都适用于nginx cookbook v 1.7.0
非常感谢.
berkshelf ×10
chef-infra ×8
vagrant ×3
berksfile ×2
chef-recipe ×1
chef-solo ×1
chefdk ×1
cookbook ×1
deployment ×1
git ×1
nginx ×1
ruby ×1
virtualbox ×1