Chefを使用してgraphiteサーバーをインストールしようとしていますが、VMでchef-soloまたはchef-clientのいずれかが見つからないというエラーが発生しました。 Ubuntu 12.04.AMD64 LTSを使用しています。これはサーバーバージョンであるため、chef-clientはインストールされません。 13バージョンではchef-clientが自動的にインストールされることは知っていますが、13バージョンを使用することはできません。
私はグーグルで検索し、何人かの人々がボックスにsshしてapt-get installchef-clientを提案するのを見ました。
私の質問は、シェフがキックインする前にchef-clientをプレインストールできる方法はありますか?基本的に、シェフプログラムに生の画像をダウンロードして、ユーザーからの追加の手動手順なしですべてを実行してもらいたいと思います。出来ますか?
私のVagrantfile:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu-12.04-AMD64"
config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-AMD64-vagrant-disk1.box"
config.vm.hostname = "graphite"
config.vm.network :forwarded_port, guest: 8080, Host: 9090
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.roles_path = "roles"
chef.data_bags_path = "data_bags"
chef.add_role "Graphite-Server"
chef.add_role "StatsD-Server"
end
end
エラーログ:
[default] Running provisioner: chef_solo...
The chef binary (either `chef-solo` or `chef-client`) was not found on
the VM and is required for chef provisioning. Please verify that chef
is installed and that the binary is available on the PATH.
ありがとう
私は2つの解決策を見つけましたが、どちらも期待どおりに機能します。
1)方法1:Vagrantfileに、
config.omnibus.chef_version = :latest
これにより、chef-soloまたはchef-clientのいずれかがインストールされていることを確認しますVMで、シェフのプロビジョニングに必要です。オムニバスプラグインを使用するには、最初にプラグインをインストールしてください:vagrant plugin install vagrant-omnibus
2)方法2:使用config.vm.provision
ここで説明されているようにインラインシェル: https://github.com/mitchellh/vagrant-aws/issues/19#issuecomment-15487131 。 Vagrantfileに、次を追加します。
config.vm.provision "Shell", path: "utils/tools/install_chef.bash"
私が書いたスクリプトutils/tools/install_chef.bashは次のようになります。
#!/bin/bash
function error
{
echo -e "\033[1;31m${1}\033[0m" 1>&2
}
function checkRequireRootUser
{
if [[ "$(whoami)" != 'root' ]]
then
error "ERROR: please run this program as 'root'"
exit 1
fi
}
function installChef()
{
if [[ "$(which chef-client)" = '' ]]
then
local chefProfilePath='/etc/profile.d/chef.sh'
curl -s -L 'https://www.opscode.com/chef/install.sh' | bash && \
echo 'export PATH="/opt/chef/embedded/bin:$PATH"' > "${chefProfilePath}" && \
source "${chefProfilePath}"
fi
}
function main()
{
checkRequireRootUser
installChef
}
main
更新:
次のエラーが発生した場合:Unknown configuration section 'omnibus'
。オムニバスプラグインがないことを意味します。インストールするには、次のように入力します。vagrant plugin install vagrant-omnibus
Chefがインストールされていない場合、基本的にinstall.sh
スクリプトを実行する vagrant-omnibus プラグインをお勧めします。