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

Elastic Compute Service:イメージ作成時のインスタンス初期化設定のカスタマイズ

最終更新日:Nov 19, 2024

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

初期化ツール

異なるタイプのオペレーティングシステムは、異なる初期化ツールを使用する。 Linuxインスタンスは自動初期化にcloud-initツールを使用し、Windowsインスタンスは自動初期化にVminitツールを使用します。 初期化ツールの詳細については、次のセクションを参照してください。

Cloud-init

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

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

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

説明

Cloud-initは、すべてのAlibaba Cloudパブリックイメージと、パブリックイメージに基づいて作成されたカスタムイメージにインストールされます。 イメージからECSインスタンスを作成すると、インスタンスにcloud-initが自動的にインストールされます。 オンプレミスのデバイスに基づいて作成されたカスタムイメージを使用してECSインスタンスを作成し、cloud-initがイメージにインストールされていない場合は、インスタンスにcloud-initを手動でインストールする必要があります。 cloud-initのインストール方法については、「cloud-initのインストール」をご参照ください。

Vminit

Windowsインスタンスは、Vminit初期化ツールを使用して自動初期化を完了します。 Vminitは一連のプラグインを順番に実行して、システム初期化設定を完了します。 複数のプラグインは、ECSインスタンスが最初に起動されたときにのみ実行されます。 他のプラグインは、インスタンスが起動されるたびに実行されます。 デフォルトでは、インスタンスがWindowsイメージから作成されると、すべてのVminitプラグインが自動的に実行され、ECSインスタンスが初期化されます。 次の表に、10個のVminitプラグインを示します。

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インスタンスのシステムディスクの使用可能な領域を自動的に検出し、diskpartコマンドを実行してシステムディスクを拡張します。

なし。

Plugin_Main_CloudinitUserData

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

Plugin_Main_ConfigHostname

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

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

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

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

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

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は、2023年9月以降にリリースされたWindowsパブリックイメージと、Windowsパブリックイメージに基づいて作成されたカスタムイメージにインストールされます。 イメージからECSインスタンスを作成すると、インスタンスにVminitが自動的にインストールされます。 オンプレミスのデバイスに基づいて作成されたカスタムイメージを使用してECSインスタンスを作成し、イメージにVminitがインストールされていない場合は、インスタンスにVminitを手動でインストールする必要があります。 これにより、ECSインスタンスが初期化設定を完了できるようになります。 詳細については、「Vminitのインストール」をご参照ください。

Vminitは時々更新される。 次の表に、Vminitバージョンのリリース情報を示します。

Vminitバージョン

リリースコンテンツ

リリース日

2.0.1.2

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

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

2024.1

2.0.1.0

最初のリリース。 構成可能なプラグインがサポートされました。

2023.9

イメージ作成時のインスタンス初期化設定のカスタマイズ

インスタンスの起動時にカスタム設定を使用してECSインスタンスを初期化する場合、インスタンスのイメージを作成するときに初期化ツールの機能をカスタマイズできます。 詳細は、以下のセクションをご参照ください。

説明

イメージを作成するときに、初期化ツールの機能をカスタマイズして、初期化設定をカスタマイズできます。 次に、イメージを使用してECSインスタンスを作成します。 これにより、カスタム初期化設定を使用してインスタンスが初期化されます。 Linuxイメージの作成方法については、「Linuxイメージファイルの作成」をご参照ください。 Windowsイメージの作成方法については、「Windowsイメージファイルの作成」をご参照ください。

cloud-init設定ファイルを使用してLinuxインスタンスの初期化設定をカスタマイズ

Linuxインスタンスの起動時に特定の操作を自動的に実行しない場合は、cloud-init設定ファイルを変更して、cloud-initツールのデフォルトの初期化動作をカスタマイズできます。 cloud-init設定ファイルのパスは /etc/cloud/cloud.cfgです。 次のセクションでは、特定のモジュールを無効にする方法について説明します。 次の例では, 自动的にホスト名を割り当てるモジュールと自动的にネットワーク设定を初期化するモジュールが无効になっています。

  • Alibaba CloudがECSインスタンスにホスト名を自動的に割り当てないようにする

    デフォルトでは、ECSインスタンスの起動時にcloud-initツールは自動的にホスト名を割り当て、/etc/hostsファイルを更新します。 ホスト名を変更したり、/etc/hosts設定ファイルを変更したりしない場合は、次の手順を実行します。

    1. 次のコマンドを実行してcloud-initツールのデフォルト設定ファイルを開き、Iキーを押してInsertモードに入ります。

      sudo vim /etc/cloud/cloud.cfg
    2. 設定ファイルで、preserve_hostname: falsepreserve_hostname: trueに変更します。

    3. [Esc] キーを押して :wqと入力し、[enter] キーを押して設定ファイルを保存して閉じます。

  • Alibaba Cloudによるネットワーク設定の自動初期化の防止

    ECSインスタンスのcloud-initバージョンが18以降の場合、初期化ツールはインスタンスのネットワーク設定を自動的に初期化します。 初期化ツールでネットワーク設定を自動的に初期化しない場合は、次の手順を実行します。

    1. 次のコマンドを実行してcloud-initツールのデフォルト設定ファイルを開き、Iキーを押してInsertモードに入ります。

      sudo vim /etc/cloud/cloud.cfg
    2. 自動ネットワーク設定を無効にするには、Example datasource configの前に次の無効設定を追加します。

      network:
        config: disabled
    3. [Esc] キーを押して :wqと入力し、[enter] キーを押して設定ファイルを保存して閉じます。

Vminit設定ファイルを使用してWindowsインスタンスの初期化設定をカスタマイズ

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

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

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

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

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

    説明

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

  2. 次のセクションでは、特定のプラグインを無効にする方法について説明します。 次の例では, インスタンスのホスト名を自动的に割り当てる部品と, データディスクを自动的に初期化する部品を无効にしています。

    • Alibaba Cloudによるインスタンスホスト名の割り当てとデータディスクの初期化の防止

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

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

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

よくある質問

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

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

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

説明

Linuxインスタンスの場合、Alibaba Cloudによって割り当てられたホスト名は、インスタンスを再起動することなく有効になります。

関連ドキュメント

インスタンスの作成時に、インスタンスのユーザーデータを使用してECSインスタンスを初期化できます。 詳細については、「インスタンスの初期化設定のカスタマイズ」をご参照ください。