2013年4月12日金曜日

Windows + Cygwin + Proxy環境でChefにトライ

伊藤直也さんの入門Chef Solo - Infrastructure as Codeを購入したこともあって、Chefにトライした。最初は、第2章をMac+Vagrantで試してみて、続いて先日作ったUbuntuの開発環境を自動化してみようと思った。

会社で始めたので、残念ながらProxyの環境。以下の参考URL通りに進めたんだけど、やっぱProxyあたりで一工夫必要だったので、ブログに残すことにした。

参考:
Windows7上で Vagrant + Chef solo + knife-soloを使い、Ubuntu + ubuntu-desktopの環境を構築してみた - メモ的な思考的な

環境

  • Windows 7 Professional 64bit
  • Cygwin 1.7
  • 認証Proxy必須…

準備

  • CygwinにOpenSSHをインストールしておく
  • VirtualBoxインストール → インストーラーの通りに
  • Vagrantインストール → インストーラーの通りに

chef, knife-soloインストール

% gem install chef --no-ri --no-rdoc
% gem install knife-solo -v 0.3.0.pre2 --no-ri --no-rdoc
% knife configure
  →全てEnter、参考にあるffiのエラーは出なかった

Ubuntu 12.10 32bitをインストール

% vagrant box add Ubuntu12.10 http://files.vagrantup.com/precise32.box
% vagrant init Ubuntu12.10

knife

% knife solo init chef-repo
% vi Vagrantfile
  → config.vm.network :private_network, ip: "192.168.33.10" をコメント外す
% vagrant up

ここでVM側のProxyを設定&chefをアップデート

% vagrant ssh
--
$ vi /etc/environment
  http_proxy="http://user:password@hostname:port/"
  https_proxy="http://user:password@hostname:port/"
$ sudo vi /etc/wgetrc
  http_proxy=http://user:password@hostname:port/
  https_proxy=http://user:password@hostname:port/
  →ダブルコーテーション入れたらエラーになる
$ sudo gem update chef --http-proxy http://user:password@hostname:port/
$ exit
--
% cd chef-repo
% knife solo -V prepare vagrant@192.168.33.10

VM側の/etc/wgetrcにProxyを書かないと以下のエラー
knife-soloのコードを追い掛け回してやっと判明

  Bootstrapping Chef...
  Enter the password for vagrant@192.168.33.10:
  --2013-04-10 08:23:17--  https://www.opscode.com/chef/install.sh
  Resolving www.opscode.com (www.opscode.com)... failed: Name or service not known.
  wget: unable to resolve host address `www.opscode.com'
% vagrant halt
% knife cookbook create piyo -o cookbooks
% vi cookbooks/piyo/recipes/default.rb
  → 参考URL通りに記述
% vi ../Vagrantfile
  →いくつかコメントを外して実態に合わせて書き換える
   config.vm.provision :chef_solo do |chef|
     chef.cookbooks_path = "./chef-repo/cookbooks"
  #   chef.roles_path = "../my-recipes/roles"
  #   chef.data_bags_path = "../my-recipes/data_bags"
     chef.add_recipe "piyo"
  #   chef.add_role "web"
  #
  #   # You may also specify custom JSON attributes:
  #   chef.json = { :mysql_password => "foo" }
   end
% vi nodes/192.168.33.10.json
  {"run_list":["recipe[piyo]"]}
% vagrant up
  Bringing machine 'default' up with 'virtualbox' provider...
  [default] Setting the name of the VM...
  [default] Clearing any previously set forwarded ports...
  [default] Creating shared folders metadata...
  [default] Clearing any previously set network interfaces...
  [default] Preparing network interfaces based on configuration...
  [default] Forwarding ports...
  [default] -- 22 => 2222 (adapter 1)
  [default] Booting VM...
  [default] Waiting for VM to boot. This can take a few minutes.
  [default] VM booted and ready for use!
  [default] Configuring and enabling network interfaces...
  [default] Mounting shared folders...
  [default] -- /vagrant
  [default] -- /tmp/vagrant-chef-1/chef-solo-1/cookbooks
  [default] Running provisioner: VagrantPlugins::Chef::Provisioner::ChefSolo...
  Generating chef JSON and uploading...
  Running chef-solo...
  stdin: is not a tty
  [2013-04-11T02:00:37+00:00] INFO: *** Chef 11.4.0 ***
  [2013-04-11T02:00:39+00:00] INFO: Setting the run_list to ["recipe[piyo]"] from JSON
  [2013-04-11T02:00:39+00:00] INFO: Run List is [recipe[piyo]]
  [2013-04-11T02:00:39+00:00] INFO: Run List expands to [piyo]
  [2013-04-11T02:00:39+00:00] INFO: Starting Chef Run for precise32
  [2013-04-11T02:00:39+00:00] INFO: Running start handlers
  [2013-04-11T02:00:39+00:00] INFO: Start handlers complete.
  [2013-04-11T02:00:39+00:00] INFO: Processing execute[update package index] action run (piyo::default line 9)
  [2013-04-11T02:00:58+00:00] INFO: execute[update package index] ran successfully
  [2013-04-11T02:00:58+00:00] INFO: Processing execute[update package index] action nothing (piyo::default line 9)
  [2013-04-11T02:00:58+00:00] INFO: Processing log[done update] action write (piyo::default line 15)
  [2013-04-11T02:00:58+00:00] INFO: done update
  [2013-04-11T02:00:58+00:00] INFO: Processing package[ubuntu-desktop] action install (piyo::default line 17)
  [2013-04-11T02:33:14+00:00] INFO: Processing log[done install] action write (piyo::default line 21)
  [2013-04-11T02:33:14+00:00] INFO: done install
  [2013-04-11T02:33:14+00:00] INFO: Chef Run complete in 1954.115293972 seconds
  [2013-04-11T02:33:14+00:00] INFO: Running report handlers
  [2013-04-11T02:33:14+00:00] INFO: Report handlers complete
% vagrant halt
% vagrant up
参考:
Chefのプロキシ設定 #chef - Qiita

↓この本は良かった。Chefを始めてみるのに最適。ユースケースごとに解説されてるから、始めた段階でのリファレンスとしても良かった。

番外編:Ubuntuでリトライ

WindowsのProxy環境でどうにもうまくいかなくて、気分転換にWindows上のVMware Playerでやってみようと思った。結果から言うと、VMのネストが原因かVagrantをupできずやめた。

一応、Vagrantをインストールするとことまでを残しておく。

VirtualboxとVagrantをインストール

% sudo apt-get install libqt4-opengl
% sudo apt-get install libsdl1.2debian
% wget http://download.virtualbox.org/virtualbox/4.2.10/virtualbox-4.2_4.2.10-84104~Ubuntu~quantal_i386.deb
% sudo dpkg -i virtualbox-4.2_4.2.10-84104~Ubuntu~quantal_i386.deb
% wget http://files.vagrantup.com/packages/64e360814c3ad960d810456add977fd4c7d47ce6/vagrant_i686.deb
% sudo dpkg -i vagrant_i686.deb

Chefとknife-soloをインストール

Rubyが2.0.0しか入ってなかったので、1.9.3をインストール

% rbenv install 1.9.3-p392
% rbenv global 1.9.3-p392
% gem install rbenv-rehash --no-ri --no-rdoc
% gem install bundle --no-ri --no-rdoc

% gem install chef --no-ri --no-rdoc
% gem install knife-solo --no-ri --no-rdoc
% knife configure # 全てEnter

Ubuntu 12.10 32bitをインストール

% vagrant box add Ubuntu12.10 http://files.vagrantup.com/precise32.box
% vagrant init Ubuntu12.10
% vagrant up # VMware Player上のUbuntuでVirtualBoxを動かそうとしているからかupしない

0 コメント:

コメントを投稿