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

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

最終更新日:Apr 11, 2024

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

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

シナリオ

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

  • Cloud-initは、クラウドに移行するLinuxサーバーにインストールされていません。

    説明

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

  • 0.7.9より前のバージョンのCloud-initがLinuxサーバーにインストールされています。

  • Cloud-initはECSインスタンスにインストールされていません。

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

  1. ソースサーバーにログインします。

  2. ソースサーバーにcloud-initがインストールされているかどうかを確認します。

    CentOSシリーズ

    rpm -qa | grep -i cloud-init
    pipリスト | grep -i cloud-init 

    Ubuntuシリーズ

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

      説明

      Cloud-init 0.7.9以前は、ECSインスタンスには適していないネイティブcloud-initの初期バージョンであり、アップグレードが必要です。

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

    • cloud-initのバージョンが19.1.21の場合、cloud-init 23.2.2にアップグレードすることを推奨します。 cloud-init 19.1.21と比較して、cloud-init 23.2.2は次の改善と新機能を提供します。

      • Cloud-init 23.2.2では、セキュリティ強化モードでインスタンスメタデータにアクセスできます。 インスタンスメタデータの詳細については、「インスタンスメタデータの取得」をご参照ください。

      • その他の機能強化、パフォーマンスの改善、エラー修正、およびコミュニティへの貢献。 詳細は、「ChangeLog」をご参照ください。

    • cloud-initの他のバージョン番号が返された場合は、このトピックの [次の操作] セクションで説明されている操作に進みます。

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

  • Alibaba Cloud cloud-init 23.2.2: 推奨。 このバージョンではPython 3.6が必要です。

  • 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にインストールします。 このバージョンではPython 2.7が必要です。

    説明

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

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

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

    • 偶発的な操作によるデータの損失を防ぐため、移行元サーバーのデータをバックアップすることを推奨します。 たとえば、スナップショットを作成して、ソースサーバーのデータをバックアップできます。

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

Alibaba Cloud cloud-initの最新バージョンは23.2.2です。 このバージョンのdatasourceはAliyunです。 Alibaba Cloud cloud-init 23.2.2はパッケージとして維持されます。 オペレーティングシステムのバージョンに適したパッケージをダウンロードするか、ソースコードパッケージを使用してAlibaba Cloud cloud-init 23.2.2をインストールできます。 公式cloud-init Webサイトから他のcloud-initバージョンをダウンロードすることもできます。

異なるオペレーティングシステム用のAlibaba Cloud cloud-init 23.2.2パッケージのダウンロードリンク

オペレーティングシステムの配布

オペレーティングシステムのバージョン

バイナリパッケージ

MD5チェックサム

Debian

12

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-1_all.deb

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-1_all.deb.md5sum

CentOSストリーム

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-2.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-2.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream8/cloud-init-23.2.2-2.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream8/cloud-init-23.2.2-2.el8.noarch.rpm.md5sum

フェドラ

39

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora39/cloud-init-23.2.2-2.fc39.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora39/cloud-init-23.2.2-2.fc39.noarch.rpm.md5sum

38

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora38/cloud-init-23.2.2-1.fc38.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/fedora38/cloud-init-23.2.2-1.fc38.noarch.rpm.md5sum

AlmaLinux

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux9/cloud-init-23.2.2-2.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux9/cloud-init-23.2.2-2.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux8/cloud-init-23.2.2-2.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/almalinux8/cloud-init-23.2.2-2.el8.noarch.rpm.md5sum

ロッキーLinux

9

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux9/cloud-init-23.2.2-2.el9.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux9/cloud-init-23.2.2-2.el9.noarch.rpm.md5sum

8

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux8/cloud-init-23.2.2-2.el8.noarch.rpm

https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/rockylinux8/cloud-init-23.2.2-2.el8.noarch.rpm.md5sum

次のセクションでは、Debian 12およびCentOS Stream 9にAlibaba Cloud cloud-init 23.2.2をインストールする方法について説明します。

デビアン12

  1. 次のコマンドを実行して、Alibaba Cloud cloud-initパッケージをダウンロードします。

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/debian12/cloud-init_23.2.2-1_all.deb
  2. 次のコマンドを実行して、Alibaba Cloud cloud-initパッケージをインストールします。

    sudo apt-get install -y. /cloud-init_23.2.2-1_all.deb
  3. (オプション) Alibaba Cloud cloud-initが最新のオープンソースバージョンに更新またはアップグレードされないようにするには、次のコマンドを実行してAlibaba Cloud cloud-initパッケージバージョンを保留にすることを推奨します。

    sudo apt-mark hold cloud-init

CentOSストリーム9

  1. 次のコマンドを実行して、Alibaba Cloud cloud-initパッケージをダウンロードします。

    wget https://ecs-image-tools.oss-cn-hangzhou.aliyuncs.com/cloudinit/centosstream9/cloud-init-23.2.2-2.el9.noarch.rpm
  2. 次のコマンドを実行して、Alibaba Cloud cloud-initパッケージをインストールします。

    sudo yum install -y. /cloud-init-23.2.2-2.el9.noarch.rpm
  3. (オプション) Alibaba Cloud cloud-initが最新のオープンソースバージョンに更新またはアップグレードされないようにするには、次のコマンドを実行してAlibaba Cloud cloud-initパッケージバージョンを保留にすることを推奨します。

    sudo sh -c 'echo "exclude=cloud-init" >> /etc/dnf/dnf.conf'
説明

Alibaba Cloud cloud-init 23.2.2は、/etc/hostsファイルにホスト名からプライベートIPv4アドレスへのマッピングを自動的に追加しなくなりました。 これは、マッピングに依存するアプリケーションまたはサービスに影響を及ぼし得る。 ビジネス要件に基づいて、マッピングをファイルに手動で追加できます。 最近のオペレーティングシステムバージョンでは、nss-myhostnameモジュールを使用してホスト名の解決を提供しています。 Red Hatオペレーティングシステムでは、nss-myhostnameモジュールはsystemd-libsパッケージに含まれています。 Debianオペレーティングシステムでは、nss-myhostnameモジュールはlibnss-myhostnameパッケージに含まれています。 /etc/nsswitch.conf設定ファイルは、nss-myhostnameモジュールを有効にするために使用されます。 詳細については、「nss-myhostname(8) - Linuxマニュアルページ」をご参照ください。

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

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

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

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

    • CentOSまたはRed Hat Enterprise Linux:

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

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

      sudo 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スクリプトを実行し、Alibaba Cloud cloud-initをインストールします。

    スードバッシュ。/deploy.sh <issue> <major_version>

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

    パラメーター

    説明

    <issue>

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

    説明

    オペレーティングシステムがCentOS Streamの場合、このパラメーターをcentosに設定します。

    centos

    <major_version>

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

    説明

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

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

    たとえば、現在のオペレーティングシステムがCentOS 7の場合、スードバッシュ。/deploy.sh centos 7コマンドを実行します。

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

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

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

CentOS 7または8

# python3-pip依存関係ライブラリがインストールされているかどうかを確認します。 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
# Alibaba Cloud 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" 

Red Hat Enterprise 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
# Alibaba Cloud 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
# Alibaba Cloud 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" 

Debian 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
# Alibaba Cloud 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
# Alibaba Cloud 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
# Alibaba Cloud 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をインストールします。

説明

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

  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ディレクトリ:

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

    スードバッシュ。/deploy.sh <issue> <major_version>

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

    パラメーター

    説明

    <issue>

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

    centos

    <major_version>

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

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

    たとえば、現在のオペレーティングシステムがCentOS 6の場合、バッシュ。/deploy.sh centos 6コマンドを実行します。

native cloud-initのインストール

Alibaba Cloud cloud-initの最新バージョンは23.2.2です。 最新バージョンのcloud-initを使用する場合は、コミュニティバージョンのcloud-initをインストールします。

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

    例では、Git、Python 3.6、およびpython3-pipが使用されています。 次のコマンドを実行して、特定のLinuxディストリビューション用のGit、Python、およびpython-pip依存ライブラリをインストールします。

    CentOSまたはRed Hat Enterprise Linux

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

    UbuntuまたはDebian

    sudo apt-get -y install git python36 python3-pip

    openSUSEまたはSUSE

    sudo 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インストール-r. /requirements.txt
  5. 次のコマンドを実行してcloud-initをインストールします。

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

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

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

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

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

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

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

    cloud-init-disable-config

  3. を押してください。Esc挿入モードを終了するキー、: wq次に、Enterキーを押してファイルを保存して閉じます。

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

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

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

    sudo vim /etc/cloud/cloud.cfg
  2. を押してください。私は挿入モードに入り、変更するキー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モジュールがありません。

    たとえば、Python 3.6を使用する場合は、オペレーティングシステムに基づいて次のいずれかのコマンドを実行して、python setuptoolsモジュールをインストールします。

    • 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コマンドを実行すると、cloud-init 19.1.21がインストールされている場合、コマンド出力に19.1.21が含まれます。

  • 新しいバージョンのPython 3をインスタンスにインストールした後、cloud-initがインスタンスで期待どおりに実行されない場合はどうすればよいですか?

    Python 3.9などの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ファイルにコンテンツが含まれていない場合は、ファイルにコンテンツを追加します。

次のステップ