ついんてっく

双子のエンジニア(兄:web、弟:インフラ)が気になること、今やってるプロジェクトとかについて書きます。ぶっちゃけ1人でやって続かなかったから監視体制を置いたのが強いサボりん坊や

chefを使ってサーバ管理①〜chefの概要

どうも、弟です。

今回からChefについての記事を上げていこうと思います。

そもそも、Chefに興味をもったきっかけは
「今後インフラ屋としてどう生きていこうか?Cloudの技術が当たり前になっていく中、いままでのようにオンプレミスのサーバ構築の技術だけじゃ通用しなくなるのではないか?」という漠然とした不安をもった中、DevOpsの考え方に出会ったからです。

DevOpsは、ざっくり言うと、Dev(Development:開発)とOps(Operations:運用)との壁をなくし、開発と運用が協力し、早いサイクルでモノを作りましょうという考え方です。
早いサイクルでモノを作る、となると、自動化できるところは自動化していきましょう!という考え方になるため、サーバの設定も手順書を作って作業するのではなく自動化してしまいましょう!となるわけです。
これは、過去の手順を参考にしようとするといつ整備された手順書かわからない!や、業務停止時間までわざわざ残って手作業で手順実行しているような古い環境で働いている弟にとっては衝撃的な考え方でした。
そんなことから、Chefを勉強し、記事化して残していこう!というわけです。

Chefとは

f:id:twins_tech:20160708073422p:plain

Chefとは、サーバの設定や更新を自動化するツールです。

私の現場もそうなのですが、サーバの設定は基本人の手で実施することが多いと思います。
例えば、新規にユーザを追加する場合、その手順書を作成し、人のオペレーションで作業を実施します。当然、人の手で実施するため、 手順書がある場合でもオペレーションミスが発生する場合もあります。(ルーチンワークになってくると、気をつけているつもりでも特に。。。)

Chefは、今まで手順書として起こしていたものをコード化し、Chefに実行してもらうことで自動化してしまおうというツールになります。

Chefの構成について

f:id:twins_tech:20160619113129p:plain

上記構成はChefServer+ChefClientの構成です。
ChefClientが設定を適用したいサーバ群、ChefSeverはそれらを管理する管理サーバとなります。
ChefServerと会話するために手元の端末をWorkStationとよび、WorkStationからChefServerへ命令を出します。
また、Chefでは、構成を管理するコードをレシピとよび、レシピを格納するディレクトリをCookbookとよびます。
つまり、作業者はWorkStationからChefServerにレシピをアップロードし、それをChefClientに適用する、というのが大きな流れになります。

Chefのインストール

Chefは開発元であるOPSCODEから配布スクリプトが提供されているので、以下のコマンドを実行するだけでインストールできます。

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

インストールできたことを確認するために、以下のコマンドを実行します。

chef -v

以下のような実行結果が出れば問題なくインストールできています。

Chef Development Kit Version: 0.14.25
chef-client version: 12.12.13
berks version: 4.3.3
kitchen version: 1.8.0

次回からは実際にレシピを書いて、サーバ管理用のコードを書いていきたいと思います。
それでは