サーバーの構成状態をコードで管理できる自動化ツール「Chef」のご紹介

ファンブライト山下です。

最近、サーバーの構成状態を管理できるツール「Chef」を使い始めています。

やりたかった事が一通り出来るようになりましたので、Chef の概要説明を含めたご紹介です。

Chef とは?

「DevOps」や「自動化」、「仮想化」、「クラウド」などのキーワードの中で注目されているツールで、特にIT会社で利用されるシーンが増えています。

「Chef」をうまく使うと、サーバーの「あるべき」構成状態をプログラムで管理できるようになります。

例えば、以下のような事が実現できます。

  • 新規でサーバーを構築する際に、手順書化されるような作業を自動化できる
  • 既存のサーバー構成の変更作業を自動化できる
  • 既存のサーバー管理をChefで行う事によって、構成情報を管理できる

具体的には、以下のような作業を、プログラムで定義し、実行する事ができます。

  • OSのアカウントやグループを作成する
  • ディレクトリを作成する
  • パッケージをインストールする
  • 設定ファイルを配置する
  • サービスの起動設定をする

上記載はあくまで一例です。実際には、さらに色々な事が出来ます。結構便利です。

chef-solo_201403

ちなみに、「Chef」という名称は、料理人(シェフ)を表現しています。Chef の仕組みでは、料理本の「Cookbook」や、料理レシピにあたる「Recipes」等の名称があります。親しみやすい名称ですので、頭も整理しやすくなります。

Chef の利用例

今回用意した Chef 利用環境は以下のような感じです。構築対象OSはCentOSです。

chef-summary_201403

基本的に、右側(青色)の「Chef作業端末」から作業を行います。

ただし、作業前に、左側(ピンク色)の「Chef 管理対象ノード」で、基本的なCentOSのインストールを行っておきます。あとは、「Chef作業端末」から自動認証でSSHログインできるように設定を行っておきます。

あとは、「Chef作業端末」で「レシピ」や「テンプレート」などのファイルを用意します。

この「レシピ」というのはRubyのコードです。サーバーにインストールしたいrpmパッケージを定義したり、配置したい設定ファイルを指定したり、起動させたいサーバーや停止したいサーバーを定義したりします。
たとえば以下のコードです。そんなに難しいものではないと思います。

[sourcecode language=”plain”]
package "nginx" do
action :install
end

service "nginx" do
supports :status => true, :restart => true, :reload => true
action [ :enable, :start ]
end

template "nginx.conf" do
path "/etc/nginx/nginx.conf"
source "nginx.conf.erb"
owner "root"
group "root"
mode 0644
notifies :reload, ‘service[nginx]’
end
[/sourcecode]

このRubyコードでは、Nginx(Webサーバー)をインストールし、起動設定を行い、設定ファイルを配置して Nginxを再起動します。

このRubyコード以外に、Nagix 設定ファイルのテンプレートを用意します。例えば以下のようなファイル(nginx.conf.erb)を指定の場所に配置しておきます。

[sourcecode language=”plain”]
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

server {
listen <%= node[‘nginx’][‘port’] %>;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
[/sourcecode]

このテンプレートファイルを元に、Chef実行時に、Nginx設定ファイルとして対象ノードに配布されます。

あとは、Chef管理対象ノードを定義したJSONファイルを用意します。以下のようなファイルです。

[sourcecode language=”plain”]
{
"nginx": {
"port" : 80
},

"run_list":[
"recipe[nginx]"
]
}
[/sourcecode]

このJSONファイルで、レシピ「nginx」を指定しています。また、ポート番号「80」を指定していますが、この値が先ほどの「Nagix設定ファイルのテンプレート」で書かれている以下の場所に埋め込まれます。

[sourcecode language=”plain”]
<%= node[‘nginx’][‘port’] %>
[/sourcecode]

これらのファイルを用意した後に、Chef(knife solo)を実行すると、コードに従ってインフラの設定が行われるわけです。人が手順書を見ながら実施するような作業が自動的に実施できるわけです。

実行コマンドは以下になります。

$ knife solo cook (対象ノード)

また、Chefの導入メリットは自動化だけではありません。「Chefでレシピを何度実行してもレシピのとおりに実行される」=「サーバーの構成状態をレシピ通りに管理できる」という事が実現できます。

ただし、このメリットは、構成情報の管理方法を今までのやり方から変更するなどの業務プロセス改革が伴うと考えられます。既存のやり方に大きな課題認識がある場合に、メリットと感じられると思われます。

以上が、Chef を使ったサーバー構築自動化の概要となります。私自身もこれからChefを使いこなせるように取り組んでいく事になりますが、とても面白いツールです。

多くのサーバーを構築し管理するITサービスプロパイダーやアプリ開発会社などで、有効なツールだと思います。ぜひ、ご利用を検討されると良いかと思います。

プロジェクト管理ツール Redmine のご紹介

ファンブライト山下です。

日々の業務プロセスや、プロジェクトを進めていると、問題や課題を管理し、進捗を記録し、他のメンバーやお客様と共有する為の「仕組み」が必要になります。

皆さんはどのように管理されているでしょうか?

Windows Server 2003 のサポート 2015年7月15日に終了予定

ファンブライト山下です。

先日、「Windows Server 2003からの移行を早めに検討を~マイクロソフトが呼びかけ」という記事が出ていました。

Windows XP は 2014年4月9日にサポートが終了する為、現在移行作業に追われている方も多いかと思いますが、今後、Windows Server 2003 も 検討と対応が必要になってきます。

「サーバー」であるために特有の課題もあります。もし、まだ検討が進んでいない場合は、ぜひ、上記載URLや関連の記事をご一読されておく事をお勧めします。

仮想デスクトップの利用イメージ

ファンブライト山下です。

IT業界では、ここ数年、デスクトップ仮想化インフラ(Virtual Desktop Infrastructure)の話題が多いです。Virtual Desktop Infrastructure の頭文字をとった略称として「VDI環境」とも言います。「仮想デスクトップのインフラ環境」とも言います。

VDI環境はとても多くのメリットがあります。

  • アクセス端末に情報を残さないので、アクセス端末の盗難紛失対策になる。
  • データのバックアップなど、多くの管理作業をサーバーで一括実施できる。
  • アクセス端末は固定されない為、オフィスや在宅など、どこでも使い慣れたデスクトップ環境を利用できる。
  • etc…

VDI環境のデメリットとしては、VDI環境のインフラを構築する為にはH/WやS/Wの費用が高価である事、構築難易度が高い事です。

 

「VDI環境の導入を検討してみたい。」というお客様に、VDI環境についてご説明できるようになっておきたいので、今回「VMware Horizon View」の評価版を使って検証環境を作ってみました。

(以前、Citrix XenDesktopの検証環境をつくった経験もあった為、多少ハマりつつも、動く検証環境が出来ました。)

 

どんな感じで使うのかを、以下に簡易説明させていただきます。

1.アクセス端末にインストールした「VMware Horizon View Client」アイコンをクリックし、サーバに接続します。

VMware_Horizon_View_Client_Dialog

 

 

 

 

 

 

 

2.接続するアカウント情報を入力します。

VMware_Horizon_View_Client_account

3.デスクトップを選択して接続します。

VMware_Horizon_View_Client_Desktop

4.デスクトップに接続できます。

VDI-2

 

仮想デスクトップの利用イメージがなんとなくついたかと思いますが、いかがでしょうか?

 

ご興味がございましたら、お声掛けください。デスクトップ仮想化に関するご説明や、検証環境の構築、構築ベンダーのご紹介などお手伝いさせていただきます。