Ubuntu Weekly Recipe

第265回 Ubuntu Serverをさらっと用意する方法

この記事を読むのに必要な時間:およそ 4 分

Amazon Web ServiceとJujuを使う

Amazon Web ServiceのEC2インスタンス上にUbuntu Serverを構築すれば,物理マシンは必要ありません。Ubuntu Serverを試用するぐらいの用途であれば,料金もそれほどかかるわけではないので,物理マシンの電気代やメンテナンスよりも安上がりになるでしょう。

ただ,Amazon EC2のAPIを使用するためにはいろいろと設定が必要です。そこで今回はJujuを使ってできるだけこの部分を簡素化した方法を説明します注4)⁠

まずAWSのアカウントを作成しておいてください。手順はAWSのアカウントの作成の流れにスクリーンショット付きで説明されているのでそちらを参考にすると良いでしょう。ssh鍵を持っていないなら,作成しておきましょう。

$ ssh-keygen -t rsa -b 2048

さらにJujuの最新版をPPAからインストールし,設定テンプレートを作成します。最後のコマンドは設定が足りないためにエラーになりますが,設定ファイルの作成をするだけなので問題ありません。

$ sudo add-apt-repository ppa:juju/pkgs
$ sudo apt-get update && sudo apt-get install juju
$ juju bootstrap

次に,設定ファイルである~/.juju/environments.yamlファイルを編集して,AWS EC2の設定を行います。

environments:
  amazon:
    type: ec2
    access-key: YOUR-ACCESS-KEY-GOES-HERE
    secret-key: YOUR-SECRET-KEY-GOES-HERE
    region: ap-northeast-1
    control-bucket: juju-faefb490d69a41f0a3616a4808e0766b
    admin-secret: 81a1e7429e6847c4941fda7591246594
    default-series: precise
    juju-origin: ppa
    ssl-hostname-verification: true

environmentsの次の行が環境名です。access-keyとsecret-keyはAWSのコントロールパネルにあるアクセス証明書の「アクセスキーID」⁠シークレットアクセスキー」を指定します。他のAWSのツールと同様に,環境変数AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYが指定されていればそれを使用します。regionはインスタンスを生成するリージョンでここでは東京リージョンを指定しています。control-bucketはS3用ですが今回は使いません。admin-secretは現時点では未実装です。それ以外の設定内容については,Jujuのドキュメントを参照してください。

Amazo EC2用の設定が完了したので,Juju用のインスタンスを一つ生成します。

$ juju bootstrap -e amazon
2013-03-10 22:57:21,612 INFO Bootstrapping environment 'amazon' (origin: ppa type: ec2)...
2013-03-10 22:57:37,218 INFO 'bootstrap' command finished successfully

実際にインスタンスを使えるようになるまで,数分かかります。環境名を毎回指定したくない場合は,environments.yamlにdefault設定を追加しておくと良いでしょう。次のコマンドで,作成されたインスタンスの情報を確認できます。

$ juju status -e amazon
2013-03-10 22:59:12,155 INFO Connecting to environment...
(サーバーの鍵のfingerprintの表示と追加の確認)
2013-03-10 23:01:34,741 INFO Connected to environment.
machines:
  0:
    agent-state: running
    dns-name: (インスタンスのアドレス).amazonaws.com
    instance-id: i-3aaeb349
    instance-state: running
services: {}
2013-03-10 23:01:37,433 INFO 'status' command finished successfully

このインスタンスは,Jujuを使って各種デプロイを実行するために必要なインスタンスです。JujuではCharmという設定スクリプトを使うことで,Bootstrapインスタンスからさまざまなサーバーインスタンスを自動生成・設定できるのです。

Charmには,純粋にUbuntu Serverを立ち上げるだけのubuntu charmが存在するので,それをデプロイしましょう。

$ juju deploy -e amazon ubuntu

juju statusすると「新しいインスタンス(machine)⁠とサービスが追加され,それれが紐づいていることを確認できるはずです。このUbuntu ServerインスタンスにSSHでログインするには次のコマンドを実行します。

$ juju ssh -e amazon ubuntu/0

もちろん,statusで表示されるアドレスに対してsshコマンドで接続してもかまいません。その場合,ユーザー名は「ubuntu」になることに注意してください。

今回作ったインスタンスをすべて破棄するには,次のコマンドを実行します。

$ juju destroy-environment -e amazon

この場合データもすべて破棄され,次にサーバーを作るにはbootstrapから始めなければいけません。ただ,インスタンスはすべて停止されるため,料金がかからない状態となります。

この方法のメリット・デメリット
  • 物理的なリソースの制約にしばられることなく,簡単に複数台のマシンを作成できる
  • Juju/Charmは使い方が若干特殊なため,使い方をおぼえる必要がある
  • 使い方をおぼえておけば,Ubuntu Serverのインストールだけでなく,他のサービス(WordPressやMongoDBなど)のデプロイも自動化できる
  • 利用には料金がかかる注5

ちなみに,Juju GUIというウェブブラウザーを使ったGUIフロントエンドもあります。

注4
Amazon EC2のAPIツールを使う方法は,サーバーガイドにまとまっています。Amazon EC2で使う鍵の違いについても丁寧に説明されているので,Jujuを使うにしろ一度目を通しておいた方が良いでしょう。
注5
試用だけなら無料枠で行うという方法もあります。また,Juju自体はAWS EC2特化ではなく,設定済みのOpenStackを使うこともできますし,ローカルのLXC上にインスタンスを作成することもできます。

インストールしたその後に

Ubuntu Serverをインストールしたら,次は目的に応じた各種サービスのインストールでしょう。これはデスクトップと同様に,apt-getコマンドを使って行えますし,taskselコマンドでタスクごとにインストールもできます。

ウェブ上でも公開されているUbuntuサーバーガイドには,目的ごとによく使われるサーバーソフトウェアの一覧や代表的な設定方法が掲載されていますので,次に何をするべきかの指針になるでしょう。

Ubuntu Server実践バイブル

サーバー管理者向けに,Ubuntu Serverを題材にした本格的な指南書である,Ubuntu Server実践バイブルが3月19日に発売されます。

Ubuntu Server実践バイブル

著者は,Ubuntuの日本のミラーリポジトリの管理者であり,Ubuntu Weekly Topicsで注釈に定評のある執筆者としてもお馴染みの吉田さんです。⁠筆者は本稿執筆時点で目次以上の内容を把握していないため,推測になりますが)400ページという大作ですのできっと読み応えがあることでしょう。

ぜひお近くの書店やAmazonでお買い求めください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。