[英]chef-solo run list not expanding to include dependencies with vagrant and berkshelf
我正在将流浪汉与Chef-solo和berkshelf一起使用。 老实说,我对这三个人都是陌生的,所以可能比我在这里所能承受的要多得多,但我正在尝试制作一个非常简单的食谱,用于安装postgres数据库。
首先遇到的错误是:“ Chef::Exceptions::Exec: package[postgresql-client] (postgresql::client line 36) had an error: Chef::Exceptions::Exec: apt-get -q -y install postgresql-client=9.1+129 returned 100, expected 0
“
这是Cookbooks / transportapi / recipes / default.rb的内容
#Set up a postgres database
include_recipe "database"
include_recipe "postgresql"
postgresql_database 'thedb' do
connection(
:host => '127.0.0.1',
:port => 5432,
:username => 'postgres',
:password => node['postgresql']['password']['postgres']
)
template 'DEFAULT'
encoding 'DEFAULT'
tablespace 'DEFAULT'
connection_limit '-1'
owner 'postgres'
action :create
end
我试图指定对“数据库”和“ postgresql”的依赖。 我也有一个metadata.rb文件(两者都需要吗?),
depends 'database'
depends 'postgresql'
这些都是berkshelf从opscode存储库中获取的食谱。 我的Berksfile看起来像这样:
site :opscode
cookbook 'database'
cookbook 'postgresql'
cookbook 'transportapi', :path => './cookbooks/transportapi'
这是我尝试进行“无用功”时的完整输出
vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'precise32'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[Berkshelf] This version of the Berkshelf plugin has not been fully tested on this version of Vagrant.
[Berkshelf] You should check for a newer version of vagrant-berkshelf.
[Berkshelf] If you encounter any errors with this version, please report them at https://github.com/RiotGames/vagrant-berkshelf/issues
[Berkshelf] You can also join the discussion in #berkshelf on Freenode.
[Berkshelf] Updating Vagrant's berkshelf: '/Users/harrywood/.berkshelf/default/vagrant/berkshelf-20131106-34531-1no9nl5-default'
[Berkshelf] Using postgresql (3.1.0)
[Berkshelf] Using transportapi (0.1.0) at './cookbooks/transportapi'
[Berkshelf] Using apt (2.3.0)
[Berkshelf] Using build-essential (1.4.2)
[Berkshelf] Using openssl (1.1.0)
[Berkshelf] Using database (1.5.2)
[Berkshelf] Using mysql (3.0.12)
[Berkshelf] Using aws (1.0.0)
[Berkshelf] Using xfs (1.1.0)
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 80 => 8080 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Mounting shared folders...
[default] -- /vagrant
[default] -- /tmp/vagrant-chef-1/chef-solo-1/cookbooks
[default] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
stdin: is not a tty
[2013-11-06T01:24:08+00:00] INFO: *** Chef 10.14.2 ***
[2013-11-06T01:24:08+00:00] INFO: Setting the run_list to ["recipe[transportapi]"] from JSON
[2013-11-06T01:24:08+00:00] INFO: Run List is [recipe[transportapi]]
[2013-11-06T01:24:08+00:00] INFO: Run List expands to [transportapi]
[2013-11-06T01:24:08+00:00] INFO: Starting Chef Run for precise32
[2013-11-06T01:24:08+00:00] INFO: Running start handlers
[2013-11-06T01:24:08+00:00] INFO: Start handlers complete.
================================================================================
Error executing action `install` on resource 'package[postgresql-client]'
================================================================================
Chef::Exceptions::Exec
----------------------
apt-get -q -y install postgresql-client=9.1+129 returned 100, expected 0
Resource Declaration:
---------------------
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/postgresql/recipes/client.rb
35:
36: package pg_pack
37:
Compiled Resource:
------------------
# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/postgresql/recipes/client.rb:36:in `from_file'
package("postgresql-client") do
retry_delay 2
retries 0
recipe_name "client"
action :install
cookbook_name :postgresql
package_name "postgresql-client"
end
[2013-11-06T01:24:16+00:00] ERROR: Running exception handlers
[2013-11-06T01:24:16+00:00] ERROR: Exception handlers complete
[2013-11-06T01:24:17+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2013-11-06T01:24:17+00:00] FATAL: Chef::Exceptions::Exec: package[postgresql-client] (postgresql::client line 36) had an error: Chef::Exceptions::Exec: apt-get -q -y install postgresql-client=9.1+129 returned 100, expected 0
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.
也许没有正确包含“ apt”。 我想知道厨师运行列表是否应该显示为扩展以包括依赖项。 它只是说“运行列表扩展到[transportapi]”,这是我在流浪汉文件中添加的唯一配方。
当您通过SSH连接到VM并在提供vagrant provision
之前执行apt-get update
,我猜它行得通吗?
然后可以确定apt缓存已过期的问题。
因此,您应该在运行列表中包含apt食谱。 这会进行一次apt-get update
(不是在每次厨师运行期间,而是每天一次)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.