LinuxEC2インスタンスのセットの起動を自動化したい。
基本的に、私は次のようなスクリプト/プログラムを書きたいと思います。
- 私の特定のAMIのN回の出現をインスタンス化します。
- 開始されたインスタンスごとに、カスタマイズされたスクリプトをアップロードし、スクリプトをインスタンスに実行させます。
VMWareを使用して、私は通常vmrunまたはVixSDKを使用してそれを行います。
Amazon AWS / EC2のオプションは何ですか?
LinuxEC2インスタンスのセットの起動を自動化したい。
基本的に、私は次のようなスクリプト/プログラムを書きたいと思います。
VMWareを使用して、私は通常vmrunまたはVixSDKを使用してそれを行います。
Amazon AWS / EC2のオプションは何ですか?
提供される機能は完全にAMIに依存しているため、答えは実行しているAMIに少し依存します。
Amazon LinuxAMISと公式のUbuntuAMIには、cloud-initパッケージがインストールされています。これにはスタートアップアクションをトリガーする方法がいくつかありますが、リクエストに最も近いもの(そして私が発明したので私のお気に入り)はユーザーデータスクリプトの概念です。
EC2インスタンスを起動するときに、任意のスクリプト(2文字の#!で始まる)をユーザーデータとして渡すことができます。インスタンスの最初の起動時にrootとして実行されます。
これがどのように機能するかの具体例として、最近の記事でこの正確な手法を使用しています: EC2ユーザーデータスクリプトでの既知のsshホストキーのアップロード
また、同じスクリプトで複数のEC2インスタンスを実行したいとしました。ec2-run-instancesコマンドと関連するAPIおよびWebコンソールを使用すると、同じユーザーデータで開始するインスタンスをいくつでも指定できます。例えば:
ec2-run-instances \
--instance-count 10 \
--user-data-file $MYSCRIPT \
--key $USER \
$SOMEAMI
現在cloud-initがインストールされていないAMIを実行している場合は、次のいずれかを実行できます。
cloud-initがインストールされているAMIに切り替えるか、
cloud-initがインストールされているAMIのカスタムバージョンをビルドする、または
キックオフ後にすべてのインスタンスIDの記録を作成し、すべてのインスタンスが実行状態に移行するのを待ち、sshdが接続を受け入れるのを待ち、スタートアップスクリプトを各インスタンスにアップロードする、より複雑なラッパースクリプトを記述します。 、および各インスタンスで起動スクリプトを実行します。
AWSEC2が起動するたびに実行される「cloud-init」でスクリプトを実行するためのチュートリアルがあります。
設定ファイル(AWS CentOS6)と
EC2の起動時にスクリプトを実行する
Linuxで設定ファイルを設定するには、AWSLinuxでconfigurecloud-initを参照してください。
LinuxAMIに基づいてセットアップされたAWSVPC/ EBSを個人的に使用しています。構成ファイルには何も触れていません/etc/cloud/cloud.cfg
が、cloud-initのブートスクリプトは正常に実行されます。