AL2 での cloud-init の使用 - Amazon Linux 2

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AL2 での cloud-init の使用

cloud-init パッケージは、Canonical によって構築されたオープンソースアプリケーションであり、Amazon EC2 などのクラウドコンピューティング環境で Linux イメージをブートストラップするときに使用されます。Amazon Linux には、カスタマイズされたバージョンの cloud-init が含まれています。これにより、起動時にインスタンスに発生するアクションを指定できます。インスタンスの起動時に、ユーザーデータフィールドを使用して必要なアクションを cloud-init に渡すことができます。つまり、さまざまなユースケースに対して共通の AMI を使用し、起動時にその AMI を動的に設定できます。Amazon Linux は、ec2 ユーザーアカウントの初期設定を実行するためにも cloud-init を使用します。

詳細については、「cloud-init ドキュメント」を参照してください。

Amazon Linux は、/etc/cloud/cloud.cfg.d/etc/cloud/cloud.cfg にある cloud-init アクションを使用します。独自の cloud-init アクションファイルを /etc/cloud/cloud.cfg.d に作成することができます。このディレクトリ内のすべてのファイルは、cloud-init で読み取られます。それらは辞書と同じ順序に読み取られ、後のファイルは以前のファイルの値を上書きします。

cloud-init パッケージは、起動時にインスタンスのこれらの (およびその他の) 共通の設定タスクを実行します。

  • デフォルトのロケールを設定。

  • ホスト名を設定。

  • ユーザーデータの解析と処理。

  • ホスト プライベート SSH キーの生成。

  • 容易にログインおよび管理できるように、ユーザーのパブリック SSH キーを .ssh/authorized_keys に追加する。

  • パッケージ管理のためにリポジトリを準備する

  • ユーザーデータで定義されたパッケージアクションの処理。

  • ユーザーデータにあるユーザースクリプトを実行します。

  • インスタンスストアボリュームをマウントする (該当する場合)

    • デフォルトでは、ephemeral0 インスタンスストアボリュームがある場合は /media/ephemeral0 にマウントされ、有効なファイルシステムが含まれます。それ以外の場合は、マウントされません。

    • デフォルトでは、インスタンスに関連付けられたスワップボリュームがマウントされます (m1.smallおよびc1.mediumインスタンスタイプの場合のみ)。

    • 次の cloud-init ディレクティブを使用して、デフォルトのインスタンスストアボリュームマウントを上書きすることができます。

      #cloud-config mounts: - [ ephemeral0 ]

      マウントをより詳細にコントロールするには、cloud-init ドキュメントの「マウント」を参照してください。

    • TRIM をサポートするインスタンスストアボリュームは、インスタンスの起動時にはフォーマットされないため、マウントする前にパーティション化してフォーマットする必要があります。詳細については、「インスタンスストアボリュームTRIMのサポート」を参照してください。disk_setup モジュールを使用して、起動時にインスタンスストアボリュームをパーティションおよびフォーマットすることができます。詳細については、cloud-init ドキュメントの「Disk Setup」を参照してください。

サポートされているユーザーデータ形式

cloud-init パッケージは、さまざまな形式のユーザーデータ処理をサポートしています。

  • Gzip

    • ユーザーデータが gzip 圧縮されている場合、cloud-init はデータを解凍し、適切に処理します。

  • MIME マルチパート

    • MIME マルチパートファイルを使用して、複数のデータタイプを指定できます。たとえば、ユーザーデータスクリプトとクラウド設定タイプの両方を指定できます。マルチパートファイルのパートの形式が、サポートされている形式のいずれかの場合、そのパートは cloud-init で処理できます。

  • Base64 デコード

    • ユーザーデータが base64 でエンコードされている場合、cloud-init は、デコードされたデータをサポートされているタイプの 1 つとして理解できるかどうかを決定します。デコードされたデータを認識できる場合、データをデコードし、適切に処理します。認識できない場合、base64 データは変更されません。

  • ユーザーデータスクリプト

    • #!」または「Content-Type: text/x-shellscript」で始まります。

    • このスクリプトは、初回の起動サイクル時に /etc/init.d/cloud-init-user-scripts によって実行されます。これは起動プロセスの後半 (初期設定アクションが実行された後) に実行されます。

  • インクルードファイル

    • #include」または「Content-Type: text/x-include-url」で始まります。

    • このコンテンツはインクルードファイルです。ファイルには URL の一覧 (1行に1つの URL) が含まれます。各 URL が読み取られ、そのコンテンツが同じルールセットを使用して渡されます。URL から読み取られたコンテンツは gzip 圧縮され、MIME マルチパート、またはプレーンテキスト形式になります。

  • クラウド設定データ

    • #cloud-config」または「Content-Type: text/cloud-config」で始まります。

    • このコンテンツはクラウド設定データです。

  • アップスタートジョブ (AL2 ではサポートされていません)

    • #upstart-job」または「Content-Type: text/upstart-job」で始まります。

    • このコンテンツは のファイルに保存され/etc/init、upstart は他の upstart ジョブと同様にコンテンツを消費します。

  • クラウドブートフック

    • #cloud-boothook」または「Content-Type: text/cloud-boothook」で始まります。

    • このコンテンツはブートフックデータです。このデータは /var/lib/cloud にあるファイルに保存され、すぐに実行されます。

    • これは最初に使用可能な [hook] (フック) です。1 回だけ実行するためのメカニズムはありません。ブートフックは自身でこの点に対処する必要があります。環境変数 INSTANCE_ID でインスタンス ID が指定されています。この変数を使用して、インスタンスあたり1つのブートフックデータのセットを提供します。