クラウドストレージである「Amazon S3」を使って、Linuxサーバ上のデータを安価に保管する事ができます。
以下のような用途で、便利に活用できるかと思います。
- オンプレミス環境やVPSなどのサーバ上にあるデータのバックアップ先
- サーバ間のデータ受け渡し用ストレージ
- DR/BCP対策(リモートストレージへのデータバックアップ)
クラウドストレージである「Amazon S3」を使って、Linuxサーバ上のデータを安価に保管する事ができます。
以下のような用途で、便利に活用できるかと思います。
ファンブライト山下です。
最近、サーバーの構成状態を管理できるツール「Chef」を使い始めています。
やりたかった事が一通り出来るようになりましたので、Chef の概要説明を含めたご紹介です。
「DevOps」や「自動化」、「仮想化」、「クラウド」などのキーワードの中で注目されているツールで、特にIT会社で利用されるシーンが増えています。
「Chef」をうまく使うと、サーバーの「あるべき」構成状態をプログラムで管理できるようになります。
例えば、以下のような事が実現できます。
具体的には、以下のような作業を、プログラムで定義し、実行する事ができます。
上記載はあくまで一例です。実際には、さらに色々な事が出来ます。結構便利です。
ちなみに、「Chef」という名称は、料理人(シェフ)を表現しています。Chef の仕組みでは、料理本の「Cookbook」や、料理レシピにあたる「Recipes」等の名称があります。親しみやすい名称ですので、頭も整理しやすくなります。
今回用意した Chef 利用環境は以下のような感じです。構築対象OSはCentOSです。
基本的に、右側(青色)の「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サービスプロパイダーやアプリ開発会社などで、有効なツールだと思います。ぜひ、ご利用を検討されると良いかと思います。
ファンブライト山下です。
今年からは、こちらのブログにも、技術的な事を軽く書いていこうかと考えています。
今回はVPNの軽い記載です。
VPN接続は、昔から使われている技術です。クラウドサービスが今後さらに広まっていく事によって、さらに企業ユースで利用されるケースが増えていくものと思います。
VPN接続を行う場合、VPNに対応したハードウェアを用意する事が多いかと思いますが、最近では「Vyatta」を使っているクラウドサービスが多くあります。
おはようございます、ファンブライト山下です。
Amazon Web Service(AWS)の EC2インスタンス情報を Excel に出力するプログラムを作っています。
現時点では、EC2インスタンスの一覧をExcel出力する部分までが出来ています。
EC2インスタンスが大量にある場合などで、使い道があるかと考えています。
EC2インスタンスの情報は、Amazon Management Console で確認できるわけですが、例えば以下のケースで用途があると思います。
手作業でExcelに情報を落とし込むのは大変です。非生産的な作業、かつ、単調なコピーペースト作業となります。
そういった場合に、プログラムで一気にファイル化が出来ると非常に便利です。
現在は、インスタンス一覧だけですが、近日中に各インスタンス毎の情報も取得できるようにする予定です。
本プログラムにご興味のある方は、ぜひお問い合わせください。