カスタム エラスティック イメージの作成
Atlassian doesn't provide support for customized images. Bamboo provides flexibility to use customized machine images, but it's impossible for us to support all individual configurations.
Use Bamboo stock images as the base for all image customizations to ensure a minimal level of consistency of your Elastic Bamboo setup.
エラスティック イメージとは、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 インストールでエラスティック イメージとして使用できます。
Instead of creating a custom image (Linux/UNIX only) consider:
- Using the "Instance setup script" feature to run commands (executed as the root user) before the agent is started. This field is available for every image from the Administration > Image Configurations page. Select the Edit link under Operations for the image you want to use.
- Customizing an existing Bamboo image by using Amazon's Elastic Block Store (EBS), as described in Configuring elastic instances to use the EBS.
The options above are much simpler than creating a new custom image. If you are having problems, please don't hesitate to contact us for further help.
始める前に
- これは簡単な手順ではなく、おそらく必要ないでしょう。
- Note that Atlassian does not support custom elastic images. Consider customizing the elastic agents started from your stock images instead.
- A number of the EC2 commands in the steps below can be completed using the AWS console rather than command line tools (e.g. registering an image). You should use the method you feel most comfortable with.
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 リスト |
---|---|---|
アトラシアン | One of the Stock images provided by Atlassian. It is an Amazon image, for either Linux or Windows, updated and prepared for Bamboo, i.e. you will not have to install any Bamboo prerequisites. | 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) ((ストック イメージ))」というラベルが付いています。
If you want to find out the AMI IDs for a version of Bamboo you don't have running or you're starting an image from scratch and you need the image baseline:
- Open https://packages.atlassian.com/maven/repository/public/com/atlassian/bamboo/atlassian-bamboo/
- On the resulting directory page, select the link that represents the version of Bamboo you are currently running. For example, if you are running Bamboo 5.9.7, select on the 5.9.7 link. Another directory page opens, listing a .pom and some additional checksum files.
Do not select a version number link that contains 'mX', 'rcX' or 'betaX' (where 'X' is a number), since these relate to publicly available developmental releases of Bamboo. - Open the atlassian-bamboo-x.x.x.pom file (where
x.x.x
) is your version of Bamboo). The image version/baseline is stored in theelastic-image.version
tag. For example, this value is "4.2" for Bamboo version 5.9.4. - Open https://packages.atlassian.com/maven/repository/public/com/atlassian/bamboo/atlassian-bamboo-elastic-image/
- Select the image version/baseline you found in the
elastic-image.version
tag.
On the resulting directory page, the file withami
extension contains all stock image AMI IDs.
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.インスタンスをカスタマイズする
Now that you have a running instance, customization steps heavily depend on the operating system you're using. We've prepared separate pages with Linux-specific instructions and Windows-specific instructions.
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 を書き留めて、「エラスティック イメージ設定の管理」の手順に従ってください。
Secondly, you will need to configure the capabilities of the elastic agents that will run on instances started from your image. This is done by adding the appropriate builder, JDK, and custom capabilities to your elastic image configuration, so that it reflects what your custom elastic image actually can do. For example, if you have created a custom elastic image with JDK 1.6 and Maven 2 installed, you will need to add capabilities for JDK 1.6 and Maven 2 to the elastic image configuration. Read Configuring Elastic Agent Capabilities for further instructions.
8. お困りですか?
さらに支援が必要な場合は、次のようなリソースを活用できます。
- AWS サポート センター — 特に Bamboo に関係のない Amazon サービスで問題が発生した場合は、AWS サポート センターから基本的なサポートを受けることができます。Web / 電話サポートを利用するには、Premium サポートにサインアップする必要があります。
- AWS リソース センター — AWS リソース センターには、AWS サービスのオンライン ドキュメント、コード サンプル、ツールへのリンクが用意されています。
- Bamboo デベロッパーフォーラム — このプロセスに関する有益なヒントや問題があれば、Bamboo デベロッパー フォーラムで気軽に話し合ってください。