41
SOLA勉強会 3回目 Chef入門

Sola勉強会 chef入門

Embed Size (px)

DESCRIPTION

Chef入門です。Git入門とVagrant入門を講習済みの方向けです。

Citation preview

Page 1: Sola勉強会 chef入門

SOLA勉強会 第3回目

Chef入門

Page 2: Sola勉強会 chef入門

自己紹介

大原 慎一郎 https://twitter.com/ohhara_shiojiri

(有)トラストネットワークス 塩尻インキュベーションプラザ108号室

サーバーやルーター、スイッチなどのインフラ系のシステム構築、運用、管理、監視、保守を行っています。

・長野県塩尻市に活動拠点を置く、市内プログラマー有志による団体・「オープンな環境でオープンな活動を目指す」を合言葉に集う・CoderDojo Shiojiri 開催 ・小学生高学年向けRuby教室開催・オープンソースCMS ZOMEKIを使ったサイト構築・塩尻市と東京都三鷹市で交互にOSS勉強会開催・IT技術書をリブライズで貸し出し、また市立図書館と協力

http://shiojiri-osslabo.com/

Page 3: Sola勉強会 chef入門

本日のアジェンダ(前半)

・サーバー環境構築って大変だよね。

・Chefとは何か?

・Chef Soloのインストール

・クックブックの作成

・レシピの作成

・JSONファイル

・パス設定ファイル

・Chef Soloを実行

Page 4: Sola勉強会 chef入門

本日のアジェンダ(後半)

・Knife Solo・Chefのインストール

・Knife Soloのインストール

・レポジトリの新規作成

・クックブックとレシピの作成

・リモートサーバー設定

・Knife Soloを実行

・基本的な作業の流れ

・次回 レシピの書き方

Page 5: Sola勉強会 chef入門

サーバー環境構築って大変だよね

・クラウドでサーバーの手配は簡単になった。

・でも各種サービスを起動させるのに、インストールや設定ファイルの準備がたくさんあります。

・毎回手順書の通りにダウンロード&インストール、

設定ファイルの編集をやらなくてはならない。

・人間は必ず間違える!

・サーバーの台数が増えて、スタッフが足りない!

Page 6: Sola勉強会 chef入門

Chefとは何か?

・プロビジョニング(Provisioning)ツールのひとつ

 他にもPuppet等があります。

・サーバー環境構築の手順をプログラム化します。

・プログラム化したことで、自動化が出来ます。

・サーバーの差異を吸収してソースコードを共有化出来ます。

・Rubyでソースコードを記述します。

・ソースコードはGitでバージョン管理できます。

・多くのソースコードが公開されていて、流用が出来ます。

・オープンソース版と商用版があります。

・食事の料理にちなんだ名称で、理解しやすい。

Page 7: Sola勉強会 chef入門

Chefとは何か?

・なんだか難しくない?

・RubyやRuby on Railsのプログラムやった事が無いけど?

・開発学習環境のサーバーが無いけど?

・失敗しても壊れない?

・ソースコードの多くは自動生成されます。

・Rubyのコードもごく単純な事だけ。

・開発学習環境のサーバーは、Vagrantが対応しています。

・失敗してもVagrantのrollbackでやり直せる。

Page 8: Sola勉強会 chef入門

Chefとは何か?

・サーバー&クライアント型モデルで大規模に管理出来ます。

 Facebookでも大量のサーバー管理に使われています。

・Chef Serverが各サーバー状況を一括管理します。

・各サーバーのChef Clientが、Chef Serverの指示で、

 サーバーの状態を自動で変更します。

・管理者はChef Serverに設定するだけで、何百何千のサーバーでも自動設定が出来ます。

 

Page 9: Sola勉強会 chef入門

Chefとは何か?

Page 10: Sola勉強会 chef入門

Chefとは何か?

・大量のサーバーなんて自分には無いから関係無い?

・Chef Serverを借りたり自分で用意出来ないけど?

・煩雑なサーバー構築の手順を自動化できる。

・サーバー1台からでも使用できる。

・Chef Server & Chef Clientを必要としないChef Soloがある。

・管理サーバーが増えていってもChef Soloで管理できる。

・Chef Soloで培った資産は、Chef Server & Clientでも

 そのまま使用できる。

Page 11: Sola勉強会 chef入門

Chef Soloインストール

・VagrantでCentOS6.4の仮想サーバーを起動します。

・sandbox機能をonにしておきます。

・CentOS6.4の仮想サーバーにSSHログインします。

・Chef をインストールします。

curl -L https://www.opscode.com/chef/install.sh | sudo bash

Page 12: Sola勉強会 chef入門

Chef Soloインストール

・1つのシステムに1つのレポジトリ(キッチン)を用意します。

・CentOS6.4の仮想サーバー上にGitをインストールします。 ※Git入門勉強会の資料を参考

・OpsCodeがGithubに公開しているひな形を使用します。

新しくchef-repoディレクトリが作成されて、基本設定ファイルが用意されています。

git clone git://github.com/opscode/chef-repo.git

Page 13: Sola勉強会 chef入門

Chef Soloのインストール

レポジトリを操作するknifeの初期設定をします。

 設定値を質問して来ますが、とりあえず標準値でよいので、

そのままリターンキーで進めて、終了させます。

 ユーザーディレクトリ以下に.chef/knife.rbファイルが作成されます。

knife configure

cat ~/.chef/knife.rb

Page 14: Sola勉強会 chef入門

クックブックの作成

・レポジトリの中には、1つもしくは複数のクックブックを作成します。

・レポジトリのディレクトリに移動します。

・knifeでクックブックを作成します。

knife cookbook create ntp -o cookbooks

例 knife cookbook create クックブック名 -o ディレクトリ

cd chef-repo

Page 15: Sola勉強会 chef入門

レシピの作成

・クックブックの中に、レシピを書きます。今回は、ntpをインストールして自動起動させてみます。

・クックブック作成時にレシピファイルが自動作成されます。

 これを編集してみましょう。

viの操作キー(キーボード入力)

・編集入力モード切り替え → i 文字キー

・切り替えたモードを元に戻す → ESC キー

・コマンドモード切り替え → : 文字キー

 ファイルに保存して終了コマンド → wq 破棄して終了コマンド → q!

vi cookbooks/ntp/recipes/default.rb

Page 16: Sola勉強会 chef入門

レシピの作成

・パッケージのインストール

package “ntp” do action :installend

・サービスの状態設定

service “ntpd” do supports :status=>true,:restart=>true,:reload=>true action [:enable,:start]end

・レシピファイルを保存してviを終了します。

Page 17: Sola勉強会 chef入門

JSONファイル

・Chefが管理するサーバーをノード(node)と呼びます。

・ノードの状態を記述するのが、JSONファイルです。

・JSONファイルに記述したデータ構造を、Node Objectと呼びます。

・JSONファイルには、実行するレシピ名や変数(Attribute)等を記述して、Chefがその内容に沿って実行します。

・Chef Serverに設置して管理します。

・Chef Soloではローカルに置きます。

Page 18: Sola勉強会 chef入門

JSONファイル

・JSONファイルを作成します。

vi localhost.json

・実行するレシピの設定

{”run_list”:[“ntp”]}

Page 19: Sola勉強会 chef入門

パス設定ファイル

・Chef Solo実行に必要なパス設定ファイルを作成します。

vi solo.rb

・Chef Soloの各作業パスを設定する。

file_cache_path “/tmp/chef-solo”cookbook_path [“/home/vagrant/chef-repo/cookbooks”]

Page 20: Sola勉強会 chef入門

Chef Soloを実行

・Chef Soloを実行してntpサービスをインストール起動します。

sudo chef-solo -c solo.rb -j localhost.json

・レシピ内容などに間違いがある場合には、Chefが判別してエラーになります。問題無ければ、Vagrantの仮想サーバー上にntpdサービスがインストールされて、サービスが起動します。

service ntpd status

・動作確認できたら、仮想サーバーからログアウトしてホスト側に戻ります。

Page 21: Sola勉強会 chef入門

Knife Solo

・Chef Soloはサーバーにログインして各作業をします。

・毎回サーバーにログインするのが面倒。

・使い慣れた自分のローカル環境で作業したい。

・Chef Serverではないので、レシピがサーバーに分散する。

・ローカル環境からリモートで、レシピを転送して、Chefを実行するKnife Solo

Page 22: Sola勉強会 chef入門

Chefのインストール

・bash端末画面からインストール

・インストーラーからインストール

 http://www.getchef.com/chef/install/ ※Windowsの場合はインストーラー推奨

curl -L https://www.opscode.com/chef/install.sh | sudo bash

Page 23: Sola勉強会 chef入門

Chefのインストール

・RubyとRubyGemsをインストール LinuxやOS Xの場合 → 各自で事前準備

 Windowsの場合 → Chefインストーラーに入ってます。

・インストール後、bash端末画面で確認します。

※2013年12月12日時点では、ruby 2.0.0p353 , ruby 1.9.3p484 , gem 2.1.11

ruby -v

gem -v

Page 24: Sola勉強会 chef入門

Chefのインストール

・rsyncをインストール LinuxやOS Xの場合 → sshに同梱されています。

 Windowsの場合 → cwRsyncをインストールする。

  https://www.itefix.no/i2/cwrsync Git Bash(MINGW32)にはsshはありますが、rsyncが無い為、cwRsyncのsshとrsyncをコマンドプロンプトで使用します。

・インストール後、bash端末画面で確認します。

rsync -v

Page 25: Sola勉強会 chef入門

Chefのインストール

・cwRsyncの設定(Windowsの場合) 1.環境変数を新規設定します。

  ユーザー環境変数

  システム環境変数

変数 値

HOME %USERPROFILE%

変数 値

CYGWIN nodosfilewarning

Page 26: Sola勉強会 chef入門

Chefのインストール

・cwRsyncの設定(Windowsの場合) 2.パスを既存の設定へ追加します。

  ユーザー環境変数

  システム環境変数

変数 値

Path ;C:¥Program Files (x86)¥cwRsync¥bin

Page 27: Sola勉強会 chef入門

Chefのインストール

・cwRsyncの設定(Windowsの場合) 3.コマンドプロンプトでsshの動作確認をする。

 パーミッションの警告が出る場合、読み取り専用に属性を変更します。

ssh centos64

例 ssh [ホスト名]

例 attrib +r c:¥Users¥MyName¥.ssh¥config

Page 28: Sola勉強会 chef入門

Knife Soloのインストール

・Knife SoloはRubyGemsからインストールします。

gem install knife-solo

・最新版をGithubからインストールも出来ます。

git clone git://github.com/matschaffer/knife-solo.gitcd knife-solorake install

・Knife Soloのインストールを確認します。

gem list | grep knife-solo

Page 29: Sola勉強会 chef入門

Knife Soloのインストール

・レポジトリを操作するknifeの初期設定をします。

質問の設定値は、そのまま進めて、終了させます。

ユーザーディレクトリ以下に.chef/knife.rbファイルが作成されます。Knife Soloのパス設定を追記します。

knife configure

vi ~/.chef/knife.rb・Knife Soloの作業パスを設定する。

knife[:solo_path]=’/tmp/chef-solo’

Page 30: Sola勉強会 chef入門

Knife Soloのインストール

・ssh経由(rsync)で実行される為、サーバーに条件があります。

・パスワードなしssh暗号鍵認証であること。

・スーパーユーザー権限が必要な為、sudo権限があること。

・VagrantやEC2は初期状態で対応しています。

・条件を満たせば、他のサーバーも利用可能です。

Page 31: Sola勉強会 chef入門

レポジトリの新規作成

・Vagrantの仮想サーバーをrollbackして初期状態に戻すか、別の新しい仮想サーバーを起動します。

・ただし起動する前に、ホスト側から接続出来るようにVagrantfileにIPアドレスを設定しておきます。

・念の為、sandbox機能をonにします。

・Vagrantのディレクトリでレポジトリを新規作成します。

knife solo init chef-repo

例 knife solo init レポジトリのディレクトリ名

・ひな形をGithubからgit cloneしなくても自動生成されます。

Page 32: Sola勉強会 chef入門

レポジトリの新規作成

・自動生成されたディレクトリに移動して一覧表示します。

・cookbooks → ダウンロードした第三者のレシピなど

・site-cookbooks → 自分が作成したレシピ

・nodes → JSONファイルの保管場所

・.gitignore → git管理対象外のディレクトリ指定ファイル

cd chef-repols -la

cat .gitignore

Page 33: Sola勉強会 chef入門

レポジトリの新規作成

・Gitでバージョン管理の初期設定をします。

git initgit add .git commit -m ‘frist commit’

・レシピを変更する毎に、addファイル登録してコミットすれば、バージョン管理することが出来ます。

・Gitサーバーにpushすれば、レシピを共有することが出来ます。

Page 34: Sola勉強会 chef入門

クックブックとレシピの作成

・knifeでクックブックを作成します。

・レシピを編集します。内容は前半のChef Soloと同じです。

knife cookbook create ntp -o site-cookbooks

例 knife cookbook create クックブック名 -o site-cookbooks

vi site-cookbooks/ntp/recipes/default.rb

Page 35: Sola勉強会 chef入門

クックブックとレシピの作成

・パッケージのインストール

package “ntp” do action :installend

・サービスの状態設定

service “ntpd” do supports :status=>true,:restart=>true,:reload=>true action [:enable,:start]end

・レシピファイルを保存してviを終了します。

Page 36: Sola勉強会 chef入門

リモートサーバー設定

・VagrantのCentOS6.4仮想サーバーにChefをリモートからインストールします。

knife solo prepare centos64

例 knife solo prepare リモートホスト名

・JSONファイルがnodesディレクトリに自動生成されます。

vi nodes/centos64.json

・実行するレシピの設定

{”run_list”:[“ntp”]}

Page 37: Sola勉強会 chef入門

Knife Soloを実行

・Knife Soloはリモートからサーバーへレシピを転送して、サーバー上でChef Soloを実行します。

・レシピ内容などに間違いがある場合には、Chefが判別してエラーになります。

・問題無ければ、Vagrantの仮想サーバー上にntpdサービスがインストールされて、サービスが起動します。

・Windows環境の場合、cwRsyncを適切に設定する必要があります。

knife solo cook centos64

例 knife solo cook リモートホスト名

Page 38: Sola勉強会 chef入門

Knife Soloを実行

・レシピが出来たら、Gitで変更ファイルを登録してコミットしておきます。

git add .git commit -m ‘ntp recipe’

・動作確認できたら、仮想サーバーからログアウトしてホスト側に戻ります。

ssh centos64service ntpd statusexit

Page 39: Sola勉強会 chef入門

Knife Soloを実行

・リモートサーバーに転送したレシピ等を消します。

knife solo clean centos64

例 knife solo clean リモートホスト名

Page 40: Sola勉強会 chef入門

基本的な作業の流れ

1.Vagrantで仮想サーバー環境を作成して起動する。

 vagrant up2.ssh環境設定する。

 vagrant ssh-config --host [ホスト名] >> ~/.ssh/config3.レポジトリ(キッチン)を作成する。

 knife solo init [レポジトリのディレクトリ名]4.クックブックを作成してレシピを編集する。

 knife cookbook create [レシピ名] -o site-cookbooks5.仮想サーバーにChefをインストールしてJSONファイルを編集する。

 knife solo prepare [ホスト名]6.knife soloを実行して、リモートから仮想サーバーへインストール

 knife solo cook [ホスト名]7.レシピが完成したらgitでコミットする。

Page 41: Sola勉強会 chef入門

次回 レシピの書き方

・レシピの書き方を紹介します。

・サードパーティが公開しているレシピの利用方法

・課題 ZOMEKIのレシピを書いてみよう。

・本日の勉強会、お疲れ様でした。