詳細
テーマはChef。
入門からChefの実運用例まで。
所感
- 入門Chef Solo - Infrastructure as Code を読みながらChef Soloで遊べるようになるまで で入門していたので復習も兼ねて
- Chef Server / Chef Clientはまだ試していない
- レシピのテストってうまい事できないのかな?
- 文法チェック以上、Serverspec未満の事は今のところ直接実行して確認してる
- vagrantでvm作る、実行、壊すを繰り返し
- iptablesとか、SELinuxあたりの設定は会社によって or 案件によって固定で、かつそんなに変更がないと思うので、ここだけでも速やかにChefで管理したいな
第1部 明日からはじめる Chef 入門
- tk0miyaさん
サーバ、どうやって構築している?
手順書?Wikiを見て?職人がやってる?
よくある話
- 手順書通りにやってもうごかない
- サーバごとに設定がちがう
- 手順を飛ばしちゃって事故る
- 手作業で複数だいは辛い
- クロスチェック欄など…
自動化しよう!
どうやってやる?
- シェルスクリプト
- PXE + kickstart
- sed/awk
- PHP
- オレオレパッケージ
環境構築について、継続的デリバリーにはこう書かれている。
本番環境と同じ方法で開発環境を構築する
自動化ツールについて
アプローチの違い
- 手順ベース
- 手順を意識する必要
- 手作業と混ぜやすい
- 定義ベース
- あるべき姿を定義(例: nginxが入っているべき)
- 何度実行してもよい = 冪等性 を持つ
- 定義の仕方は覚えないといけない
- 大抵は 、状態を意識しなくてよい
インストールが必要か
- インストールが必要、各ホストにクライアントを
sshで流しこむのか
共有リソースの有無
- よく使う定義の手順は共有されているか
- 書く言語のパッケージリポジトリのようなもの
他の構成ツール
- 定義ベース
- puppet
- chef
- salt
- ansible
- 手順ベース
- cinnamon
- capistrano
- fabric
こんなにあるとは…fabricとpuppetくらいしか聞いた事なかった。
Chef
Chefができること
- OS、ファイル、パッケージの操作
- サービス起動/停止
- ユーザ作成
- gemなどのインストール
Chef特徴
- 定義ベース
- 各ホストにChef(Ruby)のインストールが必要
- 共有リソースを持っている
Chefの種類
- Chef-Server Chef-Client
- Hosted Chef(ASP)
- サーバが大量にある場合有効かも
- Chef-solo
- 練習用 / サーバが少ない場合これでも回せる
- 20台以下くらいならこれで
インストール
の前に
- OSのインストール
- ネットワーク設定
- sudo可能なユーザの作成
は準備必要。
- Rubyが入っていなくてもcurlでいける
環境構築
- 設定対象を決める
- Community siteでクックブックで探す
- 試す
- だめだったら自分で書く
はじめにCommunityからクックブックを探してみるとよいという話。
ただし、固執し過ぎるとハマる。
必要なファイル
- solo.rb
- 設定ファイル
- sodo.json
- run_list 実行するクックブックを列挙
- file_cache_path
- cookbook_path
- attributes 設定情報、クックブックのREADMEを見てみるとよい
自分でクックブックを作ってみる
knifeコマンドで。
利用事例
- Railsアプリ環境
- みんながやるような事をクックブックに
- ネットワーク周りの設定(iptables, SELinux)
- OSの設定(yum, log, syslog)
- ツールインストール(Python, Git, Mercurial)
周辺ツール
- vagrant
- vmを使い捨てられる
- librarian-chef berkshelf
- Ruby のbundlerのようなもの
- Jenkinsクックブック入れようとしたらJavaが必要などの依存を解消してくれる
- knife-solo paratrooper-chef
- chef-soloをリモート実行するツール
Chefのデメリット
- community cookbookの不備
- 全員がChefを覚える必要がある
- 手動で書き換えたところにChefで流し込むと、手動の部分が消えてしまう
- まだ定石がない
- テストが難しい
- serverspec, chefspecが候補
- はじめるにはコストが掛かる
第2部 Chefで構築するBP-Redmine環境
実際の導入事例の紹介。
- BeProudのRedmine環境
- Webサービスのサーバ構成(10台)
BP-Redmine
Redmineの管理
- メンテナンスが大変
- 構築手順が残っていない or 残っていても集めるのが大変(Wikiとかに散らばってる)
それならChefでまとめる。
セットアップ内容
Apache, Redmine, Ldapなどを入れていく方針…。
しかし、一部GUI必須のインストール(Skypeなど)がある。
GUIのインストールもChefでできるかもしれないが、今回は切り離して考える。
使用ツール
- vagrant
- librarian-chef
Webサービス
セットアップ内容
- サーバは10台
- iptablesの設定など
- サーバ間はssh接続
- などなど
サーバの役割
役割ごとにRoleでグルーピング。
- 抽象的なロール
- common
- 機能
- django, nginx, loadbalancerなど
- 大きいロール
- gatewayサーバ
- batchサーバ
- devサーバ
環境別にenvironment的に分け。(Chef 11.4.0ではenvironmentをサポートしていないため)
- 個人のvagrant
- 社内
- 検証用
- 本番
クックブック
- opscodeとgithubから持ってきたもの
- 案件に依存するものは自作
- hosts, ssh, iptables, nginxなどなど
課題など
- 鍵とかはどう管理するか