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

Elastic Compute Service:cloud-init のインストール

最終更新日:Jan 11, 2024

cloud-initは、起動時にElastic Compute Service (ECS) インスタンスの初期化を自動化するオープンソースソフトウェアです。 カスタムイメージにcloud-initがインストールされていない場合、イメージから作成されたECSインスタンスを初期化できるように、イメージにcloud-initをインストールする必要があります。 このトピックでは、cloud-initをインストールおよび設定する方法について説明します。

cloud-initの詳細については、「Cloud-initドキュメント」をご参照ください。

シナリオ

デフォルトでは、すべてのAlibaba cloudパブリックイメージにCloud-initがインストールされます。 次のシナリオでは、カスタムイメージの作成に基づいて、Alibaba Cloud cloud-initをLinuxサーバーにインストールすることを推奨します。 これにより、カスタムイメージから作成されたインスタンスを自動的に初期化できます。

  • クラウドへの移行を計画しているLinuxサーバーは、cloud-initと共にインストールされません。

    説明

    クラウドへの移行を予定していないサーバーにAlibaba Cloud cloud-initをインストールする場合は、注意してください。

  • Linuxサーバーは、0.7.9より前のバージョンのcloud-initでインストールされます。

  • Alibaba Cloud ECSインスタンスはcloud-initと共にインストールされません。

ステップ1: cloud-initをインストールまたはアップグレードするかどうかを確認する

  1. 移行元サーバーにログオンします。

  2. 次のコマンドを実行して、cloud-initがインストールされているかどうかを確認します。

    yum検索dpkg
    yumインストールdpkg
    dpkg -l | grep cloud-init 
    • バージョン番号が返されない場合、またはcloud-initのバージョンが0.7.9より前の場合は、手順2: cloud-initのインストールに進みます。

      説明

      バージョン0.7.9以前: ネイティブcloud-initの初期バージョンがソースサーバーにインストールされています。これはECSインスタンスの初期化には適用されないため、アップグレードする必要があります。

    • バージョン18以降: cloud-initはソースサーバーに既にインストールされています。 cloud-initは、インスタンスの初期化中にネットワークを設定できます。 設定がビジネス要件を満たしていない場合は、設定を変更できます。 詳細については、このトピックの「ネットワーク構成のカスタマイズ」をご参照ください。

    • その他: cloud-initがソースサーバーにインストールされます。 このトピックののセクションに進みます。

ステップ2: cloud-initのインストール

  • Alibaba Cloud cloud-init 19.1.21: 推奨。 実行するには、ソースサーバーにPython 3.6をインストールする必要があります。

  • Alibaba Cloud cloud-init 0.7.6a: サーバーがCentOS 6、Debian 9、またはSUSE Linux Enterprise server 12を実行している場合は、このバージョンを使用してください。 Alibaba Cloud cloud-init 0.7.6aを実行するには、ソースサーバーにPython 2.7をインストールする必要があります。

    説明

    Pythonコミュニティは、Python 2.7のテクニカルサポートを提供しなくなりました。 依存関係ライブラリに関連する潜在的なリスクを防ぐために、新しいバージョンのcloud-initを使用することを推奨します。

  • Native cloud-init: コミュニティバージョンのcloud-initは、公开されている公式バージョンであり、プロジェクトに贡献する开発者のコミュニティによって管理されています。 Alibaba Cloud cloud-initの最新バージョンは19.1.21です。 新しいバージョンのcloud-initを使用する場合は、ネイティブcloud-initをインストールします。

Alibaba Cloud cloud-initは、Alibaba Cloudサービス向けに最適化され、より適切にサポートできるバージョンです。 互換性を確保するために、Alibaba Cloud cloud-initの使用を推奨します。

重要

偶発的な操作によるデータの損失を防ぐため、スナップショットの作成など、移行元サーバーのデータをバックアップすることをお勧めします。

(推奨) Alibaba Cloud cloud-initのインストール

Alibaba Cloud cloud-initの最新バージョンは19.1.21、データソースはAliyunです。 他のバージョンのcloud-initは、公式cloud-init Webサイトからダウンロードできます。

  1. python-pip依存関係ライブラリがソースサーバーにインストールされていることを確認します。

    実施例では、python3-pipが使用される。 次のいずれかのコマンドを実行して、移行元サーバーのオペレーティングシステムに基づいてpython-pip依存関係ライブラリをインストールします。

    • CentOSまたはRed Hat Enterprise Linux:

      yum -y install python3-pip
    • UbuntuまたはDebian:

      apt-get -y install python3-pip
    • openSUSEまたはSUSE:

      zypper -n install python3-pip
  2. 次のコマンドを実行して、Alibaba Cloud cloud-initインストールパッケージをダウンロードします。

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
  3. 次のコマンドを実行して、Alibaba Cloud cloud-initインストールパッケージを現在のディレクトリに解凍します。

    tar -zxvf cloud-init-19.1.21.tgz
  4. 次のコマンドを実行してcloud-initディレクトリに移動し、依存関係ライブラリをインストールします。

    cd. /cloud-init-19.1.21
    pip3インストール-r. /requirements.txt 
  5. 次のコマンドを実行して、cloud-initディレクトリのtoolsサブディレクトリに移動します。

    cd. /ツール
  6. 次のコマンドを実行してdeploy.shスクリプトを実行し、cloud-initをインストールします。

    bash。/deploy.sh <issue> <major_version>

    次の表に、deploy.shスクリプトのパラメーターとその値を示します。

    パラメーター

    説明

    <issue>

    オペレーティングシステムの種類。 有効な値: centosredhatrheldebianubuntuopensusesles。 このパラメーターの値は大文字と小文字を区別します。 slesは、SUSEまたはSUSE Linux Enterprise Server (SLES) を示します。

    centos

    <major_version>

    オペレーティングシステムのメジャーバージョン番号。

    説明

    Alibaba Cloud cloud-init 19.1.21はUbuntu 14にインストールできません。

    CentOS 7.6のメジャーバージョン番号は7です。

    たとえば、現在のオペレーティングシステムがCentOS 7の場合、bashを実行する必要があります。/deploy.sh centos 7コマンド。

  7. cloud-initがインストールされているか確認します。

    Alibaba Cloud cloud-initがインストールされている場合、"description": "success" が返されます。阿里云cloud-init安装成功

次のセクションでは、さまざまなLinuxディストリビューション用にAlibaba Cloud cloud-initをインストールするために使用されるサンプルのシェルスクリプトを提供します。 スクリプトをオペレーティングシステムに適応させます。

CentOS 7/8

# python3-pip依存関係ライブラリがインストールされているかどうかを確認します。 そうでない場合は、インストールします。
if ! python3 -c 'import setuptools' >& /dev/null;
  yum -yインストールpython3-pip
fi
# 以前のバージョンのcloud-initをバックアップします。
テスト-d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Alibaba Cloud cloud-initインストールパッケージをダウンロードして解凍します。
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf。/cloud-init-19.1.21.tgz
# cloud-initをインストールします。
issue_major=$( cat /etc/redhat-release | grep -Eo '[0-9]+\.?[0-9]+' | head -1 | awk -F'.''{printf $1}')
バッシュ。/cloud-init-*/tools/deploy.sh centos "$issue_major" 

レッドハットエンタープライズLinux 7/8

# python3-pip依存関係ライブラリがインストールされているかどうかを確認します。 そうでない場合は、インストールします。
if ! python3 -c 'import setuptools' >& /dev/null;
  yum -yインストールpython3-pip
fi
# 以前のバージョンのcloud-initをバックアップします。
テスト-d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Alibaba Cloud cloud-initインストールパッケージをダウンロードして解凍します。
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf。/cloud-init-19.1.21.tgz
# cloud-initをインストールします。
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+ \?[0-9]+' | head -1 | awk -F'.''{printf $1}')
バッシュ。/cloud-init-*/tools/deploy.sh rhel "$issue_major" 

Ubuntu 16/18/20

# python3-pip依存関係ライブラリがインストールされているかどうかを確認します。 そうでない場合は、インストールします。
if ! python3 -c 'import setuptools' >& /dev/null;
  apt-getインストールpython36 python3-pip -y
fi
# 以前のバージョンのcloud-initをバックアップします。
テスト-d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Alibaba Cloud cloud-initインストールパッケージをダウンロードして解凍します。
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf。/cloud-init-19.1.21.tgz
# cloud-initをインストールします。
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+ \?[0-9]+' | head -1 | awk -F'.''{printf $1}')
バッシュ。/cloud-init-*/tools/deploy.sh ubuntu "$issue_major" 

デビアン9 /10

# python3-pip依存関係ライブラリがインストールされているかどうかを確認します。 そうでない場合は、インストールします。
if ! python3 -c 'import setuptools' >& /dev/null;
  apt-get -yインストールpython3-pip
fi
# 以前のバージョンのcloud-initをバックアップします。
テスト-d /etc/cloud && mv /etc/cloud /etc/cloud-old
# Alibaba Cloud cloud-initインストールパッケージをダウンロードして解凍します。
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf。/cloud-init-19.1.21.tgz
# cloud-initをインストールします。
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+ \?[0-9]+' | head -1 | awk -F'.''{printf $1}')
バッシュ。/cloud-init-*/tools/deploy.sh debian "$issue_major" 

SUSE 12/15

# python3-pip依存関係ライブラリがインストールされているかどうかを確認します。 そうでない場合は、インストールします。
if ! python3 -c 'import setuptools'>& /dev/null;
  zypper -nインストールpython3-pip
fi
# 以前のバージョンのcloud-initをバックアップします。
テスト-d /etc/cloud && mv /etc/cloud/etc/cloud-old
# Alibaba Cloud cloud-initインストールパッケージをダウンロードして解凍します。
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf。/cloud-init-19.1.21.tgz
# cloud-initをインストールします。
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+ \?[0-9]+' | head -1 | awk -F'.''{printf $1}')
バッシュ。/cloud-init-*/tools/deploy.sh sles "$issue_major" 

OpenSUSE 15

# python3-pip依存関係ライブラリがインストールされているかどうかを確認します。 そうでない場合は、インストールします。
if ! python3 -c 'import setuptools'>& /dev/null;
  zypper -nインストールpython3-pip
fi
# 以前のバージョンのcloud-initをバックアップします。
テスト-d /etc/cloud && mv /etc/cloud/etc/cloud-old
# Alibaba Cloud cloud-initインストールパッケージをダウンロードして解凍します。
wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/cloud-init-19.1.21.tgz
tar -zxvf。/cloud-init-19.1.21.tgz
# cloud-initをインストールします。
issue_major=$( cat /etc/os-release | grep VERSION_ID | grep -Eo '[0-9]+ \?[0-9]+' | head -1 | awk -F'.''{printf $1}')
バッシュ。/cloud-init-*/tools/deploy.sh opensuse "$issue_major" 

Alibaba Cloud cloud-init 0.7.6 a15のインストール

ソースサーバーがCentOS 6、Debian 9、SUSE Linux Enterprise server 12などの以前のバージョンのオペレーティングシステムを実行している場合は、Alibaba Cloud cloud-init 0.7.6 a15をインストールします。

説明

デフォルトでは、Alibaba Cloud cloud-init 0.7.6 a15は、CentOS 6、Debian 9、SUSE Linux Enterprise Server 12のAlibaba Cloudパブリックイメージで停止します。 cloud-init-0.7.6a15をテストする場合は、まずmv /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg_bakコマンドを実行してcloud-initの設定ファイルをバックアップします。

  1. 次のコマンドを実行して、オペレーティングシステムのバージョンがCentOS 6、Debian 9、またはSUSE Linux Enterprise Server 12かどうかを確認します

    cat /etc/issue
  2. 次のコマンドを実行して、Alibaba Cloud cloud-init 0.7.6 a15インストールパッケージをダウンロードして解凍します

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloud-init-0.7.6a15.tgz
    tar -zxvf cloud-init-0.7.6a15.tgz 
  3. 次のコマンドを実行して、cloud-initディレクトリのtoolsサブディレクトリに移動します。

    cd cloud-init-0.7.6a15 /ツール /
  4. 次のコマンドを実行してdeploy.shスクリプトを実行し、cloud-initをインストールします。

    bash。/deploy.sh <issue> <major_version>

    次の表に、deploy.shスクリプトのパラメーターとその値を示します。

    パラメーター

    説明

    <issue>

    オペレーティングシステムの種類。 有効な値: centosdebiansles。 このパラメーターの値は大文字と小文字を区別します。 slesはSUSEまたはSLESを示します。

    centos

    <major_version>

    オペレーティングシステムのメジャーバージョン番号。

    CentOS 6.5のメジャーバージョン番号は6です。

    たとえば、現在のオペレーティングシステムがCentOS 6の場合、bashを実行する必要があります。/deploy.sh centos 6コマンド。

native cloud-initのインストール

Alibaba Cloud cloud-initの最新バージョンは19.1.21です。 新しいバージョンのcloud-initを使用する場合は、ネイティブcloud-initをインストールします。

  1. Git、Python、およびpython-pipの依存関係ライブラリがソースサーバーにインストールされていることを確認します。

    例では、Git、Python 3.6、およびpython3-pipが使用されています。 次のいずれかのコマンドを実行して、移行元サーバーのオペレーティングシステムに基づいてGit、Python、およびpython-pip依存関係ライブラリをインストールします。

    CentOS/Red Hat Enterprise Linux

    yum -yインストールgit python36 python3-pip

    Ubuntu/Debian

    apt-get -y install git python36 python3-pip

    OpenSUSE/SUSE

    zypper -nインストールgit python36 python3-pip
  2. 次のコマンドを実行して、Gitからcloud-initソースコードリポジトリをダウンロードします。

    git clone https://git.launchpad.net/cloud-init
  3. 次のコマンドを実行してcloud-initディレクトリに移動します。

    cd. /cloud-init
  4. 次のコマンドを実行して、必要な依存関係ライブラリをインストールします。

    sudo pip3 install -r. /requirements.txt
  5. 次のコマンドを実行してcloud-initをインストールします。

    python3 setup.pyインストール
  6. cloud.cfg設定ファイルを変更します。

    1. 設定ファイルを開きます。

      vi /etc/cloud/cloud.cfg

      vi /etc/cloud/cloud.cfg

    2. cloud_init_modules: の前のコンテンツを次のコンテンツに置き換えます。

      # datasource設定の例
      # トップレベルの設定はモジュールとして使用されます
      # とシステム構成。
      # さまざまなモジュールによって適用および /または使用される可能性のあるユーザーのセット
      # 'default' エントリが見つかった場合、'default_user' を参照します。# 以下に指定したdistro設定から
      ユーザー:
         -デフォルト
      ユーザー:
          名前:ルート
          lock_passwd: False
      # これが設定されている場合、'root' はsshできません。# は代わりに上記の $ユーザーとしてログインするメッセージを取得します
      disable_root: false
      # これにより、set + update hostnameモジュールが動作しなくなります (trueの場合)
      preserve_hostname: false
      syslog_fix_perms: root:root
      datasource_list: [ AliYun]
      # データソース設定の例
      datasource:
          AliYun:
              support_xen: false
              timeout: 5 # (デフォルトは50秒) max_wait: 60 # (デフォルトは120秒)
      # metadata_urls: [ 'blah.com']
      # 「初期」ステージで実行されるモジュール
      cloud_init_modules: 

(オプション) 手順3: cloud-initの設定

ネットワーク設定のカスタマイズ

cloud-init v18以降は、次のようにネットワーク設定を自動的に初期化します。BOOTPROTO=dhcp DEVICE=eth0 ONBOOT=yes STARTMODE=auto TYPE=Ethernet USERCTL=no。 デフォルトのネットワーク設定がビジネス要件を満たしていない場合は、次の操作を実行してネットワーク設定をカスタマイズできます。

  1. cloud-initをインストールしたら、/etc/cloud/cloud.cfgファイルを開きます。

    vim /etc/cloud/cloud.cfg
  2. Iキーを押して挿入モードに入ります。 Example datasource configの前に、次の無効設定を追加します。

    ネットワーク:
      config: 無効 
    説明

    設定を追加したら、/etc/sysconfig/network-scripts/ ディレクトリでネットワーク設定を手動で管理する必要があります。

    cloud-init-disable-config

  3. Escキーを押して挿入モードを終了し、:wqと入力し、enterキーを押してファイルを保存して閉じます。

ホスト名と /etc/hosts設定ファイルの保持

デフォルトでは、cloud-init設定ファイルのホスト名は保持されません。 インスタンスのホスト名および /etc/hosts設定ファイルを変更しない場合は、次の操作を実行してcloud-init設定ファイルを変更できます。

  1. cloud-initをインストールしたら、/etc/cloud/cloud.cfgファイルを開きます。

    vim /etc/cloud/cloud.cfg
  2. Iキーを押して挿入モードに入り、preserve_hostname: falsepreserve_hostname: trueに変更します。

    hostname

  3. Escキーを押して挿入モードを終了し、:wqと入力し、enterキーを押してファイルを保存して閉じます。

    preserve_hostname: trueは、cloud-initがインスタンスのホスト名と /etc/hosts設定ファイルを変更しないようにします。

トラブルシューティング

  • Python 3を使用してcloud-initをインストールすると、必要な依存関係ライブラリがなくなります。 どうすればよいですか。

    存在しない依存関係ライブラリは、画像に基づいて変化し得る。 pipを使用してライブラリをインストールし、cloud-initを再度インストールできます。

  • cloud-initが異常に実行されており、エラーメッセージが返されます。 どうすればよいですか。

    YUMなどのデフォルトのソフトウェアパッケージマネージャーとpipマネージャーが異なるバージョンの依存関係ライブラリとともにインストールされている場合、ライブラリバージョンの競合が発生し、cloud-initが異常に実行される可能性があります。 エラーメッセージに基づいて依存関係ライブラリをダウンロードすることを推奨します。

    エラーメッセージ

    考えられる原因

    トラブルシューティングコマンド

    pythonにsetuptoolsモジュールがない

    python setuptoolsモジュールがインストールされていません。

    setuptools for Python 3.6を異なるオペレーティングシステムにインストールするために使用されるサンプルコマンド:

    • CentOSとRed Hat: yum -y install python3-pip

    • UbuntuとDebian: apt-get -y install python3-pip

    • OpenSUSEとSUSE: zypper -n install python3-pip

    ファイル「 /home/testuser/cloud-init/cloudinit/log.py」、19行目、<モジュール>
          6をインポート
      ImportError: 6という名前のモジュールはありません) 

    6つの依存関係ライブラリがインストールされていません。

    pip3インストール6
    ファイル "/home/testuser/cloud-init/cloudinit/url_helper.py" 、20行目、<module>
          oauth1としてoauthlib.oauth1をインポートします。
      ImportError: oauthlib.oauth1という名前のモジュールはありません。

    oauthlib依存関係ライブラリがインストールされていません。

    pip3インストールoauthlib

    存在しない依存ライブラリの表示なし

    エラーメッセージは特定の原因にマップされません。

    次のコマンドを実行して、cloud-initのrequirements.txtファイルに表示されるすべての依存関係ライブラリをインストールします。

    pip3インストール-r requirements.txt
  • 正しいバージョンのcloud initがインストールされていることを確認するにはどうすればよいですか?

    cloud-initをインストールしたら、cloud-init -- versionコマンドを実行してcloud-initのバージョンを確認できます。 返されたバージョンがインストールするバージョンである場合は、正しいバージョンのcloud-initがインストールされます。 たとえば、Alibaba Cloud cloud-init 19.1.21をインストールするとします。 cloud-initをインストールし、cloud-init -- versionコマンドを実行した後、コマンド出力に19.1.21が含まれている場合、cloud-init 19.1.21がインストールされていることを示します。

  • 新しいバージョンのPython 3をインスタンスにインストールすると、cloud-initがインスタンスで異常に実行されます。 どうすればよいですか。

    Python 3.9などの新しいバージョンのPython 3をインスタンスにインストールし、新しいバージョンのPython 3のシンボリックリンク (ln -s /usr/bin/python3.9 /usr/bin/python3など) を作成してデフォルトバージョンとして設定すると、インスタンスにインストールされたcloud-initが異常実行されます。 たとえば、cloud-init -- versionコマンドを実行すると、エラーが報告されます。

    $cloud-init -- version
    Traceback (最後の呼び出し):
      ファイル "/usr/local/bin/cloud-init" 、33行目、<module>
        sys.exit(load_entry_point('cloud-init==19.1.9 ', 'console_scripts', 'cloud-init')())
      ファイル "/usr/local/bin/cloud-init" 、22行目、importlib_load_entry_point
        ディストリビューション内のentry_point (dist_name) の
      ファイル "/usr/lib64/python3.9/importlib/metadata.py" 、524行目、配布中
        return Distribution.from_name(distribution_name)
      ファイル "/usr/lib64/python3.9/importlib/metadata.py" 、行187、from_name
        raise PackageNotFoundError(name)
    importlib.metadata.PackageNotFoundError: cloud-init 

    次のいずれかの方法を使用して、この問題を解決できます。

    • 方法1: 新しいバージョンのPython 3を使用してcloud-initを再インストールします。

    • 方法2: cloud-init実行可能ファイルを変更して、Pythonインタープリターのパスを以前のPython 3バージョンのパスに変更します。 この例では、Python 3.6が使用されます。 cloud-init実行可能ファイルのPythonインタプリタパスを変更するには、次の操作を実行します。

      1. 次のコマンドを実行してcloud-init実行可能ファイルを開きます。

        vim /usr/local/bin/cloud-init
      2. Iキーを押して挿入モードに入ります。 実行可能ファイルの先頭で、次の内容を変更します #! をPython 3.6へのパスに追加します。

        #! で始まる行の新しいコンテンツの例:

        #!/usr/bin/python3.6
      3. Escキーを押して挿入モードを終了し、:wqと入力し、enterキーを押してファイルを保存して閉じます。

  • インスタンスにcloud-initをインストールした後、インスタンスの作成時にインスタンスメタデータで指定したユーザーデータは実行されないか、実行できません。 どうすればよいですか。

    1. インスタンスで次のコマンドを実行して、インスタンスメタデータにユーザーデータが存在するかどうかを確認します。

      curl http:// 100.100.100.200 /最新 /ユーザーデータ

      チェック結果:

      • インスタンスメタデータにユーザーデータが存在する場合、出力にはユーザーデータが含まれます。 問題をトラブルシューティングするには、さらに操作を実行する必要があります。

      • インスタンスメタデータにユーザーデータが存在しない場合、出力は返されません。

    2. ユーザーデータが実行されない、または実行できない理由を特定します。

      • ユーザーデータが有効な形式であるかどうかを確認します。

        cloud-initで実行するには、ユーザーデータが有効な形式である必要があります。 たとえば、ユーザーデータの最初の行は #! で始まる必要があります。 詳細については、「Linuxインスタンスのユーザーデータの管理」をご参照ください。

      • インスタンスの作成時に [セキュリティ強化モード] を選択するかどうかを確認します。

        [セキュリティ強化モード] を選択した場合、cloud-initのコンポーネントは初期化できません。これは、メタデータやユーザーデータなどのインスタンス設定に影響します。 詳細については、「インスタンスメタデータの表示」をご参照ください。

      • cloud-initの /var/log/cloud-init.logファイルのユーザーデータの実行結果を確認し、返されたエラーメッセージに基づいてトラブルシューティングを行います。

        ログファイル内のユーザーデータの実行结果の例:

        util.py[DEBUG]: コマンド ['/var/lib/cloud/instance/scripts/part-001'] を許可されたリターンコード [0] (シェル=False、キャプチャ=False)
        で実行する
      • ユーザーデータの実行中に生成された標準出力 (stdout) と標準エラー (stderr) を確認してください。

        systemd (Linuxのシステム初期化ツール) では、ユーザーデータはcloud-final.serviceシステムサービスによって実行されます。 次のコマンドを実行して、ユーザーデータの実行中に生成されたstdoutとstderrを確認できます。 次に、コマンド出力に基づいて問題をトラブルシューティングできます。

        journalctl -u cloud-final.service
      • 上記の操作を実行してもユーザーデータが実行されない、または実行されない理由を特定できない場合は、ユーザーデータをオンプレミスのコンピューターにコピーして、コンピューター上でユーザーデータが実行できるかどうかを確認することをお勧めします。

  • cloud-initがインスタンスにインストールされた後、インスタンスのシステム設定は初期化できず、ユーザーデータスクリプトは実行できません。 どうすればよいですか。

    1. 次のコマンドを実行して、4つのcloud-initサービスがシステム起動時に実行するように設定されているかどうかを確認します。

      systemctl is-enabled cloud-init-local.service
      systemctl is-enabled cloud-init.service
      systemctl is-enabled cloud-config.service
      systemctl is-enabled cloud-final.service 

      cloud-initサービスに対してエラーメッセージまたはdisabledが表示された場合、サービスはシステム起動時に実行されるように構成されていません。

    2. 次のコマンドを実行して、システム起動時に実行する4つのcloud-initサービスを設定します。

      systemctl有効cloud-init-local.service
      systemctl有効cloud-init.service
      systemctl有効cloud-config.service
      systemctl cloud-final.service
      を有効にする
  • インスタンスを作成したときにシステムディスクのサイズを変更しましたが、システムディスクのルートパーティションが自動的に拡張されませんでした。 どうすればよいですか。

    cloud-initは、Linuxインスタンスのパーティションのサイズを自動的に変更します。 growpartツールがインストールされていること、およびcloud.cfgファイルの設定が正しいことを確認してください。

    1. 次のコマンドを実行して、growpartツールがインスタンスオペレーティングシステムにインストールされているかどうかを確認します。

      どのgroupart
    2. (オプション) groupartツールがインストールされていない場合は、次のいずれかのコマンドを実行して、お使いのオペレーティングシステムに基づいてgroupartツールをインストールします

      • RHELシリーズ

        sudo yum -y install cloud-utils-growpart
      • Debian シリーズ

        sudo apt -y install cloud-guest-utils
    3. 次のコマンドを実行して、/etc/cloud/cloud.cfgファイルに次の図に示す内容が含まれているかどうかを確認します。

      cat /etc/cloud/cloud.cfg

      配置内容

    4. (オプション) /etc/cloud/cloud.cfgファイルに前の図に示す内容が含まれていない場合は、その内容をファイルに追加します。

次のステップ

  • クラウド移行ツールを使用して、Linuxインスタンスをクラウドに移行できます。 詳細については、「Cloud Migrationツールを使用したサーバーのAlibaba Cloudへの移行」をご参照ください。

  • Linuxカスタムイメージにcloud-initをインストールし、そのカスタムイメージを使用してECSインスタンスを作成した後、インスタンスを再起動して、cloud-initがインスタンスにインストールされているかどうかを確認できます。 cloud-initがインストールされている場合、インスタンスのホスト名、ソフトウェアリポジトリ、およびNTPを自動的に設定できます。

    ネットワーク設定ファイルのサンプル内容:

    [testuser @ iZbp1ios3psx4hoi ****** Z ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
    # インスタンス起動時にcloud-initによって自動的に作成され、編集しないでください。
    #
    BOOTPROTO=dhcp
    デバイス=eth0
    ONBOOT=はい
    STARTMODE=auto
    TYPE=イーサネット
    USERCTL=no 
  • virtioドライバーをソースサーバーにインストールし、ソースサーバーに基づいてLinuxイメージファイルを作成し、イメージがインポート要件を満たしているかどうかを確認する必要があります。