Linux
Apache
AWS
chef-solo

Chef-solo構築からapacheをインストール on Amazon Linux

More than 1 year has passed since last update.


前提


  • 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で成功したことないので)