gpt4 book ai didi

nginx - 如何配置Chef Solo在新的Vagrant盒子上安装Nginx?

转载 作者:行者123 更新时间:2023-12-04 04:57:19 25 4
gpt4 key购买 nike

我是Chef的新手,而文档(甚至是其网站的主页)使我头疼。我什至不确定我是否将其用于正确的目的。

我的意图是设置一个Vagrantfile,该代码告诉Chef Solo在我旋转一个新盒子时自动安装一些软件。 这是Solo Solo的预定用途之一,对吗?

我不确定这是否算是“地球上最艰巨的基础设施挑战”之一,但无论如何。

我的第一个目标是让Chef Solo为我安装nginx。在我的项目中,我已经为nginx克隆了菜谱:

$ git clone https://github.com/opscode-cookbooks/nginx.git cookbooks/nginx

我编辑了 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

当我运行 vagrant up时,出现一些未找到某些食谱的错误( build-essentialapt等),因此我从相应的存储库中克隆了它们。现在,当我 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

厨师从未成功完成!任何错误都应该在上面的输出中可见。请修正您的食谱,以使其正确完成。

如何修复我的食谱以使其正确完成?

最佳答案

为了更有效地使用Chef,我建议您安装以下 Vagrant 的插件:

vagrant plugin install vagrant-omnibus
vagrant plugin install vagrant-berkshelf

Berkshelf是用于管理食谱依赖项的工具。 omnibus plugin有助于确保您使用的是最新版本的Chef。

下面的示例演示了安装类似nginx的东西变得多么容易。

例子
├── Berksfile
└── Vagrantfile

伯克谢尔夫

列出所需的食谱。 Berkshelf将从opscode社区网站下载它们(和依赖项)。
site :opscode

cookbook "nginx"

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

笔记:
  • 此示例使用CentOS。在Ubuntu上应该也能很好地工作。
  • 关于nginx - 如何配置Chef Solo在新的Vagrant盒子上安装Nginx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19125374/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com