tencent cloud

フィードバック

InitとCloudbase-init

最終更新日:2022-09-01 17:36:40

    Cloud-Init

    Cloud-Initとは何ですか。

    Cloud-Initはオープンソースツールで、CVMインスタンス内部の非常駐サービスで動作します。起動時に実行され、実行が完了するとすぐに終了し、どのポートも監視しません。 Tencent CloudのLinuxパブリックイメージはすべてCloud-Initサービスがあらかじめインストールされています。Cloud-Initサービスは主にCVMインスタンスの初期化操作(例: DNS、Hostname、IPなどの情報の設定)を実現するために用いられ、ユーザーがCVMインスタンスを作成する時に初回起動時に実行するように指定したカスタムスクリプトを実行するため、rootユーザーでCloud-Initサービスを実行する必要があります。

    Linuxインスタンス内部のCloud-Initサービスが正常に動作しているかどうかを確認するにはどうすればよいですか。

    Cloud-Initサービス動作確認プログラム

    標準ログイン方式を使用してLinuxインスタンスにログイン(推奨)を参照してインスタンスにログインし、以下のコマンドを順に実行します。エラーが報告されるかどうかを観察し、実行結果が表示されればサービスは正常に実行されています。表示されない場合、エラーの原因が表示されますので、表示された内容に従ってトラブルシューティングを行ってください。
    説明:
    このステップは、Linuxパブリックイメージを使用して作成されたCVMインスタンスにのみ適用されます。ご自身でCloud-Initをインストールした場合は、実情に即して実行コマンドを調整してください。
    1. cloud-initキャッシュディレクトリを削除します。
    rm -rf /var/lib/cloud
    2. cloud-init全体の初期化を実行します。
    /usr/bin/cloud-init init --local
    3. 設定されたデータソースに基づいてデータを取得します。
    /usr/bin/cloud-init init
    4. Cloud-Initの初期化は複数のstageに分かれています。各stageの依存が充分であることを確認し、cloud-init modulesで実行するconfig stageを指定します。
    /usr/bin/cloud-init modules --mode=config
    5. cloud-init modulesで実行するfinal stageを指定します。
    /usr/bin/cloud-init modules --mode=final

    Cloud-Initはどのようなインスタンス初期化の操作を実行しますか。

    Tencent CloudはCloud-Initによってインスタンスのすべての初期化操作を実現し、インスタンス内部全体の操作をより透明化します。以下の内容で関連する操作状況をご紹介しますが、詳細については、Cloud-init公式ドキュメント をご参照ください。
    初期化タイプ
    デフォルトの動作
    無効化方法
    注意事項
    hostnameの初期化
    インスタンス初回起動時に、Cloud-Initは、vendor_data.jsonのhostname情報を用いて、インスタンスのhostnameを設定します。
    カスタムイメージを使用してインスタンスを作成または再インストールする場合に、カスタムイメージ内にカスタムのhostnameの設定を維持したいときは、カスタムイメージを作成する前に、/etc/cloud/cloud.cfgpreserve_hostnameをtrueに設定し、- scripts-userの行の構成を削除してください。
    preserve_hostnametrueであり、かつ、- scripts-userの構成が無効化されている場合、インスタンス内の/var/lib/cloud/instance/scripts/runcmd初期化スクリプトは実行されず、他のサブアイテムの初期化にも影響を与えます(主にCM、クラウドセキュリティのインストール、ソフトウェアソースの設定に関わります)。また、サブマシンを作成しても、カスタムスクリプトは実行されません。
    /etc/hostsの初期化
    インスタンス初回起動時にCloud-Initはデフォルトで/etc/hostsを以下のように初期化します127.0.0.1$hostname
    カスタムイメージを使用してインスタンスを作成または再インストールする場合に、カスタムイメージ内にカスタムのhostnameの設定を維持したいときは、カスタムイメージを作成する前に、/etc/cloud/cloud.cfg- scripts-user- ['update_etc_hosts', 'once-per-instance']の2行の構成を削除できます。
    この- scripts-user行の構成を無効化すると、インスタンス内の/var/lib/cloud/instance/scripts/runcmd初期化スクリプトは実行されず、他のサブアイテムの初期化にも影響を与えます(主にCM、クラウドセキュリティのインストール、ソフトウェアソースの設定に関わります)。また、サブマシンを作成しても、カスタムスクリプトは実行されません。
    サブマシンが再起動するたびに、既存マシンの/etc/hostsの設定が上書きされます。ソリューションについては、Linuxインスタンスのetc hostsの構成を効果的に変更する方法をご参照ください。
    DNSの初期化(非DHCPシナリオ)
    インスタンス初回起動時に、Cloud-Initは、vendor_data.jsonnameservers情報を用いて、インスタンスのDNSを設定します。
    カスタムイメージを使用してインスタンスを作成または再インストールする場合に、カスタムイメージ内にカスタムのDNS の設定を維持したいときは、カスタムイメージを作成する前に、/etc/cloud/cloud.cfg- resolv_confunverified_modules: ['resolv_conf']の2行の構成を削除できます。
    なし。
    ソフトウェアソースの初期化
    インスタンス初回起動時に、Cloud-Initは、vendor_data.jsonのwrite_files情報を用いて、インスタンスのソフトウェアソースを設定します。
    カスタムイメージを使用してインスタンスを作成または再インストールする場合に、カスタムイメージ内にカスタムのソフトウェアソースの設定を維持したいときは、カスタムイメージを作成する前に、/etc/cloud/cloud.cfg- write-filesの行の構成を削除できます。
    なし。
    NTPの初期化
    インスタンス初回起動時に、Cloud-Initは、vendor_data.jsonのNTP Server情報を使用して、インスタンスのNTPサーバーの構成を設定し、NTP Serviceをプルします。
    カスタムイメージを使用してインスタンスを作成または再インストールする場合に、カスタムイメージ内にカスタムのNTPの設定を維持したいときは、カスタムイメージを作成する前に、/etc/cloud/cloud.cfg- ntpの行の構成を削除できます。
    なし。
    パスワードの初期化
    インスタンス初回起動時に、Cloud-Initは、vendor_data.jsonのchpasswd情報を用いて、インスタンスのデフォルトのアカウントパスワードを設定します。
    カスタムイメージを使用してインスタンスを作成または再インストールする場合に、カスタムイメージ内にカスタムのデフォルトのアカウントパスワードを維持したいときは、カスタムイメージを作成する前に、/etc/cloud/cloud.cfg- set-passwordsの行の構成を削除できます。
    なし。
    キーのバインド
    インスタンス初回起動時に、Cloud-Initは、vendor_data.jsonssh_authorized_keys情報を用いて、インスタンスのデフォルトのアカウントキーを設定します。
    カスタムイメージを使用してインスタンスを作成または再インストールする場合に、カスタムイメージ内にカスタムのキーを維持したいときは、カスタムイメージを作成する前に、/etc/cloud/cloud.cfg- users-groupsの行の構成を削除できます。
    インスタンス内でキーを手動でバインドした場合、コンソールからキーバインド操作が行われると、システムはキーを上書きします。
    ネットワークの初期化(非DHCPシナリオ)
    インスタンス初回起動時に、Cloud-Initは、network_data.jsonの情報を使用して、インスタンスのIP、GATEWAY、MASKなどを設定します。
    カスタムイメージを使用してインスタンスを作成または再インストールする場合に、カスタムイメージ内にカスタムのネットワーク情報を維持したいときは、カスタムイメージを作成する前に、/etc/cloud/cloud.cfgnetwork: {config: disabled}の行の構成を追加できます。
    なし。

    Cloud-Initのよくある問題をどのようにトラブルシューティングすればよいですか。

    1. Cloud-Initの依存パッケージをアンインストールしたことによるエラー

    問題の現象: コマンドを使用してCloud-Initサービスが正常に動作しているかどうかを確認した場合、以下のようなエラーが発生することがあります:
    Traceback (most recent call last):
    File "/usr/bin/cloud-init", line 5, in
    ********
    raise DistributionNotFound(req)
    pkg_resources.DistributionNotFound: pyyaml
    問題の分析 : 「pkg_resources.DistributionNotFound: xxxxx」はCloud-Initのインストールされている依存パッケージがアンインストールされたことを表します。
    対処方法:
    1.1 この依存パッケージを再インストールします。
    1.2 エラーがなくすべて実行されるまで、Cloudbase-Initサービス動作確認プログラム に基づいて操作を実行します。

    2. デフォルトのPythonインタープリターを変更するとエラーが発生します

    問題の現象: 起動時にCloud-Initを実行するとエラーが発生する。
    問題の分析: Cloud-Initをインストールした時に、PythonインタープリターはデフォルトでPython2を使用します(/usr/bin/python/bin/python の2つのソフトはPython2にリンクされています)。ユーザーの業務上の必要に応じて、インスタンス内部でPythonのデフォルトのインタープリターをPython3に変更する可能性があります(/usr/bin/python/bin/pythonの2つのソフトのリンクを変更し、Python3に指向させます)。互換性の問題により、起動時にCloud-Initを実行するとエラーが発生します。
    対処方法:
    1.1 /usr/bin/cloud-initファイル内の指定されたPythonインタープリターを修正し、#/usr/bin/pythonまたは#/bin/python#! user/bin/pythonに修正します。
    ご注意:
    シンボリックリンクを使用せず、直接、特定のインタープリターを指定します。
    1.2 エラーがなくすべて実行されるまで、Cloudbase-Initサービス動作確認プログラム に基づいて操作を実行します。

    Cloudbase-Init

    Cloudbase-Initとは何ですか。

    Cloud-Initと同様に、Cloudbase-InitはWindows CVMインスタンスと通信するブリッジです。インスタンスが初めて起動した時にCloudbase-Initサービスを実行します。このサービスはインスタンスの初期化設定情報を読み取り、インスタンスに初期化操作を行います。同時にその後のパスワードのリセット、IPの修正などの機能もすべてCloudbase-Initによって実現します。

    Windowsインスタンス内部のCloudbase-Initサービスが正常に動作しているかどうかを確認するにはどうしたらよいですか。

    Cloudbase-Initサービス動作確認プログラム:

    1. インスタンスにログインします。
    説明:
    パスワードを忘れた場合、またはCloudbase-Initサービスの異常に起因してリセットに失敗した場合は、ステップ2でパスワードをリセットできます。
    2. コントロールパネル > 管理ツール > サービスを開きます。
    3. cloudbase-initサービスを見つけ、プロパティを右クリックしてcloudbase-initのプロパティウィンドウを開きます。
    「起動タイプ」を確認し、下図のように「起動タイプ」が「自動」であることを確認します。
    
    
    下図に示すように「ログインID」を確認し、「ログインID」が「ローカルシステムのアカウント」であることを確認します。
    
    
    手動でcloudbase-initサービスを起動し、関連するエラーが発生するかどうかを観察します。 エラーがある場合は、先に解決する必要があります。 cloudbase-initが実行する関連操作をブロックするセキュリティソフトウェアがインストールされているかどうかを確認してください。
    
    
    下図に示すように、「登録フォーム」を開いてすべての「LocalScriptsPlugin」を検索し、値が2であることを確認してください。
    
    
    CD-ROMのロードが禁止されているかどうかを確認してください。下図に示すように、光ドライブ装置が見える場合、正常にロードできることを表します。そうでない場合は禁止されているため、禁止を取り消す必要があります。
    
    

    Cloudbase-Initの実行ログを確認するにはどうしたらよいですか。

    OSに応じて、以下のログファイルで確認できます。
    Linuxシステム:/var/log/cloud-init-output.log
    Windowsシステム:C:\\Program Files\\Cloudbase Solutions\\Cloudbase-Init\\log\\cloudbase-init.log

    Cloudbase-Initのよくある問題をどのようにトラブルシューティングすればよいですか。

    パスワードリセットの初期化に失敗しました

    考えられる原因:
    手動でcloudbase-initアカウントのパスワードを修正するとcloudbase-initサービスの起動に失敗し、それによってパスワードリセットの初期化などの操作に失敗します。
    cloudbase-initサービスを無効にすると、パスワードリセットの初期化などの操作に失敗します。
    cloudbase-initサービスがパスワードをリセットする操作をブロックするセキュリティソフトウェアがインストールされている場合、パスワードをリセットするプロセスは成功と返しますが、実際のリセットは失敗しています。
    対処方法: 考えられる原因に対して、それぞれ以下の3つの点を参考にして操作を行ってください。
    1.1 cloudbase-initサービスをLocalSystemサービスに変更します。詳細な操作については、Cloudbase-Initサービス動作確認プログラムステップ2 をご参照ください。
    1.2 cloudbase-initサービスの起動タイプを自動に変更します。 詳細な操作については、Cloudbase-Initサービス動作確認プログラムステップ2をご参照ください。
    1.3 対応するセキュリティソフトウェアをアンインストールするか, セキュリティソフトウェア内のcloudbase-initサービスに関連する操作をホワイトリストに追加します。
    お問い合わせ

    カスタマーサービスをご提供できるため、ぜひお気軽にお問い合わせくださいませ。

    テクニカルサポート

    さらにサポートが必要な場合は、サポートチケットを送信して弊社サポートチームにお問い合わせください。24時間365日のサポートをご提供します。

    電話サポート(24 時間365日対応)