55

LinuxEC2インスタンスのセットの起動を自動化したい。

基本的に、私は次のようなスクリプト/プログラムを書きたいと思います。

  • 私の特定のAMIのN回の出現をインスタンス化します。
  • 開始されたインスタンスごとに、カスタマイズされたスクリプトをアップロードし、スクリプトをインスタンスに実行させます。

VMWareを使用して、私は通常vmrunまたはVixSDKを使用してそれを行います。

Amazon AWS / EC2のオプションは何ですか?

4

2 に答える 2

86

提供される機能は完全に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が接続を受け入れるのを待ち、スタートアップスクリプトを各インスタンスにアップロードする、より複雑なラッパースクリプトを記述します。 、および各インスタンスで起動スクリプトを実行します。

于 2012-04-12T16:55:09.280 に答える
2

AWSEC2が起動するたびに実行される「cloud-init」でスクリプトを実行するためのチュートリアルがあります。

  • 設定ファイル(AWS CentOS6)と

  • EC2の起動時にスクリプトを実行する

Linuxで設定ファイルを設定するには、AWSLinuxでconfigurecloud-initを参照してください。

LinuxAMIに基づいてセットアップされたAWSVPC/ EBSを個人的に使用しています。構成ファイルには何も触れていません/etc/cloud/cloud.cfg、cloud-initのブートスクリプトは正常に実行されます。

于 2016-07-20T08:58:51.203 に答える