前提
- Amazon Linux AMI(ami-b953f2da)
- セキュリティグループのインバウンド:SSH22番、HTTP80番開いてること
- Chef-solo version :12.16.42
Chef-soloのインストール流れ
まずインスタンスのパブリックIPにSSHで接続します。
Chefのインストール
$ sudo su -
# curl -L http://www.opscode.com/chef/install.sh | sudo bash
(もしくは# gem install chef)
リポジトリの作成
gitで作成するがgitが使えないのでgitインストール
# yum -y install git
# git clone git://github.com/opscode/chef-repo.git
クックブック作成with knife
まずknifeの初期設定
いろいろ聞かれるけど全てデフォルトでEnter押せばおk
# knife configure
クックブック作成
# cd chef-repo
# knife cookbook create hello -o cookbooks
default.rb(Rubyファイル)を編集
クックブックを作成したときにデフォルトでRubyファイルが
出来るのでそこを編集します。(まずはHello!!から)
# vi cookbooks/hello/recipes/default.rb
(ディレクトリそのまま)
#
# Cookbook Name:: hello
# Recipe:: default
#
# Copyright 2016, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
log "Hello!!"
JSONファイルを作成する
Chef-soloを実行するときのレシピを書くJSONファイルをchef-repo直下に作成します。
# touch localhost.json
# vi localhost.json (JSONの中身に以下を記述します)
{
"run_list" : [
"recipe[hello]"
]
}
PATHを通すRubyファイルを作成する
solo.rbの中身はhelloがあるディレクトリまでのPATHを設定します
# touch solo.rb
# vi solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path ["/root/chef-repo/cookbooks"]
Chef-solo実行
以下のコマンドでChefの実行をします。
コマンドは環境に合わせてください(solo.rbとlocalhost.jsonがある場所による)
(ディレクトリはchef-repoのまま)
# chef-solo -c solo.rb -j ./localhost.json
Starting Chef Client, version 12.16.42
resolving cookbooks for run list: ["hello"]
Synchronizing Cookbooks:
- hello (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 1 resources
Recipe: hello::default
* log[Hello!!] action write
Running handlers:
Running handlers complete
Chef Client finished, 1/1 resources updated in 01 seconds
成功です。
apacheのインストール
それじゃapacheをインストールしてみます。
Rubyファイルの編集
先ほどHello!!と書いたファイル(default.rb)を開いて以下を追記します。
(ディレクトリはrecipes)
# vi default.rb
#
# Cookbook Name:: hello
# Recipe:: default
#
# Copyright 2016, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
log "Hello, Chef!"
package "httpd" do
action :install
end
実行
# cd chef-repo
# chef-solo -c solo.rb -j ./localhost.json
Starting Chef Client, version 12.16.42
resolving cookbooks for run list: ["hello"]
Synchronizing Cookbooks:
- hello (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 2 resources
Recipe: hello::default
* log[Hello, Chef!] action write
* yum_package[httpd] action install
- install version 2.2.31-1.8.amzn1 of package httpd
Running handlers:
Running handlers complete
Chef Client finished, 2/2 resources updated in 03 seconds
できた!
apacheがインストールされてるか確認
(ディレクトリはchef-repo)
# httpd -v
Server version: Apache/2.2.31 (Unix)
Server built: Jul 19 2016 00:11:31
apache起動確認
apacheを起動させる
(ディレクトリはchef-repoのまま)
# service httpd start
Starting httpd: [ OK ]
インスタンスのパブリックIPでブラウザに接続して
apacheのテストページが表示されれば成功です。
まとめ
Linuxでは簡単に出来る・・・(Windows Serverで成功したことないので)