Я настроил vagrantfile для установки php> = v.5.4 через chef-solo.
Но у меня есть некоторые проблемы.
Скажите пожалуйста, если я загружаю какую-то кулинарную книгу для обеспечения шеф-повара, могу ли я что-то изменить внутри них, или мне просто нужно настроить Vagrantfile ???
Это мой бродячий файл:
VAGRANTFILE_PI_VERSION = "2"Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise32"config.vm.box_url = "http://files.vagrantup.com/precise32.box"config.vm.network "private_network", ip: "192.168.33.10", auto_config: true
config.vm.synced_folder "./shared", "/var/www"config.vm.provision :shell, :inline => 'apt-get update'
config.omnibus.chef_version = :latest
config.vm.provision "chef_solo" do |chef|
chef.cookbooks_path = "cookbooks"chef.add_recipe "apache2"chef.add_recipe "apache2::mod_rewrite"chef.add_recipe "mysql::server"chef.add_recipe "mysql::client"chef.add_recipe "php::source"
chef.json = {
:mysql => {
"server_root_password" => ''
},
:apache => {
"default_site_enabled" => true
},
:php => {
"install_method" => "source",
"version" => "5.5.19",
},
}
end
end
Это поваренная книга / php / recipes / source.rb:
configure_options = node['php']['configure_options'].join(' ')
include_recipe 'build-essential'
include_recipe 'xml'
include_recipe 'mysql::client' if configure_options =~ /mysql/
include_recipe 'yum-epel' if node['platform_family'] == 'rhel'
pkgs = value_for_platform_family(
%w{ rhel fedora } => %w{ bzip2-devel libc-client-devel curl-devel freetype-devel gmp-devel libjpeg-devel krb5-devel libmcrypt-devel libpng-devel openssl-devel t1lib-devel mhash-devel },
%w{ debian ubuntu } => %w{ libbz2-dev libc-client2007e-dev libcurl4-gnutls-dev libfreetype6-dev libgmp3-dev libjpeg62-dev libkrb5-dev libmcrypt-dev libpng12-dev libssl-dev libt1-dev },
'default' => %w{ libbz2-dev libc-client2007e-dev libcurl4-gnutls-dev libfreetype6-dev libgmp3-dev libjpeg62-dev libkrb5-dev libmcrypt-dev libpng12-dev libssl-dev libt1-dev }
)
pkgs.each do |pkg|
package pkg do
action :install
end
end
version = node['php']['version']
remote_file "#{Chef::Config[:file_cache_path]}/php-#{version}.tar.gz" do
source "#{node['php']['url']}/php-#{version}.tar.gz/from/this/mirror"checksum node['php']['checksum']
mode '0644'
not_if "which #{node['php']['bin']}"end
if node['php']['ext_dir']
directory node['php']['ext_dir'] do
owner 'root'
group 'root'
mode '0755'
recursive true
end
ext_dir_prefix = "EXTENSION_DIR=#{node['php']['ext_dir']}"else
ext_dir_prefix = ''
end
bash 'build php' do
cwd Chef::Config[:file_cache_path]
code <<-EOF
tar -zxf php-#{version}.tar.gz
(cd php-#{version} && #{ext_dir_prefix} ./configure #{configure_options})
(cd php-#{version} && make && make install)
EOF
not_if "which #{node['php']['bin']}"end
directory node['php']['conf_dir'] do
owner 'root'
group 'root'
mode '0755'
recursive true
end
directory node['php']['ext_conf_dir'] do
owner 'root'
group 'root'
mode '0755'
recursive true
end
include_recipe "php::ini"
Но это не работает. Это сгенерированная ошибка:
==> default: ================================================================================
==> default: Error executing action `create` on resource 'remote_file[/var/chef/cache/php-5.5.19.tar.gz]'
==> default: ================================================================================
==> default: Chef::Exceptions::ChecksumMismatch
==> default: ----------------------------------
==> default:
==> default: Checksum on resource (378de1) does not match checksum on content (8d39f2)
==> default:
==> default: Resource Declaration:
==> default: ---------------------
==> default: # In /tmp/vagrant-chef-3/chef-solo-1/cookbooks/php/recipes/source.rb
==> default:
==> default: 42: remote_file "#{Chef::Config[:file_cache_path]}/php-#{version}.tar.gz" do
==> default: 43: source "#{node['php']['url']}/php-#{version}.tar.gz/from/this/mirror"==> default: 44: checksum node['php']['checksum']
==> default: 45: mode '0644'
==> default: 46: not_if "which #{node['php']['bin']}"==> default: 47: end
==> default: 48:
==> default:
==> default: Compiled Resource:
==> default: ------------------
==> default: # Declared in /tmp/vagrant-chef-3/chef-solo-1/cookbooks/php/recipes/source.rb:42:in `from_file'
==> default:
==> default: remote_file("/var/chef/cache/php-5.5.19.tar.gz") do
==> default: provider Chef::Provider::RemoteFile
==> default: action "create"==> default: retries 0
==> default: retry_delay 2
==> default: default_guard_interpreter :default
==> default: path "/var/chef/cache/php-5.5.19.tar.gz"==> default: backup 5
==> default: atomic_update true
==> default: source ["http://us1.php.net/get/php-5.5.19.tar.gz/from/this/mirror"]
==> default: use_etag true
==> default: use_last_modified true
==> default: cookbook_name :php
==> default: recipe_name "source"==> default: checksum "378de162efdaeeb725ed38d7fe956c9f0b9084ff"==> default: mode "0644"==> default: not_if "which php"==> default: end
Что вы можете мне предложить?
Если мне нужно показать больше кода, пожалуйста, скажите, потому что я только начинающий с vagrant.
Это не ответ в настоящее время, но мне нужно вставить некоторые коды, чтобы задать дополнительный вопрос ..
Проблема в этой части:
remote_file "#{Chef::Config[:file_cache_path]}/php-#{version}.tar.gz" do
source "#{node['php']['url']}/php-#{version}.tar.gz/from/this/mirror"checksum node['php']['checksum']
mode '0644'
not_if "which #{node['php']['bin']}"end
Ошибка:
Checksum on resource (378de1) does not match checksum on content (8d39f2)
файл gz загружается с http://us1.php.net/get/php-5.5.19.tar.gz/from/this/mirror
и сохранить в /var/chef/cache/php-5.5.19.tar.gz
Не могли бы вы вручную загрузить снова и проверить с помощью приведенной ниже команды, чтобы подтвердить, если они одинаковы (md5 или md5sum, зависит от вашей системы)
md5 /var/chef/cache/php-5.5.19.tar.gz
or
md5sum /var/chef/cache/php-5.5.19.tar.gz
Вот результат md5 из файла gz, который я загружаю из интернета. Они должны быть такими же.
$ md5 php-5.5.19.tar.gz
MD5 (php-5.5.19.tar.gz) = 8ef89261aa6bb2d74df8d147f0d183a1
Других решений пока нет …