

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

# AL2 での cloud-init の使用
<a name="amazon-linux-cloud-init"></a>

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

 詳細については、「[cloud-init ドキュメント](http://cloudinit.readthedocs.org/en/latest/)」を参照してください。

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 ドキュメントの「[マウント](http://cloudinit.readthedocs.io/en/latest/topics/modules.html#mounts)」を参照してください。
  + TRIM をサポートするインスタンスストアボリュームは、インスタンスの起動時にはフォーマットされないため、マウントする前にパーティション化してフォーマットする必要があります。詳細については、[「インスタンスストアボリュームTRIMのサポート](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#InstanceStoreTrimSupport)」を参照してください。`disk_setup` モジュールを使用して、起動時にインスタンスストアボリュームをパーティションおよびフォーマットすることができます。詳細については、cloud-init ドキュメントの「[Disk Setup](http://cloudinit.readthedocs.io/en/latest/topics/modules.html#disk-setup)」を参照してください。

## サポートされているユーザーデータ形式
<a name="supported-user-data-formats"></a>

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`、アップスタートは他のアップスタートジョブと同様にコンテンツを消費します。
+ クラウドブートフック
  + 「`#cloud-boothook`」または「`Content-Type: text/cloud-boothook`」で始まります。
  + このコンテンツはブートフックデータです。このデータは `/var/lib/cloud` にあるファイルに保存され、すぐに実行されます。
  +  これは最初に使用可能な [hook] (フック) です。1 回だけ実行するためのメカニズムはありません。ブートフックは自身でこの点に対処する必要があります。環境変数 `INSTANCE_ID` でインスタンス ID が指定されています。この変数を使用して、インスタンスあたり1つのブートフックデータのセットを提供します。