GNU/Linux >> Linux の 問題 >  >> Linux

EC2 インスタンスの起動後に bash スクリプトを実行する

解決策 1:

ec2-run-instances に user-data オプションを使用することをお勧めします .これにより、初回起動時に実行される何らかのスクリプトを VM に与えることができます。 ubuntu または debian を使用している場合は、cloud-init を使用できます。これにより、プロセスが洗練されます。 cloud-init を使用している場合は、[runcmd] を使用できます 構成ファイルのセクションで、起動後に実行する任意のコマンドを指定します。

ユーザーデータページを提供してくれた SF ユーザーの Eric Hammond に感謝します。彼のサイトをチェックしてください - AWS に関する豊富な情報があります。

編集:再読後、最初の起動時にコマンドを実行するか、起動するたびにコマンドを実行するかは明確ではありません。上記の手順は、最初の起動にのみ適用されます。起動のたびにコマンドを実行したい場合、いくつかのオプションがあります - @reboot 経由でコマンドを実行できます cron ディレクティブ、または代わりにスクリプトを /etc/rc.local に追加できます 、システムが起動するたびに実行されます。

解決策 2:

cloud-init を持つ AMI を使用していた場合 パッケージがインストールされている場合 (Amazon Linux や Ubuntu など)、bash スクリプト (#! で始まる) をユーザー データ ファイルとして渡すだけで、ブート プロセスの最後に自動的に実行されます。

たとえば、次のように簡単にできます:

ec2-run-instances                             \
  --user-data-file /home/root/beginProcess.sh \
  --key $USER                                 \
  ami-XXXXXXXX

Amazon Linux や Ubuntu などの主要な EC2 AMI で利用できるユーザーデータ スクリプトの概念を紹介した記事は次のとおりです:http://alestic.com/2009/06/ec2-user-data-scripts

残念ながら、RHEL AMI を使用したいようです。そのコピーを実行したところ、最初の起動時に cloud-init または実行中のユーザーデータ スクリプトへの参照が見つかりませんでした。また、同じ作業のテストも行われませんでした。

このためだけに Linux ディストリビューションを切り替える必要があると言っているわけではありませんが、Amazon Linux は RHEL に基づいているため、うまくいく可能性があります。

初めて機能しない場合に、ユーザー データ スクリプトをデバッグするのに役立つ記事を次に示します:http://alestic.com/2010/12/ec2-user-data-output


Linux
  1. Init.dスクリプトが起動時に実行されていませんか?

  2. Unix コンソールまたは Mac 端末でシェル スクリプトを実行するには?

  3. rc.local でスクリプトを実行します:スクリプトは機能しますが、起動時には機能しません

  1. シェルスクリプト、メッセージをエコーし​​た後に同じ行で読む

  2. ログイン後に bash スクリプトを実行する

  3. bash スクリプトのコマンドは並行して実行されますか、それとも次々に実行されますか?

  1. Ssh – Ssh経由で接続した直後にスクリプトを実行する方法は?

  2. bash スクリプトをデーモンとして実行する

  3. 起動後にコマンドを実行するにはどうすればよいですか?