日本→シンガポール→ベルリンへと流れ着いたソフトウェアエンジニアのブログこの広告は、90日以上更新していないブログに表示しています。プログラミング移転しました。client-serverモデルの入門者向け解説。client-server版の解説があまり見当たらない。英語で検索すればたくさんヒットするし、英語圏でChefはclient-server版が主流に感じる。実際、私の今の勤め先であるベルリンのスタートアップでもそんな何千何万のサーバ数ではなく、小規模な数のサーバ数だがChefはclient-server版を利用している。日本語情報でChef-soloが主流なのは最初に誰かが日本語でChef-soloを解説して、そこから派生して誰もがそれに沿って環境を構築しているうちに日本語のノウハウがSoloばっかりに溜まって、どんどんそっちに行ってしまったのかもしれない。日本語書籍にしても決まったようにSoloばかり。client-server入門を書くことにした。Chefの概念とかChefの基本概念は以下のリンクを参考に。@IT構成管理ツールChefを使ってみよう|VPSならConoHaなぜChefはclient-server版を使うべきなのか面倒だから、大雑把に言う。client-server:全部入りだったら全部入り使った方がいいだろうよ、と。踏み込むとChef-soloでサーバー管理してもスケーラブルではない。Chef-soloでゴリゴリ設定して無理やりたくさんのサーバーを管理する方法の解説を読んだことがあるが、もう無駄な努力という感想しかなかった。client-server版。client-server版はきっちり動く。Soloを使う必要はあまり無い。正直に言うとITエンジニアの姿勢として「サーバは1台だし、うちのサービスがスケールなんてする訳ないからSoloでいいんです」という発想がそもそも気に食わない。現状がたとえサーバー1台でも「俺の技術でいつかはサーバー***台までスケールさせてやるぜ!だからChefはclient-serverだ」ぐらいの気概を持った方が仕事が楽しいに決まってる。client-server、と思うのですがいかがでしょうか?実はSoloのメリットがいまいちまだ分かっていない。client-serverの学習コストはそんなに高いのか、ご確認いただきたい。他にSoloにしかないすごいメリットをご存知でしたら、ぜひコメントを入れていただければ幸いです。Serverへ構成の定義をアップロードしたり設定変更を行う操作端末。手元のPC、MacBookとか。Server:Chefの設定ファイルを管理するサーバーNode:Chefによって管理されているサーバー。Serverが不要という点があると思う。serverを使えば楽ちんに済む。Chef社が用意するウェブアプリに登録してしまえばそれだけでChefサーバーを使える仕組み。自分でChef用のサーバーを立てたりインストーすする必要は無い。client-serverを試す環境はMacOSでやりました。異なる環境の場合は脳内変換して読んでください。VertualBoxのインストールこれらのVagrantの環境構築はChefには直接関係無いが、仮想環境でテストをするにはどうしても必要なので用意する。hostsを選択してdmgファイルをダウンロード。VirtualBoxダブルクリックして指定の通りにNextボタンを押して完了させる。終了したら以下のコマンドで確認。--version5.1.14r112924このようにバージョンが出ればOk。選択してdmgファイルをダウンロード。HashiCorpダブルクリックして指定の通りにNextボタンを押して完了させる。終了したら以下のコマンドで確認。1.9.1このようにバージョンが出ればOk。Vagrant.sshでUbuntuに入る際にIPアドレスを指定して本物っぽくしたいのでVagrantfileの以下のコメントアウトされている部分をアンコメントしてIPアドレス指定する。これでUbuntuの仮想環境が192.168.33.10のアドレスで立ち上がる。upコマンドで立ち上げる。(virtualbox)となっていればOk。このVagrant環境の中にsshのIPアドレスを指定して入る。FATAL.ssh/configに設定を書き込む。~/.ssh/config.ssh/configの中身はこのようになっているはず。FATALこれでIPアドレスを指定してVagrant環境に入れる。変わっていることからVagrant内に入ったことが分かる。curlを使ってソフトをインストールするので一応最新版を入れておく。upgraded.curlを使って最新のchefdkをインストールする。Kit!これでNodeの用意は完了。Vagrant環境から外に出る。closed.WorkstationにChefDkをインストールする。選択してdmgファイルをダウンロード。Downloadsダブルクリックして指定の通りにNextボタンを押して完了させる。終了したら以下のコマンドで確認。1.15.0chefの作業ディレクトリを作る。serverの登録ここでサインアップする。クリックしてOrganizationを作る。organizationの名前にはだいたい会社名を入れる。同名が先に取られていたら残念。Organizationをクリックして、Organization作成は終了。.chefディレクトリこれからChefの大切なツールのひとつであるknifeを使う。knifeはカレントディレクトに入っている.chefディレクトリを探す。無ければ上位ディレクトに遡って探しに行ってしまうので、ここに作っておく。Configをクリックしてknofe.rbをダウンロードする。ダウンロードしたknife.rbを.chef以下に移動する。~/chef-sample/.chefknife.rbの中身はこのようになっているはず。ボタンが出ないことがあるが、そんな時はキーの内容をコピーしてペーストすればOk。~/chef-sample/.chef中身はこのようになっているはず。KEY-----MIIEowIBAAKCAQEAqJCxFv1BoqlTJeK5zTZ6vX6hvQuDzlaN0v+Fo5R2zobP72GaN8GUOhaY........Chefサーバーとの接続確認.chefファイルの用意ができたことで、Chefサーバーとの接続確認がknifeコマンドを通して可能になる。~/chef-sample/.chefchef-user-1.pemknife.rbこのコマンドで確認する。~/chef-sample/cookbooks今までSoloで使ってきたクックブックをそのまま入れてもOkだし、最初のテストとしてのおすすめはChef社が用意しているサンプル。cloneコマンドでサンプルが手に入る。'learn_chef_apache2'...中身はこのような構成になっている。filesできればApacheではなくNginxの方が好みなのだが、そこはまーいい。レシピはこのようになっている。凝ったことはしていない。'index.html.erb'end立ち上げた後はindex.html.erbを入れている。そのindex.html.erbはこのような感じ。serverにアップロード作成したcookbookをknifeコマンドを使ってアップロードする。アップロード先はもちろんChefサーバー。cookbook.以下のコマンドで確認できる。コマンドknifeのBootstrapコマンドでノードを立ち上げる。基本的なコマンドの実行方法はこれ。'recipe[learn_chef_apache2]'この大文字に当たるUSERやらIDENTITY_FILEを環境に合わせて変えればOk。今回構築した仮想環境に合わせて実行する場合は以下のようになる。</body></html>cookbookの更新cookbookを更新して、それをNodeに反映させる。worldメッセージを以下のように変更してみる。</body></html>変更した内容をアップロードする。更新してもいいが、今回はNodeが1つなのでsshで中に入ってchef-clientを実行する。a678282a-517a-4d24-95bd-1e36cb87dae6)実行結果の最後あたりにindex.htmlを更新したメッセージが見える。更新結果の確認Ubuntuをexitして、内容確認する。</body></html>しっかり更新されている。基本的な流れではこれで終了。後はご自身のサーバー構成に合わせて設定を付加するだけ。Soloと比較していかがだったでしょうか?そんなにclient-serverはややこし過ぎて学習こすとが高いー!と言うほどのことでも無いのでは。この記事で多少なりとも「ChefはSoloじゃなくてclient-serverにしとくか。なんと言っても全部入りだしスケールしやすいし」と思っていただければ幸いである。client-serverを導入したいけど日本語情報が少ないしな、と躊躇される方も多いように感じている。client-serverの日本語の言及がウェブ上に増えて欲しい。それもあって本記事の異論反論もぜひご自身のブログなどを使ってたくさん載せてください。client-serverを詳しく解説していないと思われる。EntriesブログをGatsbyの独自ドメインに移行しました「ウェブサービスで1発当てる」なんて言ってないで、誰かを笑顔にするサービス作りに専念する目標にお金を賭けて楽しく達成するウェブサイトを作った。その開発経緯とか有名レストランである映画監督と出逢い、自信がいかに大切で今の私にはそれが無いことを痛感したプッとくる名言サイトを作った「プログラミングはセックスのようなもの。レビューズがじわじわキテるので経過報告はてなブログにある映画の感想を人工知能で集めてウェブサイトを作ったProfileid:tango_ruby日本→シンガポール→ベルリンへと流れ着き、現在ベルリンのIT系スタートアップで働くソフトウェアエンジニア(妻と娘2人持ち、イボ痔持ち)海外転職のメール相談の回答がわりと時間割かれてつらかったので有料化しました。詳しくはAboutページをご確認ください。