本文へジャンプします。

サーバータイプの追加、起動時スクリプト実行、グローバルNICの取り外し機能をリリースしました。

2011年10月26日、ニフティクラウドのアップデートを行い、以下の機能が利用できるようになりました。

6vCPU、ハイメモリサーバータイプの追加

サーバータイプに以下の5タイプが追加になりました。

6vCPU モデル

・extra-large16 6vCPU/16GBメモリ
・extra-large24 6vCPU/24GBメモリ
・extra-large32 6vCPU/32GBメモリ

ハイメモリモデル

・small8 1vCPU/8GBメモリ
・medium16 2vCPU/16GBメモリ
CPUリソース、メモリリソースを大量に使用するアプリケーション等に最適なモデルです。

サーバー起動時スクリプト

コントロールパネル・APIから OS 起動時に実行できるスクリプトを流し込むことができます。
サーバー作成と同時にアプリケーションのインストールや設定を行うことができるようになり、サーバー作成後の負担を大幅に軽減することができます。

グローバルNICの取り外し

サーバーからグローバルNICの取り外しができるようになりました。
これまでも ifconfig で落としてグローバルからの疎通を遮断することは可能でしたが、今回のアップデートでNICごと取り外しができるようになりました。
グローバルとの通信を必要としないサーバーで、よりセキュアな状態で運用したい場合に、効果的にご利用いただけるオプション機能です。

今回は、この中からサーバー起動時スクリプトについて、詳しくご紹介したいと思います。
起動時スクリプトについての詳しい使い方は以下から。

起動時スクリプトを使ってみる

起動時スクリプトとは?

コントロールパネルやAPIから、スクリプトを送り込み、OS起動時に実行することができる機能です。
Linux の rc スクリプトに近いものになりますが、大きな違いはコントロールパネル・APIといった、サーバーの外部からスクリプトを送り込める点です。
アプリケーションのインストールから設定までをスクリプトで組んでおき、サーバー作成と同時にスクリプトを送り込むことで、セッティングがすべて完了した状態のサーバーがあがってきます。
サーバーにログインして、コマンドを打ち込む必要はありませんので、サーバー作成後の負担を大幅に軽減することができる機能になります。

さっそく使ってみる

では、さっそく使ってみたいと思います。
今回はコントロールパネルから、サーバー作成時にスクリプトを送り込んで実行させてみたいと思います。
サーバー一覧から「サーバー作成」ボタンをクリックします。
Create_server

イメージ選択~アカウント設定

アカウント設定までは、通常のサーバー作成と同じ流れです。
今回流し込むスクリプトは CentOS 5.6 64bit Plain で検証していますので、イメージは CentOS 5.6 64bit Plain を選択してください。(試していませんが他のイメージでも動くと思います。)
Server_image

スクリプト設定

アカウント設定の次が今回のキモ、スクリプト設定です。
Server_script

「する」にチェックをつけましょう。
スクリプト入力エリアが出現しますので、ひとまず、以下の内容を入力エリアにコピー&ペーストして次に進みます。中身の詳細はのちほど・・・。

#!/bin/sh
/usr/sbin/usermod -p 12CsGd8FRcMSM root
/usr/sbin/useradd -g 100 -p 12CsGd8FRcMSM -d /home/nifty -m nifty
/bin/mkdir -p -m 700 /home/nifty/.ssh
/bin/cp /root/.ssh/authorized_keys /home/nifty/.ssh/.
/bin/chown -R nifty:users /home/nifty/.ssh
/bin/sed -ie 's/^PermitRootLogin .*/PermitRootLogin no/' /etc/ssh/sshd_config
HN=$(/usr/sbin/vmtoolsd --cmd 'info-get guestinfo.hostname')
/bin/sed -ie 's/HOSTNAME=.*/HOSTNAME='${HN}'/' /etc/sysconfig/network
/bin/cp -p /etc/rc.d/rc.local{,.org}
/bin/cat <<EOF1 >> /etc/rc.d/rc.local
/bin/sed -ie 's/exclude=/#exclude=/' /etc/yum.conf
/usr/bin/yum update -y
/bin/sed -ie 's/#exclude=/exclude=/' /etc/yum.conf
/bin/cat <<EOF2 >> /etc/rc.d/rc.local.new
#!/bin/sh
/usr/sbin/vmware-tools-upgrader -p "-d"
/bin/mv /etc/rc.d/rc.local.org /etc/rc.d/rc.local && /sbin/shutdown -r now
EOF2
/bin/chmod 755 /etc/rc.d/rc.local.new
/bin/mv /etc/rc.d/rc.local.new /etc/rc.d/rc.local && /sbin/shutdown -r now
EOF1

※注意※
2 行目の usermod と、3 行目の useradd の -p オプションはパスワード(crypt(3)で暗号化したもの)です。
以下のコマンド等で crypt(3) で暗号化したパスワードを出力して、適宜書き換えてご利用ください。

perl -e 'print crypt "password", "salt"'
サーバー作成

ファイアウォール設定、確認まで進んだら「作成する」ボタンをクリックします。
Server_confirm

しばらくすると、サーバー一覧のコンソールボタンがアクティブになると思いますので、クリックしてコンソールを眺めてみてください。
Console_button

yum update →再起動→vmware-tools update→再起動の流れが確認できるかと思います。

スクリプトの中身とできあがったサーバーの確認

今回流したスクリプトは以下の処理をおこなっています。

root アカウントのパスワード設定
/usr/sbin/usermod -p 12CsGd8FRcMSM root

root アカウントのパスワードはデフォルトでは設定されていないので usermod で更新しておきます。
こうすることでサーバー作成後すぐにコンソールから root アカウントで入ることができます。
コンソールから設定したパスワードで root ログインできることを確認してみてください。

一般アカウント(nifty)の作成とSSH秘密鍵のコピー
/usr/sbin/useradd -g 100 -p 12CsGd8FRcMSM -d /home/nifty -m nifty
/bin/mkdir -p -m 700 /home/nifty/.ssh
/bin/cp /root/.ssh/authorized_keys /home/nifty/.ssh/.
/bin/chown -R nifty:users /home/nifty/.ssh

一般アカウント(ここでは nifty としています)を作成して、root アカウントにある SSH 秘密鍵をコピーします。
こうすることでコントロールパネルで作成、設定した鍵を使い一般アカウントで即 SSH ログインができます。
一般アカウントで SSH ログインができることを確認してみてください。

root アカウントでの SSH 禁止設定
/bin/sed -ie 's/^PermitRootLogin .*/PermitRootLogin no/' /etc/ssh/sshd_config

一般アカウントでの SSH ログイン、root パスワードの設定ができたので、root アカウントでの SSH ログインは不可にしておきます。
root での SSH ログインができないことを確認してみてください。

ホスト名の設定
HN=$(/usr/sbin/vmtoolsd --cmd 'info-get guestinfo.hostname')
/bin/sed -ie 's/HOSTNAME=.*/HOSTNAME='${HN}'/' /etc/sysconfig/network

コントロールパネルで設定したサーバー名は guestinfo.hostname で引き渡されてますのでこれをホスト名に設定します。
hostname コマンドでホスト名が設定されていることを確認してみてください。

カーネルのアップデートも含めた yum update
/bin/cat <<EOF1 >> /etc/rc.d/rc.local
/bin/sed -ie 's/exclude=/#exclude=/' /etc/yum.conf
/usr/bin/yum update -y
/bin/sed -ie 's/#exclude=/exclude=/' /etc/yum.conf

EOF1

yum update ですが、起動時スクリプトはネットワークがあがる前に実行されるため、そのまま流し込んでも update されずに終わってしまいます。
ここではネットワーク起動後に実行されるように、rc.local にスクリプトを流し込んでいます。

vmware-tools のアップデート
/bin/cat <<EOF2 >> /etc/rc.d/rc.local.new
#!/bin/sh
/usr/sbin/vmware-tools-upgrader -p "-d"
/bin/mv /etc/rc.d/rc.local.org /etc/rc.d/rc.local && /sbin/shutdown -r now
EOF2
/bin/chmod 755 /etc/rc.d/rc.local.new
/bin/mv /etc/rc.d/rc.local.new /etc/rc.d/rc.local && /sbin/shutdown -r now

カーネルアップデート後は、vmware-tools をアップデートする必要があります。
カーネルアップデート→再起動→tools アップデート→再起動、という手順を踏む必要があるので、ここでは一旦 rc.local.new というテンポラリに tools アップデートのスクリプトを流し込んでおき、カーネルアップデート完了後に rc.local への差し替えと再起動をしています。

カーネルアップデート、vmware-tools アップデートは、ニフティクラウド探検隊 お手軽ワンライナーでカーネルアップデートしてみた。【取扱注意!】に詳しくまとめられています。確認手順もここに記載されていますので、確認してみてください。

起動時スクリプトを利用する際の注意点
起動タイミング

起動タイミングは以下の通り、S05niftycloud_init で実行されます。
 /etc/rc3.d/S03vmware-tools
 /etc/rc3.d/S04niftycloud_update
 /etc/rc3.d/S05niftycloud_init
ネットワークが起動してくる前なので、yum 等ネットワークを利用するものは rc.local に埋め込んで迂回実行させるなど工夫が必要です。

作成済みサーバーへの流し込み

新規作成だけでなく、作成済みのサーバーでも起動時、再起動時にスクリプトを流し込むことができます。
ただし、10/26 以前に作成したサーバーで利用する場合には OS 初期化スクリプトをインストールする必要があります。
OS初期化スクリプトのご利用設定の手順にそってインストールしておきましょう。
10/26 以降、新規作成するサーバーはセッティング済みなのでそのまま利用できます。

データとして利用したい場合

流し込んだスクリプトは /.niftycloud_user_data に保存されます。
スクリプトとしてでは無く、データとして OS 内部のアプリ等から利用したい場合は、上記のファイルで受け渡しができます。

スクリプトのサイズ

スクリプトのサイズは base64 エンコード後で 8KB になります。
サイズの大きいスクリプトを利用したい場合は、スクリプト本体を別途適当な Web サーバーに配置しておき、起動スクリプトで本体を curl で取得して sh に渡すという方法をおすすめします。

 

まとめ

以上、起動スクリプトの簡単なご紹介でしたがいかがでしたでしょうか。

今回のサンプルは OS まわりの設定と yum update をするといった簡単なものでしたが、例えば、

15分でRails3環境を作ってみよう

15分でCakePHP環境を作ってみよう

上の記事にある設定スクリプトを起動スクリプトに流し込むことで、Rails、CakePHP 環境構築済みのサーバーを立てたり、Chef、Puppet といったシステム管理のクライアントを立ててサーバー作成と同時に管理下に置いたり、などなど、使い方や他のツールとの組み合わせによっては単純な作業負荷軽減を超えて完全自動化までできる機能となっていますので、ぜひ有効に活用いただければと思います。

ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

福澤真

福澤真

ニフティクラウドのコンパネ開発、運用をしています。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。

世良迪夫

世良迪夫

ニフティクラウドのRDBなどを担当しています