Ben*_*old 8 nginx chef-infra vagrant ubuntu-12.04
我是Chef的新手,文档(甚至是他们网站的主页)让我头晕目眩.我甚至不确定我是否将它用于正确的目的.
我的目的是设置一个Vagrantfile告诉Chef Solo在我启动一个新盒子时自动安装一些软件.这是Chef Solo的预期用途之一,我是否正确?
我不确定这是否是"地球上最严峻的基础设施挑战"之一,但无论如何.
我的第一个目标是让Solo主厨nginx为我安装.在我的项目中,我克隆了食谱nginx:
$ git clone https://github.com/opscode-cookbooks/nginx.git cookbooks/nginx
Run Code Online (Sandbox Code Playgroud)
我编辑我Vagrantfile看起来像这样:
Vagrant.configure("2") do |config|
config.vm.box = "opscode-ubuntu-1204"
config.vm.provision :chef_solo do |chef|
chef.add_recipe "nginx"
end
end
Run Code Online (Sandbox Code Playgroud)
当我跑了vagrant up,我得到了一些食谱,未发现(一些错误build-essential,apt等等),所以我克隆他们从适当的回购协议.现在,当我vagrant up,我得到这个输出:
[2013-10-01T20:31:03+00:00] INFO: Processing package[nginx] action install (nginx::package line 38)
Error executing action `install` on resource 'package[nginx]'
Chef::Exceptions::Exec
----------------------
apt-get -q -y install nginx=1.1.19-1ubuntu0.1 returned 100, expected 0
Resource Declaration:
---------------------
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/nginx/recipes/package.rb
38: package node['nginx']['package_name'] do
39: notifies :reload, 'ohai[reload_nginx]', :immediately
40: end
41:
Compiled Resource:
------------------
# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/nginx/recipes/package.rb:38:in `from_file'
package("nginx") do
action :install
retries 0
retry_delay 2
package_name "nginx"
version "1.1.19-1ubuntu0.1"
cookbook_name :nginx
recipe_name "package"
end
[2013-10-01T20:31:08+00:00] INFO: Running queued delayed notifications before re-raising exception
[2013-10-01T20:31:08+00:00] ERROR: Running exception handlers
[2013-10-01T20:31:08+00:00] ERROR: Exception handlers complete
[2013-10-01T20:31:08+00:00] FATAL: Stacktrace dumped to /tmp/vagrant-chef-1/chef-stacktrace.out
[2013-10-01T20:31:08+00:00] FATAL: Chef::Exceptions::Exec: package[nginx] (nginx::package line 38) had an error: Chef::Exceptions::Exec: apt-get -q -y install nginx=1.1.19-1ubuntu0.1 returned 100, expected 0
Run Code Online (Sandbox Code Playgroud)
厨师从未成功完成!任何错误都应该在上面的输出中可见.请修复您的食谱,以便它们正确完成.
如何修复我的食谱以使其正确完成?
Mar*_*nor 23
为了更有效地使用厨师我建议安装以下vagrant插件:
vagrant plugin install vagrant-omnibus
vagrant plugin install vagrant-berkshelf
Run Code Online (Sandbox Code Playgroud)
Berkshelf是一个管理食谱依赖的工具.该综合性的插件是非常有用的,以确保您使用的厨师的最新版本.
以下示例演示了如何轻松安装nginx之类的东西.
??? Berksfile
??? Vagrantfile
Run Code Online (Sandbox Code Playgroud)
列出所需的烹饪书.Berkshelf将从opscode社区网站下载它们(和依赖项).
site :opscode
cookbook "nginx"
Run Code Online (Sandbox Code Playgroud)
以下vagrant文件将安装nginx,使其在主机的端口8080上可用:
Vagrant.configure("2") do |config|
# Box details
config.vm.box = "Berkshelf-CentOS-6.3-x86_64-minimal"
config.vm.box_url = "https://dl.dropbox.com/u/31081437/Berkshelf-CentOS-6.3-x86_64-minimal.box"
# Plugins
config.berkshelf.enabled = true
config.omnibus.chef_version = :latest
# Network
config.vm.network :forwarded_port, guest: 80, host: 8080
# Chef solo provisioning
config.vm.provision :chef_solo do |chef|
chef.add_recipe "nginx"
end
end
Run Code Online (Sandbox Code Playgroud)
笔记:
| 归档时间: |
|
| 查看次数: |
7519 次 |
| 最近记录: |