vagrant 環境構築 (2)
Vagrantfile の vb.gui な記述をコメントアウトしてたのですが
config.vm.provider :virtualbox do |vb| # Don't boot with headless mode # vb.gui = true
fsck が必要で起動途中で止まってて固まっていた模様。とりあえず無理やり fsck して正常起動を確認。とりあえず名前解決らへんの不具合対応に着手。
って無問題に見えますな。この状態で knife solo cook してみるとどうなるか。
挙動変わらず
リモート側に rsync 入っていないようなので導入してリトライしてみます。
む、なんか出力が違いますね。ようやく、なのかどうなのかorz
Running Chef... [2013-05-01T23:27:21+00:00] INFO: *** Chef 10.16.4 *** [2013-05-01T23:27:21+00:00] INFO: Setting the run_list to ["nginx"] from JSON [2013-05-01T23:27:21+00:00] INFO: Run List is [recipe[nginx]] [2013-05-01T23:27:21+00:00] INFO: Run List expands to [nginx] [2013-05-01T23:27:21+00:00] INFO: Starting Chef Run for localhost [2013-05-01T23:27:21+00:00] INFO: Running start handlers [2013-05-01T23:27:21+00:00] INFO: Start handlers complete. [2013-05-01T23:27:22+00:00] ERROR: Running exception handlers [2013-05-01T23:27:22+00:00] ERROR: Exception handlers complete [2013-05-01T23:27:22+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out [2013-05-01T23:27:22+00:00] FATAL: Chef::Exceptions::CookbookNotFound: Cookbook nginx not found. If you're loading nginx from another cookbook, make sure you configure the dependency in your metadata ERROR: RuntimeError: chef-solo failed. See output above.
あ、でも失敗してるや。nginx って cookbook が、って何でしょ。またナチュラルかな。
むむむ
なんかよくよく見てみるに色々と微妙ですね。knife が 0.2.0 だな。
ええと以下な warning から対応。
WARNING: solo.rb found, but since knife-solo v0.3.0 it is not used any more WARNING: Please read the upgrade instructions: https://github.com/matschaffer/knife-solo/wiki/Upgrading-to-0.3.0
ちょっとやりなおしてみよ。
$ knife kitchen chef-repo WARNING: `knife kitchen` is deprecated! Please use: knife solo init DIRECTORY
あらら、こうか。
$ rm -rf chef-repo knife solo init chef-solo Creating kitchen... Creating knife.rb in kitchen... ERROR: knife encountered an unexpected error This may be a bug in the 'solo init' knife command or plugin Please collect the output of this command with the `-VV` option before filing a bug report. Exception: NameError: uninitialized constant KnifeSolo::Pathname
ぐぬ。knife kitchen でアレ。次に以下か。
$ knife solo prepare 192.168.33.10
これ、昨晩のログを見るに curl が名前解決に失敗しとるぞ。何故か今日はイケている模様。なんだこの不安定さ。以下な出力が正常動作な模様です。
$ knife solo prepare 192.168.33.10 Bootstrapping Chef... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 6510 100 6510 0 0 5343 0 0:00:01 0:00:01 --:--:-- 27702 Downloading Chef 11.4.4 for el... Installing Chef 11.4.4 warning: /tmp/tmp.dWpcQQP6/chef-11.4.4.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY Preparing... ########################################### [100%] 1:chef ########################################### [100%] Thank you for installing Chef! Generating node config 'nodes/192.168.33.10.json'...
昨日のナニは色々な意味で駄目だったことがよく分かります。
$ knife cookbook create nginx -o cookbooks/ ** Creating cookbook nginx ** Creating README for cookbook: nginx ** Creating CHANGELOG for cookbook: nginx ** Creating metadata for cookbook: nginx
ええと、cookbooks/nginx/recipes/default.rb を以下にして
# # Cookbook Name:: nginx # Recipe:: default # # Copyright 2013, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # package "nginx" do action :install end service "nginx" do supports :status => true, :restart => true, :reload => true action [ :enable, :start ] end template "nginx.conf" do path "/etc/nginx/nginx.conf" source "nginx.conf.erb" owner "root" group "root" mode 0644 notifies :reload, 'service[nginx]' end
あるいは cookbooks/nginx/templates/default/nginx.conf.erb を以下にして
user nginx; worker_processes 1; error_log /var/log/nginx/error_log; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; server { listen <%= node['nginx']['port'] %> server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } } }
あるいは nodes/192.168.33.10.json を以下に。
{ "nginx": { "port" : 80 }, "run_list":[ "nginx" ] }
これでリトライしてみます。
$ knife solo cook 192.168.33.10 Running Chef on 192.168.33.10... Checking Chef version... Uploading the kitchen... Generating solo config...
warning 出力なし。昨日のソレは一体何が悪かったんだろ。正常動作してるようなそうでもないような。続きが以下。
Running Chef... Starting Chef Client, version 11.4.4 Compiling Cookbooks... Converging 3 resources Recipe: nginx::default * package[nginx] action install * No version specified, and no candidate version available for nginx ================================================================================ Error executing action `install` on resource 'package[nginx]' ================================================================================ Chef::Exceptions::Package ------------------------- No version specified, and no candidate version available for nginx Resource Declaration: --------------------- # In /home/vagrant/chef-solo/cookbooks-1/nginx/recipes/default.rb 10: package "nginx" do 11: action :install 12: end 13: Compiled Resource: ------------------ # Declared in /home/vagrant/chef-solo/cookbooks-1/nginx/recipes/default.rb:10:in `from_file' package("nginx") do action [:install] retries 0 retry_delay 2 package_name "nginx" cookbook_name :nginx recipe_name "default" end [2013-05-02T00:29:00+00:00] ERROR: Running exception handlers [2013-05-02T00:29:00+00:00] ERROR: Exception handlers complete Chef Client failed. 0 resources updated [2013-05-02T00:29:00+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out [2013-05-02T00:29:00+00:00] FATAL: Chef::Exceptions::Package: package[nginx] (nginx::default line 10) had an error: Chef::Exceptions::Package: No version specified, and no candidate version available for nginx ERROR: RuntimeError: chef-solo failed. See output above.
まだ例外吐いてますね。スタックトレイス確認してみたら以下とのこと。
Chef::Exceptions::Package: package[nginx] (nginx::default line 10) had an error: Chef::Exceptions::Package: No version specified, and no candidate version available for nginx
対象ホストで確認してみたら nginx なんてパケジ知らん、と。ググッてみたら以下なコマンド実行したら見える模様。
$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
確かに見えた。ここまで来るともう何とも言えぬ。
再度 knife solo 実行。
$ knife solo cook 192.168.33.10 (略 Chef Client finished, 4 resources updated
一応正常終了している模様。80 番も開放を確認。
前提として
- rsync は導入されてる雛形が必要
なのかどうか。つうか nginx が依存してる上のソレとかってどうなんでしょうね。
別途
serverspec も確認の方向。色々微妙なので全般な纏めも作成の方向です。