ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

超簡単!自動インフラ構築!~Cloud Automation(β)~

編集部注:ニフティクラウド Automationは、2017年11月30日をもって、サービスを終了いたします。詳細につきましては、以下のページをご確認ください。

ニフティクラウド Automationのサービス終了につきまして


はじめまして。ニフティの新米クラウドエンジニア大川です。

みなさんは普段、インフラの構築を行っているなかで、以下のような経験をお持ちではありませんか?

start

「サービスの開発を早く始めたい!」

「より早くブログを開設して情報を届けたい!」

そんな思いがあるのにも関わらず、上に書いたようなジレンマを抱えているのではないでしょうか?

そんな中、ニフティクラウドでは6月4日にインフラ構築を自動化するCloud Automation(β)をリリースしました。

このCloud Automation(β)を利用すれば、上で述べたインフラ構築のジレンマを解決することができます!

本記事では、Cloud Automation(β)の概要と、基本的な使い方について説明していきます!

Cloud Automation(β)でインフラ構築が変わる!

Cloud Automation(β)では、ニフティクラウドのコントロールパネル上から、インフラの構成が書かれたテンプレートを実行するだけでインフラ構築が可能です。 サーバ作成、ネットワークの設定など実際の作業は、Cloud Automation(β)が自動で実行してくれます。 有名なオープンソースのブログ/CMSプラットフォームであるWordPressを、Webサーバとデータベースサーバを分けた形で構築する場合、 これまでのインフラ構築とCloud Automation(β)でどのくらい変わるのかを比較してみました。

flow02

手作業だと手順が多い上に、ApacheやMySQLの設定はコマンド入力で進めていくので、時間がかかるものです。 それがCloud Automation(β)だと、たったの3ステップ!!(※WordPressのインストールは共通の作業なのでカウントしていません) しかも、すべての作業はニフティクラウドのコントロールパネル上で行われる、全体で10分もかからない簡単な作業ばかりです。 インフラ構築の時間を大きく短縮することができれば、より早くブログやホームページの開設が可能になります。

また、一度実行したテンプレートは、使い回すことが可能です。 別のテーマでブログやホームページを開設することになったとしても、実行したものと同じテンプレートですぐにインフラ構築が可能なので 作業が増えることはありません。

Cloud Automation(β)で、インフラ構築の自動化による時間短縮と作業のテンプレート化が可能になると、Webサービスの開発はどう変わるのでしょうか。 時間を短縮できれば、サービスのコア機能の開発期間を増やして価値を高められますし、 作業をテンプレート化しているので、別のWebサービス開発プロジェクトでも、似たような構成はすぐに構築が可能となります。

このように、Cloud Automation(β)による構築の「自動化」と「テンプレート化」が、これまでのインフラ構築をスマートに変えていくのです!

Cloud Automation(β)の基本的な使い方

ここからは、Cloud Automation(β)の使い方を説明していきます。 前の章でも、全てが簡単な作業と述べましたが、ニフティクラウドのコントロールパネルから、インフラの構築が可能となっています。

テンプレートを選ぶ

Cloud Automation(β)が実行するテンプレートは、JSON形式で記述されています。 JSON形式の記述ができる方がヘルプを読めば、テンプレートを一から書いていくことも不可能ではありませんが、Cloud Automation(β)ではよく利用されている基本構成やデータベースの冗長構成、 WordPressなどのアプリケーションを、テンプレートを選択するだけで構築ができるデフォルトテンプレートを用意しています。

以下はその一覧です。

  • 基本構成
    • 複数台構成1:サーバー2台を作成し、ファイアウォールの設定を行う
    • 複数台構成2:ロードバランサーとサーバ2台を作成し、振り分け設定とファイアウォールの設定を行う
    • ディスク追加:サーバー1台とディスクを追加した構成を構築し、ファイアウォールの設定を行う
  • データベース
    • MySQL冗長構成:MySQL5.5で、耐障害性などを考慮した冗長構成の構築と設定を行う
    • MySQLシングル構成:MySQL5.5のサーバー1台作成し、設定を行う
    • PostgreSQL冗長構成:PostgreSQL9.1で、耐障害性などを考慮した冗長構成の構築と設定を行う
    • PostgreSQLシングル構成:PostgreSQL9.1のサーバーを1台作成し、設定を行う
  • アプリケーション
    • WordPress冗長構成:WebサーバーとMySQLサーバーを分けた構成で、WordPressのインストール準備を行う
    • WordPressシングル構成:1台のサーバーを作成して、WordPressのインストール準備を行う
    • MODX冗長構成:WebサーバーとMySQLサーバーを分けた構成で、MODXのインストール準備を行う
    • MODXシングル構成:1台のサーバーを作成して、MODXのインストール準備を行う

ここからは、WordPressのWebサーバー1台+MySQLサーバー1台構成を構築する例をもとに説明していきます。 wizard2 (デフォルトテンプレートを選択)

パラメーター入力

テンプレートを選択したら、作成するサーバやMySQLの設定を入力します。 WordPressの冗長構成を構築する場合は、WebサーバーとMySQLサーバーで同一のファイアウォール名を指定できないので注意してください。 また、この時に既存のSSHキーの名前を指定するので、あらかじめSSHキーを作成する必要があります。 あとは、料金や設定を確認してテンプレートを実行するだけです。

wizard_3_1 (パラメーター設定画面)

テンプレート実行

テンプレート実行後は、メイン画面に戻って実行経過や結果を見ることができます。

execution

テンプレート実行中にエラーが発生した場合にも、このメイン画面で確認することが可能です。 下の画像のようにエラーが発生した場合には、テンプレートを再実行することで、前回実行しなかった部分だけの構築がリスタートします。 つまり、サーバー作成後の設定部分でエラーが発生した場合、テンプレートを再実行した時にはサーバー作成がスキップされるということです。 error2 (パラメーターに英数字以外が入力されてエラーになっていることが確認できます)

テンプレートのステータスが「実行成功」になると、サーバが2台構築され、ファイアウォールも設定されます。 success_3

(テンプレート実行後)

WebサーバーにアクセスするとWordPressのインストールをすぐに始められます。 wp_install

(WordPressのインストール画面が開きました!)

実際にサーバーにログインしてみても、WebサーバーとMySQLが動作していることが分かります。

[root@localhost ~]# ps ax | grep 'httpd'
 3158 ?        Ss     0:00 /usr/sbin/httpd
 3162 ?        S      0:00 /usr/sbin/httpd
 3163 ?        S      0:00 /usr/sbin/httpd
 3164 ?        S      0:00 /usr/sbin/httpd
 3165 ?        S      0:00 /usr/sbin/httpd
 3166 ?        S      0:00 /usr/sbin/httpd
 3167 ?        S      0:00 /usr/sbin/httpd
 3168 ?        S      0:00 /usr/sbin/httpd
 3169 ?        S      0:00 /usr/sbin/httpd
 3170 ?        S      0:00 /usr/sbin/httpd
 3171 ?        S      0:00 /usr/sbin/httpd
 3172 ?        S      0:00 /usr/sbin/httpd
 3173 ?        S      0:00 /usr/sbin/httpd
 3174 ?        S      0:00 /usr/sbin/httpd
 3175 ?        S      0:00 /usr/sbin/httpd
 3176 ?        S      0:00 /usr/sbin/httpd
 3177 ?        S      0:00 /usr/sbin/httpd
 3239 ?        S      0:00 /usr/sbin/httpd
 3240 ?        S      0:00 /usr/sbin/httpd
 3241 ?        S      0:00 /usr/sbin/httpd
 3242 ?        S      0:00 /usr/sbin/httpd
 3243 ?        S      0:00 /usr/sbin/httpd
 3244 ?        S      0:00 /usr/sbin/httpd
 3245 ?        S      0:00 /usr/sbin/httpd
 3366 pts/0    S+     0:00 grep httpd

[root@localhost ~]# ps ax | grep 'mysqld'
 2821 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql
 3708 ?        Sl     0:01 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/localhost.localdomain.err --open-files-limit=1024 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock --port=3306
 4306 pts/0    S+     0:00 grep mysqld

WordPressのデフォルトテンプレートを利用してCloudAutomation(β)の基本的な使い方を説明しました。 デフォルトテンプレートを選択する以外にも、コントロールパネルからテンプレートを直接編集することもできます。 例えば、Webサーバーの数を増やした構成も、デフォルトテンプレートをカスタマイズして実行するだけです。 ぜひ、ご自身のサービス用途に合わせたインフラ構成をCloudAutomation(β)で自動化してみてください! custom

(JSONを表示する画面で、テンプレートの直接編集が可能です)

さいごに

今回は、CloudAutomation(β)の基本的な使い方を解説しました。第2弾の解説では、インフラの構築と運用を 自動化するためのフレームワークであるChef-soloを利用した仕組みと、それを活用したCloudAutomation(β)の 一歩進んだ利用方法を、開発者であり社内屈指のChefマスターでもある弊社竹内がご紹介する予定です。

CloudAutomation(β)はインフラ構築自動化ツールとして提供しております。現在、Chefの仕組みを利用した 運用自動化ツールを提供すべく、鋭意開発を進めているところです。お客様の貴重なご意見、ご要望をサービスに 活かし、お役に立てるようなツールを提供していきたいと考えています。

今後ともニフティクラウドをよろしくお願いします!