すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:インスタンスの初期化

最終更新日:Oct 11, 2024

デフォルトでは、Elastic Compute Service (ECS) インスタンスは初期化ツールを使用して、インスタンスの作成時または起動時に、ネットワーク設定の設定、ホスト名の指定、カスタムスクリプトの実行など、事前定義された特定の設定タスクを自動的に実行します。 これにより、インスタンスの設定とデプロイプロセスが大幅に簡素化されます。 インスタンスの起動時に特定の操作を自動的に実行しない場合は、ビジネス要件に基づいて初期化ツールの初期化機能をカスタマイズできます。 このトピックでは、LinuxおよびWindowsインスタンスで使用される初期化ツールとその使用方法について説明します。

Linuxインスタンス (cloud-init)

Linuxインスタンスは、オープンソースのcloud-initツールを使用して自動初期化を実行します。 詳細については、「Cloud-initドキュメント」をご参照ください。

Cloud-init

  • Cloud-initは、タスクと設定を実行する一連のモジュールを定義します。 各モジュールには、名前、実行頻度、および構成パラメータの要素が含まれています。 実行周波数は、モジュールが実行される周波数を示す。 ほとんどの場合、インスタンスごとに1回、常に実行中の周波数が使用されます。 インスタンスごとに1回の実行頻度は、モジュールがECSインスタンスが最初に起動されたときに1回だけ実行されることを示します。 常に実行頻度は、ECSインスタンスが起動されるたびにモジュールが実行されることを示します。 詳細については、「モジュールリファレンス」をご参照ください。

  • Cloud-initは、/etc/cloud/cloud.cfg設定ファイルを使用して、実行するモジュールの決定など、ECSインスタンスの初期化動作を制御します。 Cloud-initは、ECSインスタンスのインスタンスIDやホスト名などのメタデータをメタデータサービスから取得できます。 たとえば、ECSインスタンスが起動されると、cloud-initはSet Hostnameモジュールを実行して、メタデータサービスからインスタンスのホスト名を取得し、インスタンスのホスト名を取得したホスト名に設定します。

    説明

    ECSインスタンスを作成するときに、インスタンスのcloud-config形式でユーザーデータを指定できます。 ECSインスタンスが起動すると、cloud-initはモジュールを実行し、cloud-config形式のユーザーデータに基づいて設定タスクを実行して、インスタンスを自動的に設定およびデプロイします。 詳細については、「インスタンスユーザーデータ」をご参照ください。

cloud-init のインストール

  • パブリックイメージ

    Cloud-initは、すべてのAlibaba Cloudパブリックイメージと、パブリックイメージに基づいて作成されたカスタムイメージにインストールされます。 これらのイメージからECSインスタンスを作成すると、インスタンスにcloud-initが自動的にインストールされます。 インスタンスにcloud-initを手動でインストールする必要はありません。

  • カスタムイメージ

    オンプレミスのデバイスに基づいて作成されたカスタムイメージを使用してECSインスタンスを作成し、cloud-initがイメージにインストールされていない場合は、インスタンスにcloud-initを手動でインストールする必要があります。 これにより、ECSインスタンスが初期化設定を完了できるようになります。 詳細については、「cloud-init のインストール」をご参照ください。

cloud-initの初期化機能のカスタマイズ

デフォルトでは、ECSインスタンスは、インスタンスの作成時にcloud-initの初期化機能を自動的に実装します。 カスタムイメージからECSインスタンスを作成し、インスタンスの起動時に特定の操作を自動的に実行しない場合は、イメージの作成時にインスタンスの起動時に実行するモジュールをイメージで定義できます。

cloud-initの /etc/cloud/cloud.cfg設定ファイルで特定のモジュールと設定を削除または変更して、モジュールの初期化機能を無効にすることができます。 たとえば、デフォルトでは、cloud-initはECSインスタンスのホスト名を自動的に指定し、インスタンスの起動時に /etc/hostsファイルを更新します。 ECSインスタンスのホスト名を変更したり、インスタンスの起動時に /etc/hosts設定ファイルを更新したりしない場合は、preserve_hostnameパラメーターの値をデフォルト値falseからtrueに変更できます。 詳細については、「cloud-initのインストール」トピックの「ホスト名と /etc/hosts構成ファイルの保持」セクションをご参照ください。

Windowsインスタンス (Vminit)

Windowsインスタンスは、Vminitツールを使用して自動初期化を実行します。

Vminit

Vminitは一連のプラグインを順番に実行して、システム初期化設定を完了します。 いくつかのプラグインは、ECSインスタンスが最初に起動されたときに一度だけ実行され、他のプラグインはインスタンスが起動されるたびに実行されます。 次の表に、10個のVminitプラグインを示します。

プラグイン名

実行頻度

機能

説明

Plugin_Main_StartDepend

ECSインスタンスが初めて起動されたときにのみ実行されます。

WindowsオペレーティングシステムのIP Helperサービス、Dynamic Host Configuration Protocol (DHCP) クライアント、およびWindows Timeサービス (W32Time) を開始します。

既定では、上記のシステムサービスはWindowsイメージに対して有効になっています。 サービスがカスタムイメージで無効になっている場合、プラグインはサービスがネットワークおよびネットワークタイムプロトコル (NTP) の設定例外を防ぐことを可能にします。

Plugin_Main_OpenRDP

リモートデスクトッププロトコル (RDP) を使用してECSインスタンスに接続できます。

デフォルトでは、RDPはWindowsで有効になっています。 プラグインは、RDPが無効になっているイメージに対してRDPを有効にできます。

Plugin_Main_NetworkClean

ネットワークの構成と初期化。 システムはDHCPを使用して、ECSインスタンス上のすべてのネットワークインターフェイスコントローラーのIPアドレスとDNSサーバー設定を自動的に取得します。

ECSインスタンスに対してIP HelperおよびDHCPサービスが不適切に有効化されていると、プラグインの実行に失敗する可能性があります。 その結果、内部ネットワーク経由でインスタンスメタデータにアクセスすることはできません。

Plugin_Main_ConfigDisk

パーティションの作成やドライブ文字の割り当てなど、ECSインスタンスとともに作成されたデータディスクを初期化します。 デフォルトでは、GUIDパーティションテーブル (GPT) パーティション形式が使用されます。

  • インスタンスの作成中に新しいデータディスクがECSインスタンスにアタッチされた場合、データディスクは初期化されません。 運用効率を向上させるために、プラグインはデータディスクを自動的に初期化し、ディスクをオンラインにします。

  • インスタンスの作成中にデータが保存されているデータディスクがECSインスタンスにアタッチされている場合、Vminitはデータディスクを初期化しません。

Plugin_Main_ExtendVolume

Windowsインスタンスのシステムディスクの空き容量を自動的に検出します。 容量が5 GB未満の場合、diskpartコマンドを実行してシステムディスクを拡張します。

なし。

Plugin_Main_CloudinitUserData

Alibaba Cloudメタデータサービスから設定したインスタンスユーザーデータを取得し、システムアカウントを使用してユーザーデータスクリプトを自動的に実行します。

  • プラグインは、内部ネットワークアクセス能力を必要とする。

  • インスタンスユーザーデータの設定方法については、「インスタンスユーザーデータ」をご参照ください。

Plugin_Main_ConfigHostname

ECSインスタンスが起動されるたびに実行されます。

ECSインスタンスのホスト名を指定します。 インスタンスの作成中に、Alibaba Cloudは各ECSインスタンスにホスト名を割り当てます。 ECSインスタンスの作成時にホスト名を指定した場合、システムは指定したホスト名をインスタンスに割り当てます。 ECSインスタンスの作成時にホスト名を指定しない場合、Alibaba Cloudはランダムなホスト名をインスタンスに割り当てます。

  • オペレーティングシステムは、プラグインが実行された直後に強制的に再起動されます。

  • 自動割り当てされたホスト名が指定したホスト名と同じ場合、ホスト名は繰り返し指定されません。

  • Alibaba CloudがECSインスタンスのホスト名を変更しない場合は、プラグインを無効にできます。 たとえば、インスタンスの起動時にホスト名をカスタムイメージに変更するための設定ロジックを追加すると、設定ロジックがVminitプラグインの設定ロジックと競合する可能性があります。 この場合、カスタムイメージでプラグインを無効にすることを推奨します。 詳細については、このトピックの「Vminitの初期化機能のカスタマイズ」をご参照ください。

Plugin_Main_ConfigWsus

Alibaba CloudメタデータサービスからWindows Server Update Services (WSUS) アドレスを取得し、ECSインスタンスに追加します。 Alibaba CloudのWSUSアドレスがすでにインスタンスに設定されている場合、プラグインは設定を繰り返しません。

プラグインは、内部ネットワークアクセス能力を必要とする。

Plugin_Main_ConfigKms

Alibaba CloudメタデータサービスからKey Management Service (KMS) エンドポイントを取得します。 ECSインスタンスのエンドポイントを設定した後、プラグインはKMSをアクティブ化します。 KMSがアクティブ化され、インスタンスのKMSエンドポイントが取得したKMSエンドポイントと同じである場合、プラグインはKMSを再アクティブ化しません。

プラグインは、内部ネットワークアクセス能力を必要とする。

Plugin_Main_ConfigNtp

時刻同期用にNTPクロックソースを設定します。 プラグインは、Alibaba CloudメタデータサービスからNTPサーバーアドレスを取得し、ECSインスタンスのNTPサーバーアドレスを設定します。 インスタンスのNTPサーバーアドレスが取得したNTPサーバーアドレスと同じ場合、プラグインはインスタンスのNTPサーバーアドレスを再設定しません。

  • プラグインは、内部ネットワークアクセス能力を必要とする。

  • プラグインにはW32Timeサービスが必要です。

Vminitのインストール

  • パブリックイメージ

    Vminitは、2023年9月以降にリリースされたWindowsパブリックイメージと、Windowsパブリックイメージに基づいて作成されたカスタムイメージにインストールされます。 これらのイメージからECSインスタンスを作成すると、インスタンスにVminitが自動的にインストールされます。 インスタンスにVminitを手動でインストールする必要はありません。

  • カスタムイメージ

    オンプレミスのデバイスに基づいて作成されたカスタムイメージを使用してECSインスタンスを作成し、イメージにVminitがインストールされていない場合は、インスタンスにVminitを手動でインストールする必要があります。 これにより、ECSインスタンスが初期化設定を完了できるようになります。 詳細については、「Vminitのインストール」をご参照ください。

次の表に、Vminitのバージョンを示します。 デフォルトでは、Vminitのインストール時に最新バージョンのVminitがインストールされます。

Vminitバージョン

リリースコンテンツ

リリース日

2.0.1.2

  • Windowsイベントマネージャーでエラー通知がクリアされました。

  • 遅延変数は、ユーザーデータのバッチスクリプトでサポートされました。

January 2024

2.0.1.0

最初のリリース。 プラグインを設定できます。

9月2023

説明

Vminitのバージョン情報を取得するには、C:\ProgramData\aliyun\vminit\vminit.exeファイルの内容を表示します。

Vminitの初期化機能のカスタマイズ

デフォルトでは、インスタンスが作成されると、すべてのVminitプラグインが自動的に実行され、ECSインスタンスが初期化されます。 カスタムイメージからECSインスタンスを作成し、インスタンスの起動時に特定の操作を自動的に実行したくない場合は、イメージの作成時に対応するプラグインを無効にできます。

  1. C:\ProgramData\aliyun\vminitディレクトリにファイルを作成します。 ファイルは次の要件を満たす必要があります。

    • ファイル名はcustomized_configである必要があります。

    • ファイル名にサフィックスは追加されません

    • ファイルに追加するコンテンツはJSON形式である必要があります

    説明

    ほとんどの場合、ProgramDataディレクトリは非表示になります。 ディレクトリにアクセスする前に、オペレーティングシステムで [隠しファイル、フォルダ、およびドライブを表示] オプションを選択してください。これにより、隠しアイテムを表示および管理できます。

  2. ファイル内のパラメーターを設定して、プラグインを無効にします。 例:

    • Alibaba Cloudがインスタンスホスト名を割り当てないようにし、カスタムホスト名を許可するには、Plugin_Main_ConfigHostnameプラグインを無効にします。 次のデータをJSON形式でcustomized_configファイルにコピーし、ファイルを保存します。

      {
       "disabledPlugins": ["Plugin_Main_ConfigHostname"]
      }
    • Alibaba Cloudがインスタンスホスト名を割り当て、データディスクを初期化できないようにするには、Plugin_Main_ConfigHostnameプラグインとPlugin_Main_ConfigDiskプラグインを無効にします。 次のデータをJSON形式でcustomized_configファイルにコピーし、ファイルを保存します。

      {
       "disabledPlugins": ["Plugin_Main_ConfigHostname", "Plugin_Main_ConfigDisk"]
      }
      説明

      プラグインを再度有効にするには、customized_configファイルからプラグインの対応する設定を削除します。

よくある質問

  • Windowsインスタンスを作成するときにオペレーティングシステムが再起動するのはなぜですか?

    • 原因: ECSインスタンスを作成すると、インスタンスにホスト名を指定しなくても、Alibaba Cloudは自動的にインスタンスにホスト名を割り当てます。 ECSインスタンスがWindowsインスタンスの場合、ホスト名を有効にするには、インスタンスのオペレーティングシステムを再起動する必要があります。

    • 解決策: Alibaba CloudでECSインスタンスのホスト名を変更せず、インスタンスのホスト名を指定する場合は、Plugin_Main_ConfigHostnameプラグインを無効にします。 プラグインを無効にした後、Alibaba CloudはECSインスタンスにホスト名を自動的に割り当てません。

      説明

      Linuxインスタンスの場合、ホスト名はインスタンスを再起動することなく有効になります。

  • カスタムイメージはECSインスタンスの作成に使用され、カスタムイメージにはインスタンスの起動時にインスタンスのホスト名を変更できるスクリプトが含まれています。 インスタンスの作成時にECSインスタンスが無期限に再起動するのはなぜですか。

    • 原因: スクリプトは、インスタンスの作成時にECSインスタンスにホスト名を自動的に割り当てるVminitプラグインのロジックと競合します。

    • 解決策: Plugin_Main_ConfigHostnameプラグインを無効にします。