カスタム エラスティック イメージの作成
エラスティック イメージとは、Elastic Bamboo 機能で使用するために Amazon のデータ センターの 1 つに保存されている Amazon Machine Image (AMI) です。エラスティック イメージを使用して、エラスティック インスタンスを作成してからエラスティック エージェントを作成します。概念的には、エラスティック イメージはコンピューターのブート ハード ドライブで実行されるオペレーティング システムに相当し、エラスティック インスタンスはこのオペレーティング システムで実行されるソフトウェアです。
Amazon Web Services (AWS) に登録されたエラスティック イメージのそれぞれに、AMI ID と呼ばれる独自の識別子があります。
1 つの Bamboo Server に複数のエラスティック イメージを関連付けられます。1 つの既定の共有イメージがアトラシアンによって AWS で管理されており、すべての Elastic Bamboo ユーザーが利用できます。
大まかに言うと、カスタム エラスティック イメージを作成するプロセスでは、Amazon EC2 で利用可能な既存の Amazon Machine Image (AMI) の 1 つを取得し、その AMI のインスタンスを起動し、インスタンスをカスタマイズしてから、カスタマイズ後のインスタンスからイメージを作成します。このイメージは、Bamboo インストールでエラスティック イメージとして使用できます。
カスタム イメージを作成する代わりに次のことを検討してください (Linux/UNIX のみ)。
- Bamboo 管理 / イメージ設定に用意されているインスタンス設定スクリプトを使用できます。このスクリプトは、エージェントが起動する前にルート ユーザーとして実行されるものです。
- 「EBS を使用するようにエラスティック インスタンスを設定する」で説明されているように、Amazon の Elastic Block Store (EBS) を使用して既存の Bamboo イメージをカスタマイズすることを検討してください。
上記のオプションは、新しいカスタム イメージを作成するよりもはるかに簡単です。問題が発生し、支援が必要な場合は、遠慮なくお問い合わせください。
始める前に
- これは簡単な手順ではなく、おそらく必要ないでしょう。
- アトラシアンはカスタム エラスティック イメージをサポートしていません。代わりに、ストック イメージから作成したエラスティック エージェントをカスタマイズすることを検討してください。
- 次の手順に記載の EC2 コマンドの多くは、コマンド ライン ツールではなく AWS コンソールを使用して実行できます (イメージの登録など)。自分が一番使いやすい方法を使用してください。
On this page:
1. 要件
まず、次の設定が完了していることを確認してください。
- EC2 が設定された Amazon Web Services (AWS) アカウント — Elastic Bamboo をすでに使用している場合は、EC2 が設定された AWS アカウントをすでに保有しているはずです。そうでない場合は、「Elastic Bamboo の使用を開始する」を参照してください。
Amazon EC2 API ツール — ローカル マシンに EC2 API ツールをインストールする必要があります。そうしないと、AMI インスタンスを起動してアクセスすることができません。なお、これらのツールを実行するには Java ランタイム環境が必要です。次のコマンドを実行すると、EC2 API ツールをインストールできます。
wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip unzip ec2-api-tools.zip- 環境変数 — カスタム エラスティック イメージを作成する前に、ローカル マシンで次の環境変数を設定する必要があります。
EC2_HOME— インストール済みの EC2 API ツールのパスに設定しますEC2_CERT— EC2 アカウントに割り当てられた証明書のパスに設定します。EC2_PRIVATE_KEY— AWS アカウントに割り当てられた非公開キーのパスに設定します。
登録済みキー ペア — AMI インスタンスで EC2 API ツールを使用するには、非公開キー ファイルと証明書ファイルで構成される登録済み EC2 キー ペアが必要です。以前に EC2 キー ペアを生成して登録したことがある場合は (EC2 API ツールを使用するためなど)、それを再利用できます。新しいキー ペアを生成する必要がある場合は、次のコマンドを使用して生成できます。
ec2-add-keypair <key_pair_name>非公開キーの内容はコンソールのコマンド ライン出力に表示されます。この内容を先頭に次の行を追加してファイルに保存します。
"--BEGIN RSA PRIVATE KEY--"末尾には次の行を追加します。
"--END RSA PRIVATE KEY--"この非公開キー ファイルは、AMI インスタンスへのアクセスに使用されます。次のコマンドを実行して、非公開キー ファイルに対する適切な権限を設定します。
chmod 600 <private_key_file>
2.既存の AMI を選択する
空白の AMI から始めるのではなく、既存の Linux/UNIX AMI を選択してカスタマイズすることを強くお勧めします。AMI を選択する際には、カスタム エラスティック イメージから 32 ビットと 64 ビットのどちらのインスタンスを起動するかを決定し、その選択に適合する既存の AMI を選択してください。
カスタマイズに推奨される既存の Linux/UNIX AMI は次のとおりです (優先度が高い順)。
| ソース | 説明 | AMI リスト |
|---|---|---|
| アトラシアン | アトラシアンから提供されているストック イメージの 1 つ。これは、Linux または Windows 用の Amazon イメージを Bamboo 用に更新して準備したものです。つまり、Bamboo の前提条件をインストールする必要はありません。 | Bamboo インスタンスの管理 / イメージ設定で利用可能 |
| Amazon | Amazon から提供されている Centos ベースのイメージ。Bamboo の前提条件はインストールされていません。通常は、アトラシアンの AMI を使用することをお勧めします。 | Amazon のサイト |
| Canonical (Ubuntu) | Canonical (Ubuntu Linux プロジェクトの背後にある会社) から提供されている公式の Ubuntu イメージです。Bamboo の前提条件はインストールされていません。 | Canonical のサイト |
アトラシアンの AMI (およびその ID) は、メジャー リリースとマイナー リリースの両方を含め、Bamboo のリリースのたびに変わる可能性があります。現在実行中の Bamboo バージョンに対応するアトラシアンの AMI ID にすばやくアクセスするには、その Bamboo サイトを Web ブラウザで開き、[Image Configurations (イメージ設定)] ページにアクセスします (詳細については、「エラスティック イメージ設定の管理」を参照)。アトラシアンの AMI の AMI ID には、「(stock image) ((ストック イメージ))」というラベルが付いています。
3.インスタンスを起動する
カスタマイズ対象の既存の AMI を選択したら、次のステップは AMI のインスタンスを起動することです。
3.1 アトラシアンの既定の AMI のインスタンスを起動する
アトラシアンの既定の AMI をカスタマイズする場合は、Bamboo の管理セクションからインスタンスを起動する必要があります。「エラスティック インスタンスを起動する」を参照してください。
アトラシアンの既定の AMI は、コマンド ラインの ec2 ツールでは起動できません。これは、起動時に、アトラシアンの AMI の Bamboo エージェントによって、それが Bamboo Server から起動されたかどうかが確認され、そうでない場合はすぐにシャットダウンされるためです。
起動したら、「エラスティック インスタンスにアクセスする」を参照して、実行中のインスタンスへのアクセス方法に関する詳細を確認してください。
3.2 コマンド ラインからインスタンスを起動する
次のように、ec2-run-instances コマンドを使用してインスタンスを起動します。
ec2-run-instances <image_name> -k <key_pair_name>
ここで、<image_name> は前のステップで選択した AMI の名前であり、<key_pair_name> は「1. 要件」で生成した登録済みキー ペアの名前です。このキーの公開証明書がインスタンスに挿入されます。
たとえば、キー ペア my-keypair を使用してイメージ ami-e55bbd8c のインスタンスを起動する場合は、次のコマンドを実行します。
ec2-run-instances ami-e55bbd8c -k my-keypair
このコマンドのコマンド ライン出力は次のとおりです。
INSTANCE i-25b86743 ami-e55bbd8c running my-keypair
i-25b86743 は、上記の例の新しいインスタンスの名前です。新しいインスタンスの名前は、次のステップでインスタンスにアクセスするために必要になるため書き留めておく必要があります。
使用されていないインスタンスをシャットダウンすることを忘れないでください。
インスタンスを起動すると、インスタンスの稼働時間に対して Amazon から請求されることに注意してください。このステップの後にカスタム エラスティック イメージの設定を中止する場合は、必ず AWS コンソールからインスタンスをシャットダウンしてください。
3.3 Bamboo からインスタンスを起動する
また、カスタマイズされていないイメージを Bamboo から新しく作成して、カスタマイズを開始することもできます。この方法の欠点は、わずか 40 分後に Bamboo によってインスタンスがシャットダウンされることです。利点は、エージェントを 1 つのステップでカスタマイズできることです (イメージをカスタマイズまたは作成し、Bamboo から起動し、イメージを再び保存する必要はありません)。
4.インスタンスにアクセスする
Bamboo からインスタンスを起動したら、「エラスティック インスタンスにアクセスする」を参照して、実行中のインスタンスへのアクセス方法に関する詳細を確認してください。
インスタンスが実行されていれば、インスタンスにアクセスできるようにインスタンスのアドレスを取得する必要があります。そのためには、次のコマンドを使用します。
ec2-describe-instances <instance_name>
たとえば、インスタンス i-25b86743 のアドレスを調べるには、次のように入力します。
ec2-describe-instances i-25b86743
このコマンドのコマンド ライン出力は次のようになります。
RESERVATION r-790f7210 121852097033 default
INSTANCE i-25b86743 ami-e55bbd8c ec2-174-129-94-241.compute-1.amazonaws.com
domU-12-31-39-04-38-87.compute-1.internal running elasticbamboo 0 m1.small
2009-06-24T12:36:20+0000 us-east-1c aki-a71cf9ce ari-a51cf9cc
monitoring-disabled
上記の例のインスタンスのアドレスは ec2-174-129-94-241.compute-1.amazonaws.com です。
その後、このアドレスを使用して SSH 経由でインスタンスにアクセスできます。手順については、「エラスティック インスタンスにアクセスする」を参照してください。このドキュメントのサンプル コマンド テキストを使用する場合は、次のように調整する必要があります。
- サンプル コマンド テキスト内の
/opt/bamboo/home/xml-data/configuration/elasticbamboo.pkを「1. 要件」で生成した非公開キー ファイルを置き換えます。 - サンプル コマンド テキスト内の
ec2-68-111-185-197.compute-1.amazonaws.comを対象のインスタンスのアドレスに置き換えます。
5.インスタンスをカスタマイズする
インスタンスが実行中になりました。カスタマイズの手順は使用しているオペレーティング システムによって大きく異なります。
6.カスタマイズしたインスタンスのイメージを作成する
新しいイメージを作成するプロセスは、イメージがインスタンス ストアと EBS ルート イメージのどちらに基づいているかによって異なります。イメージのタイプは、AWS コンソールまたは ec2-describe-images を使用して確認できます。
EBS ルート インスタンスからイメージを作成する
手順については、Amazon チュートリアルを参照してください。
インスタンス ストア (S3) インスタンスからイメージを作成する
最後のステップは、カスタマイズしたインスタンスからイメージを作成することです。そのためには、次の情報が必要です。
- Amazon アカウント番号
- アクセス キー ID
- シークレット アクセス キー
- イメージの保存に使用される Amazon S3 バケット名 (Amazon S3 にアクセスできない場合は、このページでサインアップできます)。
Amazon 非公開キー ファイルと証明書をインスタンスに転送します。
キー ファイルをインスタンスに転送するには、ローカル マシンで次のコマンドを実行します。scp -i <private_key_file> $EC2_PRIVATE_KEY root@<instance_address>:/mnt scp -i <private_key_file> $EC2_CERT root@<instance_address>:/mntここで、<private_key_file> は、「1. 要件」の「登録済みキー ペア」ステップでローカル マシンから作成した非公開キー ペアです。<instance_address> は、「4. インスタンスにアクセスする」で調べたインスタンスのアドレスです。
EC2_HOME および JAVA_HOME 環境変数を設定します。
これらの環境変数を設定するには、インスタンスで次のコマンドを実行します。export EC2_HOME=<location of your EC2 tools installation> export EC2_PRIVATE_KEY=/mnt/<ec2_private_key_file> export EC2_CERT=/mnt/<ec2_certificate_file> export JAVA_HOME=<path to JRE used to start the agent>次のように、
ec2-bundle-volコマンドを使用して、カスタマイズしたインスタンスのイメージを作成できます。ec2-bundle-vol -c $EC2_CERT -k $EC2_PRIVATE_KEY -u <amazon_account_number> -p <elastic_image_name> --batch --debugここで、<elastic_image_name> は、カスタム イメージに割り当てる名前です (「CustomImage1」など)。
イメージが作成されたら、次のコマンドを実行して Amazon S3 にアップロードする必要があります。
ec2-upload-bundle -b <s3_bucket_name> -m /tmp/<elastic_image_name>.manifest.xml -a <access_key_id> -s <secret_access_key> --retry --debugここで、<s3_bucket_name>、<access_key_id>、<secret_access_key> は、前述の Amazon S3 バケット名、アクセス キー ID、シークレット アクセス キーです。<elastic_image_name> は、カスタム イメージに割り当てる名前です (「CustomImage1」)。
次に、
ec2-registerコマンドを使用して、Amazon EC2 にイメージを登録する必要があります。ec2-register <s3_bucket_name>/<elastic_image_name>.manifest.xmlここで、<s3_bucket_name> は、前述の Amazon S3 バケット名です。<elastic_image_name> は、カスタム イメージに割り当てる名前です (「CustomImage1」)。このコマンドの出力には、カスタム イメージの AMI ID が表示されます。
7. 次のステップ
カスタム エラスティック イメージの作成が終了したら、それを使用できるようにするために、さらに 2 つのステップを完了する必要があります。
最初に、エラスティック イメージ設定を作成して、カスタム エラスティック イメージを Bamboo インストールに関連付ける必要があります。新しいカスタム イメージの AMI ID を書き留めて、「エラスティック イメージ設定の管理」の手順に従ってください。
次に、イメージから起動したインスタンスで実行されるエラスティック エージェントの機能を設定する必要があります。そのためには、カスタム エラスティック イメージの実際の用途に合わせて、適切なビルダー、JDK、Perforce、カスタム機能をエラスティック イメージ設定に追加します。たとえば、JDK 1.6 と Maven 2 をインストールしてカスタム エラスティック イメージを作成した場合は、JDK 1.6 と Maven 2 の機能をエラスティック イメージ設定に追加する必要があります。詳細な手順については、「エラスティック エージェントの機能の設定」を参照してください。
8. お困りですか?
さらに支援が必要な場合は、次のようなリソースを活用できます。
- AWS サポート センター — 特に Bamboo に関係のない Amazon サービスで問題が発生した場合は、AWS サポート センターから基本的なサポートを受けることができます。Web / 電話サポートを利用するには、Premium サポートにサインアップする必要があります。
- AWS リソース センター — AWS リソース センターには、AWS サービスのオンライン ドキュメント、コード サンプル、ツールへのリンクが用意されています。
- Bamboo デベロッパーフォーラム — このプロセスに関する有益なヒントや問題があれば、Bamboo デベロッパー フォーラムで気軽に話し合ってください。