簡體   English   中英

如何配置Chef Solo以在新的Vagrant盒子上安裝Nginx?

[英]How do I configure Chef Solo to install Nginx on a new Vagrant box?

我是Chef的新手,文檔(甚至是他們網站的主頁)讓我頭暈目眩。 我甚至不確定我是否將它用於正確的目的。

我的目的是設置一個Vagrantfile ,告訴Chef Solo在我啟動一個新盒子時自動安裝一些軟件。 這是Chef 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

廚師從未成功完成! 任何錯誤都應該在上面的輸出中可見。 請修復您的食譜,以便它們正確完成。

如何修復我的食譜以使其正確完成?

為了更有效地使用廚師我建議安裝以下vagrant插件:

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

Berkshelf是一個管理食譜依賴的工具。 omn​​ibus插件有助於確保您使用最新版本的廚師。

以下示例演示了如何輕松安裝nginx之類的東西。

├── Berksfile
└── Vagrantfile

Berkshelf

列出所需的烹飪書。 Berkshelf將從opscode社區網站下載它們(和依賴項)。

site :opscode

cookbook "nginx"

Vagrantfile

以下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上同樣有效。

嗨,我遇到了同樣的問題,而搜索偶然發現了你的問題。 我已經解決了它簡單包括APT配方。 之所以需要它,是因為在安裝軟件包之前必須先對新實例進行apt-get更新。 就這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM