インポートされた Linux イメージのホスト名、NTP ソース、および yum ソースが正常に設定されることを保証するために、インポートの前にオンプレミスサーバー、仮想マシン、またはクラウドホストに cloud-init をインストールすることを推奨します。

制限事項

  • 現在、cloud-init は次の Linux OS をサポートしています。CentOS、Debian、Fedora、FreeBSD、Gentoo、RHEL (Red Hat Enterprise Linux)、SLES (SUSE Linux Enterprise Server)、Ubuntu。

  • オンプレミスサーバー、VM、クラウドホストに cloud-init がインストールされている場合は、cloud-init のバージョンが 0.7.9 以降であることを確認します。これ以前の cloud-init を使用しているイメージでは、 NTP、ホスト名、および yum で、インスタンスの設定が失敗する可能性があります。 次の手順で cloud-init のバージョンを確認します。

    1. オンプレミスサーバー、VM、またはクラウドホストにログインします。
    2. cloud-init --version を実行して、cloud-init のバージョンを照会します。

      バージョンが 0.7.9 以前の場合は、「 cloud-init のインストール方法」をご参照ください。

前提条件

オンプレミスサーバー、VM、またはクラウドホストに以下のソフトウェアがインストールされている必要があります。

  • git: cloud-init のソースコードパッケージ

    yum をインストールするコマンド: yum install git

  • Python2.7 : cloud-init のインストールと実行の基盤

    yum をインストールするコマンド: yum install python

  • pip : cloud-init のインストールに利用する Python のライブラリ

    yum をインストールするコマンド: yum install python-pip

次の例では yum のインストールが使用されています。 zypperapt-get を使ってパッケージを管理する場合も、インストール方法は yum と似ています。

cloud-init のインストール

次の手順で、cloud-init をインストールします。

  1. オンプレミスサーバー、VM、またはクラウドホストにログインします。
  2. git clone https://git.launchpad.net/cloud-init を実行して、 cloud-init ソースコードパッケージをダウンロードします。
  3. cd cloud-init を実行して、cloud-init ディレクトリに移動します。
  4. python setup.py install を実行して、 setup.py をインストールします。setup.py は cloud-init のインストールファイルです。
  5. vi /etc/cloud/cloud.cfg を実行し、cloud.cfg 設定ファイルを変更します。

    cloud_init_modules の設定を、次のように変更します。

    # Example datasource config
     # The top level settings are used as module
     # and system configuration.
     # A set of users which may be applied and/or used by various modules
     # when a 'default' entry is found it will reference the 'default_user'
     # from the distro configuration specified below
     users:
         - default
     user:
         name: root
         lock_passwd: False
     # If this is set, 'root' will not be able to ssh in and they 
     # will get a message to logon instead as the above $user
     disable_root: false
     # This will cause the set+update hostname module to not operate (if true)
     preserve_hostname: false
     syslog_fix_perms: root:root
     datasource_list: [ AliYun ]
     # Example datasource config
     datasource:
         AliYun:
             support_xen: false
             timeout: 5 # (defaults to 50 seconds)
             max_wait: 60 # (defaults to 120 seconds)
     #      metadata_urls: [ 'blah.com' ]
     # The modules that run in the 'init' stage
     cloud_init_modules:

トラブルシューティング

イメージから欠如しているライブラリが異なる場合があります。 欠如しているライブラリを pip でインストールし、手順 4 を繰り返します。

six と oauthlib ライブラリがない場合
  • インストール中に次のメッセージが表示された場合は、Python には six ライブラリがありません。 pip install six を実行し、 pip を使って six ライブラリをインストールします。
    File "/root/cloud-init/cloudinit/log.py", line 19, in <module>
          import six
      ImportError: No module named s  )
  • インストール中に次のメッセージが表示された場合は、Python に oauthlib ライブラリがありません。 pip install oauthlib を実行して pip を使って oauthlib ライブラリをインストールします。
    File "/root/cloud-init/cloudinit/url_helper.py", line 20, in <module>
          import oauthlib.oauth1 as oauth1
      ImportError: No module named oauthlib.oaut )
エラーメッセージにライブラリの欠如が出力されていない場合

pip install -r requirements.txt を実行して、cloud-init の requirements.txt ファイルのライブラリ情報に従って、すべての依存関係のあるライブラリをインストールできます。

次のステップ

イメージを ECS にインポートできます。

参照

cloud-init Alibaba Cloud (AliYun)