デフォルトでは、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) パーティション形式が使用されます。 |
| |
Plugin_Main_ExtendVolume | Windowsインスタンスのシステムディスクの空き容量を自動的に検出します。 容量が5 GB未満の場合、 | なし。 | |
Plugin_Main_CloudinitUserData | Alibaba Cloudメタデータサービスから設定したインスタンスユーザーデータを取得し、システムアカウントを使用してユーザーデータスクリプトを自動的に実行します。 |
| |
Plugin_Main_ConfigHostname | ECSインスタンスが起動されるたびに実行されます。 | ECSインスタンスのホスト名を指定します。 インスタンスの作成中に、Alibaba Cloudは各ECSインスタンスにホスト名を割り当てます。 ECSインスタンスの作成時にホスト名を指定した場合、システムは指定したホスト名をインスタンスに割り当てます。 ECSインスタンスの作成時にホスト名を指定しない場合、Alibaba Cloudはランダムなホスト名をインスタンスに割り当てます。 |
|
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サーバーアドレスを再設定しません。 |
|
Vminitのインストール
パブリックイメージ
Vminitは、2023年9月以降にリリースされたWindowsパブリックイメージと、Windowsパブリックイメージに基づいて作成されたカスタムイメージにインストールされます。 これらのイメージからECSインスタンスを作成すると、インスタンスにVminitが自動的にインストールされます。 インスタンスにVminitを手動でインストールする必要はありません。
カスタムイメージ
オンプレミスのデバイスに基づいて作成されたカスタムイメージを使用してECSインスタンスを作成し、イメージにVminitがインストールされていない場合は、インスタンスにVminitを手動でインストールする必要があります。 これにより、ECSインスタンスが初期化設定を完了できるようになります。 詳細については、「Vminitのインストール」をご参照ください。
次の表に、Vminitのバージョンを示します。 デフォルトでは、Vminitのインストール時に最新バージョンのVminitがインストールされます。
Vminitバージョン | リリースコンテンツ | リリース日 |
2.0.1.2 |
| January 2024 |
2.0.1.0 | 最初のリリース。 プラグインを設定できます。 | 9月2023 |
Vminitのバージョン情報を取得するには、C:\ProgramData\aliyun\vminit\vminit.exe
ファイルの内容を表示します。
Vminitの初期化機能のカスタマイズ
デフォルトでは、インスタンスが作成されると、すべてのVminitプラグインが自動的に実行され、ECSインスタンスが初期化されます。 カスタムイメージからECSインスタンスを作成し、インスタンスの起動時に特定の操作を自動的に実行したくない場合は、イメージの作成時に対応するプラグインを無効にできます。
C:\ProgramData\aliyun\vminit
ディレクトリにファイルを作成します。 ファイルは次の要件を満たす必要があります。ファイル名は
customized_config
である必要があります。ファイル名にサフィックスは追加されません。
ファイルに追加するコンテンツはJSON形式である必要があります。
説明ほとんどの場合、
ProgramData
ディレクトリは非表示になります。 ディレクトリにアクセスする前に、オペレーティングシステムで [隠しファイル、フォルダ、およびドライブを表示] オプションを選択してください。これにより、隠しアイテムを表示および管理できます。ファイル内のパラメーターを設定して、プラグインを無効にします。 例:
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プラグインを無効にします。