20

Click here to load reader

Sola勉強会 chef入門 続編

Embed Size (px)

Citation preview

Page 1: Sola勉強会 chef入門 続編

SOLA勉強会 第4回目

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入門 続編

本日のアジェンダ

■前回のおさらい

 ・基本的な作業の流れ

■サードパーティのクックブック利用方法

 ・公開されているクックブック

 ・Vagrant環境を準備

 ・Berkshelf ・WordPressクックブック

Page 4: Sola勉強会 chef入門 続編

本日のアジェンダ

■レシピの書き方

 ・Attribute(属性)

 ・Resource(リソース) ・テンプレート

Page 5: Sola勉強会 chef入門 続編

基本的な作業の流れ

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

2.レポジトリ(キッチン)を作成して、Gitで初期設定します。

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

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

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

 knife solo cook [ホスト名]6.レシピが完成したらGitで変更を追加してコミットする。

7.仮想サーバーのChef作業ファイルを掃除して完了。

 knife solo clean [ホスト名]

Page 6: Sola勉強会 chef入門 続編

公開されているクックブック

■ネットで様々なクックブックが公開されています。 http://community.opscode.com/cookbooks ・カテゴリーや名称で検索できる。

 ・仕様や評価が掲載されている。

■WordPressのクックブックを試してみます。

 ・Vagrantで仮想サーバーを用意する。

 ・クックブック管理のBerkshelfをインストール

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

Page 7: Sola勉強会 chef入門 続編

Vagrant環境を準備

■SOLA勉強会 第2回 Vagrant入門を参照

 ・http://www.slideshare.net/ShinichiroOhhara/solavagrantver2

■最新版(2014/01/16時点)に環境を揃えましょう。 ・VirtualBox 4.3.6  https://www.virtualbox.org/wiki/Downloads ・Vagrant 1.4.3  http://www.vagrantup.com/downloads.html ・BOXファイル CentOS6.4  http://www.vagrantbox.es/ http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box

Page 8: Sola勉強会 chef入門 続編

Vagrant環境を準備

■最新版(2014/01/16時点)に環境を揃えましょう。 ・Git 1.8.5.3(1.8.5.2)  http://git-scm.com/ ・Chef 11.8.2-1  http://www.getchef.com/chef/install/ ・Ruby 2.1.0 2.0.0-p353 1.9.3-p484  windowsはGitBash付属の1.9.3-p484を利用

  https://www.ruby-lang.org/ja/downloads/ ・RubyGems 2.2.1  http://rubygems.org

Page 9: Sola勉強会 chef入門 続編

Vagrant環境を準備

■ノード(CentOS仮想サーバー)環境 ・サンドボックスを有効にする。

 ・外部参照出来るIPアドレスで起動している事。

■レポジトリを新規作成 ・SOLA勉強会 第3回 chef入門を参照  http://www.slideshare.net/ShinichiroOhhara/solachef

 ・Knife Solo initで新規作成

 ・Gitで初期化コミットしておきます。

■ノード(CentOS仮想サーバー)にchefをインストール ・Knife solo prepareでchefをインストールする。

Page 10: Sola勉強会 chef入門 続編

Berkshelf

■複数のクックブックを統合管理できる。

■bundleコマンドのインストール

 ・bundlerをRubyGemsでインストールします。

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

gem install bundler

gem list | grep bundler

Page 11: Sola勉強会 chef入門 続編

Berkshelf

■bundle初期化 ・Gemfileファイルを作成します。

bundle init

# A sample Gemfilesource "https://rubygems.org"

# gem “rails”gem “berkshelf”

 ・Gemfileを編集します。

Page 12: Sola勉強会 chef入門 続編

Berkshelf

■Berkshelfをインストール

bundle --path vendor/bundle

/cookbooks//vendor/

 ・必要なgemがインストールされます。 ・Git管理から除外する為、.gitignoreファイルにディレクトリを  追記しておきます。

Page 13: Sola勉強会 chef入門 続編

Berkshelf

■クックブックをインストール ・利用するクックブックをBerksfileファイルに記述します。

site :opscodecookbook ‘wordpress’

 ・指定したクックブックをネットから取得します。

bundle exec berks --path cookbooks ・cookbooksディレクトリ以下に関連する複数の クックブックが自動的にダウンロードされます。

Page 14: Sola勉強会 chef入門 続編

WordPressクックブック

■JSONファイル設定 ・レシピ名の他に、初期値を設定します。

 ・MySQLパスワードが最低限必要です。

{“run_list”:[“wordpress”],“mysql”: {

"server_root_password": "password","server_debian_password": "password","server_repl_password": "password"

}}

Page 15: Sola勉強会 chef入門 続編

WordPressクックブック

■WordPressインストール ・Knife Solo Cookを実行して、ノードにWordPressを  インストールします。

knife solo cook centos64

 ・関連するパッケージを自動的にインストール

 ・設定ファイルを設置

 ・各サービスを自動起動

 ・インストール完了するまで、しばらく待ちます。

Page 16: Sola勉強会 chef入門 続編

WordPressクックブック

■ノード(CentOS6.4)のフィルター設定 ・ファイヤーウォールのフィルターにwebサービスポートを

  設定して有効にします。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

sudo vi /etc/sysconfig/iptables

sudo service iptables restart

Page 17: Sola勉強会 chef入門 続編

■Webブラウザでアクセスして確認 ・問題なくWordPressがインストール出来れば、

 インストールページがブラウザから開くことが出来ます。

 http://192.168.33.10/wordpress/

WordPressクックブック

Page 18: Sola勉強会 chef入門 続編

Attribute(属性)

■属性として変数的に利用します。

■動的に変化する値に使用します。

■記述する場所で動作の優先順位が変わる。

■記述出来る場所

 ・クックブックのattributeディレクトリに規定値

 ・Role毎 ・JSONファイルでノード毎

 ・Vagrantfile

Page 19: Sola勉強会 chef入門 続編

Resource(リソース)

■ノードの状態を示します。

 ・パッケージ

 ・サービス

 ・テンプレート

 ・ファイル、ディレクトリ

 ・ユーザー、グループ

 ・スクリプト

 ・cronとか、その他いろいろあります。

Page 20: Sola勉強会 chef入門 続編

テンプレート

■設定ファイルのテンプレートが利用できます。

■指定した位置にファイルを設置できます。

■Attributeをテンプレート内で使用出来る。

■拡張子erbを付けたテキストファイル

■クックブックのテンプレートディレクトリに配置

 templates/default/ファイル名.erb