用語などは別サイトで学んでください。
Chefのインストール
OfsCodeが提供しているChef配布用スクリプト
$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
knifeの設定
色々聞かれるがとりあえず全部Enterで良い
$ knife configure
VirtualBoxのインストール
サイトから入手
[VirtualBox download]
Vagrantのインストール
gemでの配布は更新されていないのでサイトから入手
[Vagrant download]
VagrantでVM初期設定
VagrantloudからOSイメージを探す
[Vagrantcloud]
例:centos-6.5の場合
vmの設定を置きたいディレクトリで下記のコマンドを入力
$ vagrant init chef/centos-6.5
作成されたVagrantfileを編集
コメントアウトを外す
➡ Vagrantを入れた環境からアクセスできるようにし、VMのIPを192.168.33.10に設定
config.vm.network "private_network", ip: "192.168.33.10"
VM起動
Vagrantfileがあるディレクトリで
$ vagrant up
ssh接続
~/.ssh/config に下記を追加編集
sshコマンドでvmへ接続できるように
HOST 192.168.33.* IdentityFile ~/.vagrant.d/insecure_private_key User vagrant
下記のコマンドでも可
ssh設定を出力して書き出し
vagrant ssh-config --host 192.168.33.* >> ~/.ssh/config
内容は以下
Host 192.168.33.∗ HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/$HOST_NAME/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL
ssh接続(まだしなくても良い)
$ ssh 192.168.33.10
knife-soloインストール
gemコマンド
$ sudo gem install knife-solo
XCode5.1でClangエラーが出る場合は以下のコマンドを用いる
$ sudo ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install knife-solo
~/.chef/knife.rb に下記を追加編集
tmpディレクトリの設定とCookbookをインポートする際の設定
knife[:solo_path] = '/tmp/chef-solo' cookbook_path ['./cookbooks']
knife-soloでChef Solo環境を生成
Chefレポジトリを作成
レポジトリを管理したいディレクトリで実行
下記だと chef-repoレポジトリが作成される
$ knife solo init chef-repo
合わせてgit管理
Chefレポジトリ直下で以下のコマンドを入力
$ git init $ git add . $ git commit -m "first commit"
Chefレポジトリ直下で以下のコマンドを入力
vmにChefをインストール
$ knife solo prepare vagrant@192.168.33.10
作成されたjsonファイルをコミット
$ git add nodes/ $ git commit -m "add node json file"
Cookbook作成
nginx というCookbook作成
Chefレポジトリ直下で以下のコマンドを入力
$ knife cookbook create nginx -o site-cookbooks
Recipe編集
site-cookbooks/nginx/recipes/default.rb を編集
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
上記recipeで使うtemplate(nginx.conf.erb)を作成
site-cookbooks/nginx/templates/default/ に作成
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; } } }Cookbookをインポートする
centosでnginxを取得するにはyumのEPELというアドオンパッケージのyumレポジトリを有効にする必要がある
yumのCookbookを取得
$ knife cookbook site vendor yum $ knife cookbook site vendor yum-epel
Nodeの設定
jsonファイルはサーバ(node)の状態を示す
nodes/192.168.33.10.json
下記のように編集
{ "nginx":{ "port":80 }, "run_list":[ "yum-epel", "nginx" ] }
vmへChef Soloを実行
実行後、http://192.168.33.10 へアクセスし、nginxが起動しているか確認
$ knife solo cook vagrant@192.168.33.10
以上。お疲れさまでした。
参考
Amazon.co.jp 入門Chef Solo
2noの日記 【Mac】clang によるビルドエラー【Xcode 5.1】
0 件のコメント:
コメントを投稿