ウェブサイト検索

Ubuntuを使用してカスタムDebian AMIを作成し、バンドルのアップロードとアクセスを行う方法


紹介

このガイドでは、Amazon Elastic Compute Cloud (Amazon EC2) 上で Debian ETCH AMI を作成、バンドル、アップロード、実行、接続するために必要なすべての手順を提供します。このガイドでは Ubuntu 9.04 を使用していますが、java と ruby パッケージが含まれている限り、他の Linux ディストリビューションも使用できます。Amazon EC2 に関する詳細情報は、こちらをお読みください。

このページはAmazon Web Servicesの関連会社ではありません。!

前提条件

  • インターネット接続
  • Amazon Web Services (AWS) の S3 および EC2 サービスに登録されたユーザーアカウント
  • AmazonアクセスキーID
  • Amazonシークレットアクセスキー
  • アマゾンアカウント番号
  • Amazon X.509証明書
  • 少なくとも1GBの空きハードディスクスペース
  • 次のパッケージをインストールする必要があります:
apt-get install ssh debootstrap ruby 
sun-java6-bin libopenssl-ruby curl

始める前に

 このガイドの次のセクションでご覧になるように、AmazonのEC2 Webサービスを正常に使用するには多くの異なるファイルが必要です。簡素化のために、~/に「aws」というディレクトリを作成し、迅速なアクセスのために必要なすべてのファイルをそこに保存します。例外が3つあります。

  • AWSのAPIおよびAMIツールを/optディレクトリにインストールします。
  • /chroot に chroot 環境が作成されます。
  • Amazonのアカウント証明書と秘密鍵は ~/.ec2 に保存されます。

Amazonマシンイメージを作成する

chroot 環境での AMI の作成

ddを使ってディスクイメージを作成する

まず、インストールに適したサイズのディスクイメージを作成する必要があります。この場合、約750MBのディスクイメージを作成します。そのために、ddコマンドを使用します。

dd if=/dev/zero of=debian-ami count=750 bs=1M

このコマンドの出力として、debian-amiというファイルが作成され、私たちの~/awsディレクトリに保存されます。

ディスクイメージ上にファイルシステムを作成する

このイメージをマウントする前に、ファイルシステムを作成する必要があります。この作業には、次のようにmkfs.ext3コマンドを使用できます。

mkfs.ext3 -F debian-ami

あなたの端末出力は以下のようなものであるべきです:

新しく作成されたディスクイメージをマウントする

さて、私たちは新しいディスクイメージをマウントする準備がほぼ整いました。その前に、chroot環境をどこで実行するかを決める必要があります。このガイドでは、/chrootディレクトリを使用します。ルート(スーパーユーザー)に切り替え、[[mkdir|mkdir]]コマンドでディレクトリを作成します:

mkdir /chroot

私たちの ~/aws ディレクトリからディスクイメージをマウントするために、次のLinuxコマンドを使用します:

mount -o loop /home/linuxconfig/aws/debian-ami /chroot

Debianを/chrootにインストールする

/chrootにDebianをインストールするには、DebianおよびUbuntuで見つけることができるdebootstrapコマンドを使用します。もし私たちの前提条件のセクションに従った場合、debootstrapコマンドはすでに利用可能なはずです。

debootstrap --arch i386 etch /chroot/ http://ftp.debian.org

このコマンドの出力はかなり長くなります。debootstrapは、必要なパッケージを取得、検証、解凍、インストールします。

最後には、次の端末のスクリーンショットに示されているようなメッセージが表示されるはずです。

chrootされたDebianインストールを構成する

chroot環境に入る

最小限のDebianシステムパッケージを正常にインストールしたので、このインストールにchrootし、いくつかの変更を行う必要があります。chrootコマンドを使用してchroot環境に入ります。

chroot /chroot

デバイスを作成する

mount /proc
 cd /dev
 MAKEDEV console
 MAKEDEV std

ルートパスワードを変更する

これはスーパーユーザーアカウントのための新しいパスワードを作成します:
注: まだchroot環境にいます!

passwd

ネットワークインターフェースを設定する

ブート時にDHCPを使用するために、ネットワークインターフェイスファイルを編集する必要があります。このコマンドでできます:

echo -e 'auto lo\niface lo inet loopback\nauto eth0\niface eth0 inet dhcp' >> /etc/network/interfaces

/etc/fstabファイルを修正する

マウントポイントをいくつか定義する必要があります:

echo -e '/dev/sda1 / ext3 defaults 0 1\n/dev/sda2 swap swap defaults 0 0' > /etc/fstab

sshdをインストールする

新しいAMIが準備できて、アップロードされ、起動されたら、SSHで接続します。したがって、SSHデーモンをインストールする必要があります。apt-getを使用してSSHパッケージをインストールします:
注意:まだchroot環境にいます。

apt-get install ssh

あなたの chroot 環境はホストと同じインターネット接続を共有しているので、すべてがうまくいくはずです。「ロケールの設定に失敗しました。」という警告メッセージについて心配しないでください。

chroot 環境からの退出/アンマウント

すべてが準備完了しているはずなので、chroot環境から出ることができます。

exit

そして、アンマウントを使用してイメージファイルをアンマウントします:

umount -l /chroot

新しいAmazonマシンイメージをアップロードする

Amazonの環境変数、キー、および証明書を設定します。

今、私たちはアマゾンのウェブサイトからアカウントの詳細と証明書を取得する時が来ました。~/.ec2 ディレクトリを作成し、その中に証明書を保存してください。手順については[http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=84 こちら]に説明されています。GET STARTED -> アカウントの設定に移動してください。プライベートキーと証明書を保存した場合、環境変数を設定することで、amiおよびapiツールを使用する際にフルパスを参照する必要がなくなります。

mkdir ~/.ec2
export EC2_PRIVATE_KEY=~/.ec2/pk-K5AHLDNT3ZI28UIE6Q7CC3YZ4LIZ54K7.pem
export EC2_CERT=~/.ec2/cert-K5AHLDNYYZI2FUIE6R7CC3YJ4LIZ54K7.pem

EC2 AMIツールとEC2 APIツールはJavaに基づいています。Javaの環境変数を設定し、Javaがインストールされていることを確認してください:

export JAVA_HOME=/usr/
$JAVA_HOME/bin/java -version

export EC2_ACCNO=155678941235
export ACCESS_KEY=1WQ6FJKYHJMPTJ3QR6G2
export SECRET_KEY=VDYxRzosnDWvxrJ97QntVpsSUBAavGHE1QJELEyY

Amazon S3からEC2 AMIツールを設定する

このチュートリアルのこの部分では、新しいAMIをバンドルしてアップロードするためにEC2 AMIツールを設定して使用する方法を説明します。

EC2 AMIツールをダウンロード

amiツールをダウンロードする:

cd ~/aws
 wget http://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip

EC2 AMIツールをインストールする

ec2-ami-tools.zipを/optに展開してください:
注: sudoを使用するか、rootに切り替えてください!

unzip -d /opt/ ec2-ami-tools.zip

AMIツールをPATH変数とEC2_HOMEに追加します:

export PATH=$PATH:/opt/ec2-ami-tools-1.3-21885/bin
export EC2_HOME=/opt/ec2-ami-tools-1.3-21885

新しいAMIをまとめる

すべての設定が完了し、新しいDebian AMIをバンドルする準備が整いました。「arch [i386] の値を指定してください」と尋ねられます。空白のままにすると、デフォルトは10MBです。

ec2-bundle-image -i debian-ami --cert $EC2_CERT --privatekey $EC2_PRIVATE_KEY -u $EC2_ACCNO

AMIファイルをアップロードする

以前、バンドルイメージamiツールはデフォルトで/tmpディレクトリにファイルを作成します。これは、新しいAMIのためのXMLマニフェストがある場所でもあります。次にAMIをアップロードします:
注: バケットが存在しない場合は作成されます!さらに、バケットの名前は自分で選ぶ必要があります。

ec2-upload-bundle -b linux-debian-etch -m /tmp/debian-ami.manifest.xml -a $ACCESS_KEY -s $SECRET_KEY

Amazon S3からEC2 APIツールをセットアップする

このチュートリアルのこの部分では、新しいAMIを登録して使用するためにEC2 APIツールを設定および使用する方法について説明します。

EC2 APIツールをダウンロードする

APIツールをダウンロードする:

cd ~/aws
wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip

EC2 APIツールをインストールする

ec2-api-tools.zipを/optに解凍します:
注意: sudoを使用するか、rootに切り替えてください!

unzip -d /opt/ ec2-api-tools.zip

APIツールをPATH変数およびEC2_HOMEに含めてください。

export PATH=$PATH:/opt/ec2-api-tools-1.3-24159/bin/
export EC2_HOME=/opt/ec2-api-tools-1.3-24159/

APIツールでAMIを登録する

この段階で、私たちは新しいAMIを登録する準備が整いました。登録後、AMIのID番号を取得します。
注:Amazon APIツールの場合、Amazon EC2の証明書および秘密鍵へのパスは、前に定義された環境変数から自動的に抽出されます。

ec2-register linux-debian-etch/debian-ami.manifest.xml

AMIインスタンスを起動する

AMIの登録番号が手に入ったので、始めることができます。

ec2-run-instances ami-b9f115d0

AMIインスタンスを説明する

さて、AMiが実行中であり、IPアドレスや完全なドメイン名などの追加情報が必要です。AMiを開始した際に生成されたインスタンス番号を使用してください。(前の手順を参照!)

ec2-describe-instances i-c369ccaa

sshを使用してAMIに接続する

これがあなたの最初のAMIでない場合、ポート22は既に有効になっている可能性があります。もし有効でない場合は、接続を試みる前にまずこのコマンドを実行してください:

ec2-authorize default -p 22

有効にすると、新しいDebian ETCH AMIに接続するためにshhコマンドを使用します:

ssh root@IP-address or full-domain-name

注意: 以前に ec2-describe-instances コマンドで完全なドメイン名を取得しました

付録

その他の便利なEC2コマンド

コンソール出力

私たちのインスタンスで何が起こっているかを見るために、インスタンスIDと組み合わせてec2-get-console-outputを使用することができます:

ec2-get-console-output

Amazon EC2インスタンスをシャットダウンする

Amazon EC2 インスタンスをシャットダウンするには、次のコマンドを使用します:

ec2-terminate-instances

登録されたAMIのリストを表示する

登録されたAmazonマシンイメージのリストを見るには:

ec2-describe-images

関連記事: