デフォルトでは、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は、2023年9月以降にリリースされたWindowsパブリックイメージと、Windowsパブリックイメージに基づいて作成されたカスタムイメージにインストールされます。 イメージからECSインスタンスを作成すると、インスタンスにVminitが自動的にインストールされます。 オンプレミスのデバイスに基づいて作成されたカスタムイメージを使用してECSインスタンスを作成し、イメージにVminitがインストールされていない場合は、インスタンスにVminitを手動でインストールする必要があります。 これにより、ECSインスタンスが初期化設定を完了できるようになります。 詳細については、「Vminitのインストール」をご参照ください。
Vminitは時々更新される。 次の表に、Vminitバージョンのリリース情報を示します。
Vminitバージョン | リリースコンテンツ | リリース日 |
2.0.1.2 |
| 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設定ファイルを変更したりしない場合は、次の手順を実行します。次のコマンドを実行してcloud-initツールのデフォルト設定ファイルを開き、
I
キーを押してInsertモードに入ります。sudo vim /etc/cloud/cloud.cfg
設定ファイルで、
preserve_hostname: false
をpreserve_hostname: true
に変更します。[Esc]
キーを押して:wq
と入力し、[enter]
キーを押して設定ファイルを保存して閉じます。
Alibaba Cloudによるネットワーク設定の自動初期化の防止
ECSインスタンスのcloud-initバージョンが18以降の場合、初期化ツールはインスタンスのネットワーク設定を自動的に初期化します。 初期化ツールでネットワーク設定を自動的に初期化しない場合は、次の手順を実行します。
次のコマンドを実行してcloud-initツールのデフォルト設定ファイルを開き、
I
キーを押してInsertモードに入ります。sudo vim /etc/cloud/cloud.cfg
自動ネットワーク設定を無効にするには、
Example datasource config
の前に次の無効設定を追加します。network: config: disabled
[Esc]
キーを押して:wq
と入力し、[enter]
キーを押して設定ファイルを保存して閉じます。
Vminit設定ファイルを使用してWindowsインスタンスの初期化設定をカスタマイズ
デフォルトでは、インスタンスが作成されると、すべてのVminitプラグインが自動的に実行され、ECSインスタンスが初期化されます。 カスタムイメージからECSインスタンスを作成し、インスタンスの起動時に特定の操作を自動的に実行したくない場合は、イメージの作成時に対応するプラグインを無効にできます。
C:\ProgramData\aliyun\vminit
ディレクトリにファイルを作成します。 ファイルは次の要件を満たす必要があります。ファイル名は
customized_config
である必要があります。ファイル名にサフィックスは追加されません。
ファイルに追加するコンテンツはJSON形式である必要があります。
説明ほとんどの場合、
ProgramData
ディレクトリは非表示になります。 ディレクトリにアクセスするには、オペレーティングシステムで [隠しファイル、フォルダ、およびドライブを表示] オプションを選択してください。これにより、隠しアイテムを表示および管理できます。次のセクションでは、特定のプラグインを無効にする方法について説明します。 次の例では, インスタンスのホスト名を自动的に割り当てる部品と, データディスクを自动的に初期化する部品を无効にしています。
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インスタンスを初期化できます。 詳細については、「インスタンスの初期化設定のカスタマイズ」をご参照ください。