okochangの馬鹿でありがとう

ふらふら適当に世間を生きる日々でございます

Amazon LinuxでVagrantとChef soloをする

ハッと気づいたらどうやら約1ヶ月ブログを放置していたようです。
そろそろ書かなきゃというのと、Provisioning Frameworks Casual Talks vol.1というChefとかPuppetとかの勉強会に参加する予定なので、予習がてらブログを書きます。

やる事

環境

ざっくり構成図

f:id:okochang:20130510005118p:plain

手順

Amazon Linuxに必要なパッケージをインストールします。

$ sudo yum groupinstall "Development Tools"
$ sudo yum install ruby19 ruby19-devel emacs libxml2-devel libxslt-devel

続いてVagrantをインストールします。

$ sudo rpm -ivh http://files.vagrantup.com/packages/7e400d00a3c5a0fdf2809c8b5001a035415a607b/vagrant_1.2.2_x86_64.rpm

AWSプラグインのインストール、ダミー用のboxをダウンロード、Vagrantfileを作成します。

$ vagrant plugin install vagrant-aws
$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
$ vagrant init

Vagrantfileをこんな感じに編集しています。

## okochang configuration
Vagrant.configure("2") do |config|
  config.vm.box = "dummy"
  config.vm.provider :aws do |aws, override|
  aws.access_key_id = "set your access key"
  aws.secret_access_key = "set your secret key"
  aws.region = "ap-northeast-1"
  aws.keypair_name = "okochang-key"
  aws.security_groups = ["sg-xxxxxx"]
  aws.subnet_id = "subnet-xxxxxxxx"
  aws.private_ip_address = "10.0.2.10"
  aws.ami = "ami-9763e696"
  override.ssh.username = "ubuntu"
  override.ssh.private_key_path = "~/.ssh/okochnag-key.pem"
  end
end

VagrantでVPC内にUbuntuを起動します。

$ vagrant up --provider aws

起動の確認とテストで接続してみます。

$ vagrant status
$ vagrant ssh

kife-soloで接続するためにSSH設定を出力しておきます。

$ vagrant ssh-config --host ubuntu >> .ssh/config
$ chmod 600 .ssh/config 

Amazon LinxuにChefとknife-soloをインストールして、初期設定します。

$ curl -L http://www.opscode.com/chef/install.sh | sudo bash
$ gem1.9 install knife-solo --pre --no-rdoc --no-ri
$ knife configure

そのままknife solo initをするとエラーになるのでちょっと修正をします。
(require 'pathname'を追加しておきます)

$ vi /home/ec2-user/.gem/ruby/1.9.1/gems/knife-solo-0.3.0.pre3/lib/knife-solo.rb

リポジトリの初期化をして、ubuntuにchef-soloをインストールします。
その後はcook bookを作ってレシピ書いていけば良いわけです。

$ knife solo init chef-repo
$ cd chef-repo/
$ knife solo prepare ubuntu

動作確認が終わったら削除も忘れずに。

$ vagrant destroy

まとめ

普段はMBAに入れてるVagrantとかを使っていますが、Amazon Linuxでも問題なく動きますね。
Chef soloの使い方は入門Chef soloが本当に分かりやすいと思うので是非。