RHEL の cloud-init の設定と管理
cloud-init を使用した RHEL インスタンスの初期化および設定の自動化
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 パブリッククラウドプラットフォームでの RHEL の導入 リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドプラットフォームは、コンピューティングリソースをサービスとして提供します。オンプレミスのハードウェアを使用する代わりに、Red Hat Enterprise Linux (RHEL) システムなどの IT ワークロードをパブリッククラウドインスタンスとして実行できます。
1.1. パブリッククラウドで RHEL を使用する利点 リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドプラットフォーム上に配置されたクラウドインスタンスとしての RHEL には、RHEL オンプレミスの物理システムまたは仮想マシン (VM) に比べて次の利点があります。
- リソースの柔軟性と詳細な割り当て
RHEL のクラウドインスタンスは、クラウドプラットフォーム上の仮想マシンとして実行されます。この仮想マシンは、クラウドサービスプロバイダーによって維持管理されるリモートサーバーのクラスターです。したがって、ソフトウェアレベルでは、特定の種類の CPU やストレージをはじめとするハードウェアリソースのインスタンスへの割当は、簡単にカスタマイズできます。
また、ローカルの RHEL システムと比較すると、物理ホストの機能によって制限されることがありません。むしろ、クラウドプロバイダーが提供する選択肢に基づいて、さまざまな機能から選択できます。
- 領域とコスト効率
クラウドワークロードをホストするためにオンプレミスサーバーを所有する必要がありません。これにより、物理ハードウェアに関連するスペース、電力、メンテナンスの要件が回避されます。
代わりに、パブリッククラウドプラットフォームでは、クラウドインスタンスの使用料をクラウドプロバイダーに直接支払います。通常、コストはインスタンスに割り当てられたハードウェアとその使用時間に基づきます。したがって、要件に基づいてコストを最適化できます。
- ソフトウェアで制御される設定
クラウドインスタンスの設定は、すべてクラウドプラットフォーム上にデータとして保存し、ソフトウェアで制御します。したがって、インスタンスの作成、削除、クローン作成、または移行を簡単に行うことができます。また、クラウドインスタンスは、クラウドプロバイダーのコンソールでリモートで操作され、デフォルトでリモートストレージに接続されます。
さらに、クラウドインスタンスの現在の状態をいつでもスナップショットとしてバックアップできます。その後、スナップショットをロードしてインスタンスを保存した状態に復元できます。
- ホストからの分離とソフトウェアの互換性
ローカルの仮想マシンと同様に、クラウドインスタンス上の RHEL ゲストオペレーティングシステムは Kernel-based Virtual Machine (KVM) 上で実行されます。このカーネルは、ホストオペレーティングシステムや、インスタンスへの接続に使用する クライアント システムとは別のものです。
したがって、任意のオペレーティングシステムをクラウドインスタンスにインストールできます。つまり、RHEL パブリッククラウドインスタンスでは、ローカルオペレーティングシステムでは使用できない RHEL 固有のアプリケーションを実行できます。
さらに、インスタンスのオペレーティングシステムが不安定になったり侵害されたりした場合でも、クライアントシステムには一切影響がありません。
1.2. RHEL のパブリッククラウドのユースケース リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドへのデプロイには多くの利点がありますが、すべてのシナリオにおいて最も効率的なソリューションであるとは限りません。RHEL デプロイメントをパブリッククラウドに移行するかどうかを評価している場合は、ユースケースがパブリッククラウドの利点を享受できるかどうかを検討してください。
- 有益なユースケース
パブリッククラウドインスタンスのデプロイは、デプロイメントのアクティブなコンピューティング能力を柔軟に増減する (スケールアップ および スケールダウン とも呼ばれます) 場合に非常に効果的です。したがって、次の状況ではパブリッククラウド上で RHEL を使用できます。
- ピーク時のワークロードが高く、一般的なパフォーマンス要件が低いクラスター。要求に応じてスケールアップおよびスケールダウンすることで、リソースコストの面で高い効率が得られる場合があります。
- クラスターを迅速にセットアップまたは拡張できます。これにより、ローカルサーバーのセットアップにかかる高額な初期費用が回避されます。
- クラウドインスタンスは、ローカル環境で何が起こっても影響を受けません。したがって、バックアップや障害復旧に使用できます。
- 問題が発生する可能性のあるユースケース
- 調整不可能な既存の環境を運用している場合。既存デプロイメントの特定のニーズに合わせてクラウドインスタンスをカスタマイズすることは、現在のホストプラットフォームと比較して経済的でない可能性があります。
- 厳しい予算制限の中で運用している場合。通常、ローカルデータセンターでデプロイメントを維持管理すると、パブリッククラウドよりも柔軟性は低くなりますが、最大リソースコストをより細かく制御できます。
パブリッククラウドデプロイメント用の RHEL を入手する方法の詳細は、パブリッククラウドデプロイメント用の RHEL の入手 を参照してください。
1.3. パブリッククラウドへの移行時によくある懸念事項 リンクのコピーリンクがクリップボードにコピーされました!
RHEL ワークロードをローカル環境からパブリッククラウドプラットフォームに移行すると、それに伴う変更に懸念が生じる可能性があります。よくある質問は次のとおりです。
- RHEL は、クラウドインスタンスとして動作する場合、ローカル仮想マシンとして動作する場合とは異なる動作になりますか?
パブリッククラウドプラットフォーム上の RHEL インスタンスは、ほとんどの点で、オンプレミスサーバーなどのローカルホスト上の RHEL 仮想マシンと同じように機能します。注目すべき例外には次のようなものがあります。
- パブリッククラウドインスタンスは、プライベートオーケストレーションインターフェイスの代わりに、プロバイダー固有のコンソールインターフェイスを使用してクラウドリソースを管理します。
- ネストされた仮想化などの特定の機能が正しく動作しない可能性があります。特定の機能がデプロイメントにとって重要な場合は、選択したパブリッククラウドプロバイダーとその機能の互換性を事前に確認してください。
- ローカルサーバーと比べて、パブリッククラウドではデータは安全に保たれますか?
RHEL クラウドインスタンス内のデータの所有権はユーザーにあり、パブリッククラウドプロバイダーはデータにアクセスできません。さらに、主要なクラウドプロバイダーは転送中のデータ暗号化をサポートしているため、仮想マシンをパブリッククラウドに移行する際のデータのセキュリティーが向上します。
RHEL パブリッククラウドインスタンスのセキュリティーに関しては、以下が適用されます。
- パブリッククラウドプロバイダーは、クラウドハイパーバイザーのセキュリティーを担当します。
- Red Hat は、RHEL ゲストオペレーティングシステムのセキュリティー機能をインスタンスに提供します。
- ユーザーは、クラウドインフラストラクチャーにおける特定のセキュリティー設定とプラクティスを管理します。
- ユーザーの地理的リージョンは、RHEL パブリッククラウドインスタンスの機能にどのように影響しますか?
- RHEL インスタンスは、地理的な場所に関係なく、パブリッククラウドプラットフォームで使用できます。したがって、オンプレミスサーバーと同じリージョンでインスタンスを実行できます。ただし、物理的に離れたリージョンでインスタンスをホストすると、操作時に待ち時間が長くなる可能性があります。さらに、パブリッククラウドプロバイダーによっては、特定のリージョンで、追加機能が提供される場合や、より高いコスト効率が得られる場合があります。RHEL インスタンスを作成する前に、選択したクラウドプロバイダーで利用可能なホスティングリージョンのプロパティーを確認してください。
1.4. パブリッククラウドデプロイメント用の RHEL の入手 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムをパブリッククラウド環境にデプロイするには、次の手順を実行する必要があります。
要件と市場の現在のオファーに基づいて、ユースケースに最適なクラウドプロバイダーを選択します。RHEL インスタンスを実行するための認定クラウドサービスプロバイダー (CCSP) は次のとおりです。
- 選択したクラウドプラットフォーム上に RHEL クラウドインスタンスを作成します。詳細は、RHEL クラウドインスタンスを作成する方法 を参照してください。
- RHEL デプロイメントを最新の状態に保つには、Red Hat Update Infrastructure (RHUI) を使用します。
1.5. RHEL クラウドインスタンスを作成する方法 リンクのコピーリンクがクリップボードにコピーされました!
RHEL インスタンスをパブリッククラウドプラットフォームにデプロイするには、次のいずれかの方法を使用できます。
- RHEL システムイメージを作成してクラウドプラットフォームにインポートする
- システムイメージを作成するには、RHEL Image Builder を使用するか、イメージを手動でビルドします。
- これは既存の RHEL サブスクリプションを使用する方法で、bring your own subscription (BYOS) とも呼ばれます。
- 年間サブスクリプションを前払いすると、Red Hat お客様割引を利用できます。
- Red Hat がカスタマーサービスを提供します。
-
多くのイメージを効率的に作成するには、
cloud-initツールを使用できます。
- RHEL インスタンスをクラウドプロバイダーマーケットプレイスから直接購入する
- サービスの利用に対して時間料金を後払いで支払います。したがって、この方法は 従量課金制 (PAYG) とも呼ばれます。
- クラウドプラットフォームプロバイダーがカスタマーサービスを提供します。
さまざまな方法を使用して RHEL インスタンスをデプロイする詳細な手順は、このドキュメントの次の章を参照してください。
第2章 cloud-init の概要 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init ユーティリティーは、最初の起動時に仮想マシン (VM) (インスタンスとも呼ばれます) の初期化と設定を自動化します。次のようなタスクを実行するように cloud-init を設定できます。
- ホスト名、ネットワークインターフェイス、およびユーザーアカウントの設定
- インスタンスへのパッケージのインストール
- スクリプトの実行
- デフォルトの仮想マシン (VM) アクションの変更
始める前に、次の手順を必ず完了してください。
- Red Hat アカウント が作成されている。
cloud-init は、次のようにさまざまなタイプの RHEL イメージで使用できます。
-
KVM 用の
qcow2ゲストイメージ には、cloud-initがプリインストールされています。インスタンスを起動すると、cloud-initユーティリティーが自動的に有効になります。Red Hat カスタマーポータルの KVM ゲストイメージは、Red Hat Virtualization、Red Hat OpenStack Platform (RHOSP)、および Red Hat OpenShift Virtualization で使用できます。 -
Red Hat カスタマーポータルから Red Hat ISO イメージ をダウンロードしてカスタムゲストイメージを作成する場合は、そのカスタマイズされたゲストイメージに
cloud-initパッケージをインストールしておく。 Amazon Web Services (AWS)、Google Cloud、Microsoft Azure などの認定クラウドサービスプロバイダー (CCSP) のイメージを使用する場合は、RHEL Image Builder を使用してイメージを作成できます。RHEL Image Builder は、特定のクラウドプロバイダー向けにイメージをカスタマイズします。次の形式のイメージには、プリインストールされた
cloud-initが付属しています。- Amazon Machine Image (AMI)
- Virtual Hard Drive (VHD)
- QEMU copy-on-write (QCOW2)
RHEL Image Builder の詳細は、RHEL Image Builder のインストール を参照してください。
ほとんどのクラウドプラットフォームは cloud-init をサポートしますが、設定手順とサポートされるオプションは異なります。
または、NoCloud 環境用に cloud-init を設定することもできます。NoCloud を使用すると、ローカル設定 (ネットワークアクセスなし) とリモートサーバーから取得された設定の両方のクラウドインスタンスを管理できます。さらに、1 つの仮想マシンで cloud-init を設定して、仮想マシンテンプレートを作成することもできます。このテンプレートを使用すると、追加の仮想マシンまたは仮想マシンのクラスターを作成できます。
2.1. cloud-init 設定の概要 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init ユーティリティーは、YAML 形式の設定ファイルを使用して、ユーザー定義のタスクをインスタンスに適用します。インスタンスが起動すると、cloud-init サービスが開始し、YAML ファイルからの指示を実行します。これらのタスクは、設定によっては仮想マシンの初回起動時、あるいはその後の起動時に完了する可能性があります。
特定のタスクを定義するには、/etc/cloud/cloud.cfg ファイルを設定し、/etc/cloud/cloud.cfg.d/ ディレクトリーにディレクティブを追加します。
cloud.cfgファイルには、ユーザーアクセス、認証、システム情報など、さまざまなシステム設定のディレクティブが含まれます。このファイルにはcloud-initのデフォルトモジュールとオプションモジュールも含まれています。デフォルトのモジュールグループは次のとおりです。-
cloud_init_modules -
cloud_config_modules -
cloud_final_modules
-
-
cloud.cfg.dディレクトリーにcloud-initの追加ディレクティブを含めることができます。 -
ディレクティブを
cloud.cfg.dディレクトリーに追加する場合は、*.cfgという名前のカスタムファイルにディレクティブを追加し、ファイルの上部に#cloud-configを常に含めます。
詳細は、cloud.cfg のサンプルファイルを参照してください。cloud.cfg ファイルの例 を参照してください。
2.2. cloud-init のデータソースの種類 リンクのコピーリンクがクリップボードにコピーされました!
データソースは、ユーザーデータとメタデータの形式での cloud-init の設定データのソースです。メタデータには、認定クラウドサービスプロバイダー (CCSP) によって作成された設定ドライブがあります。cloud-init は、データソースの設定にユーザーデータとメタデータを使用し、オプションでベンダーデータも使用します。ベンダーデータが利用可能かどうかを確認する必要がある場合:
grep -i "vendor data" /var/log/cloud-init.log
# grep -i "vendor data" /var/log/cloud-init.log
データソースには、ユーザーデータ、メタデータ、ベンダーデータの 3 種類の設定データがあります。
-
ユーザーデータには、
cloud.cfgファイルとcloud.cfg.dディレクトリーで指定されたディレクティブが含まれます。たとえば、ユーザーデータには、実行するファイル、インストールするパッケージ、シェルスクリプトなどが含まれます。cloud-initが許可するユーザーデータのタイプに関する詳細は、cloud-initドキュメントの User-Data Formats セクションを参照してください。 -
メタデータには、特定のデータソースに関連付けられたデータが含まれます。たとえば、メタデータにはサーバー名やインスタンス ID を含めることができます。特定のクラウドプラットフォームを使用している場合、インスタンスがユーザーデータやメタデータをどこで取得できるかは、CCSP が決定します。HTTP サービスにユーザーデータとメタデータを追加した後。この場合、
cloud-initが実行されると、HTTP サービスからユーザーデータとメタデータが使用されます。 -
ベンダーデータは、組織 (クラウドプロバイダーなど) がオプションで提供し、イメージが実行される環境に合わせてイメージをカスタマイズできる情報が含まれます。
cloud-initは、メタデータを読み込んでシステムを初期化した後に、オプションのベンダーデータおよびユーザーデータに対応します。デフォルトでは、ベンダーデータは初回起動時に実行されます。ベンダーデータの実行を無効にすることができます。
デフォルトでは、cloud-init は既存のデータソースを自動的に識別します。cloud-init は、ds-identify スクリプトを使用してクラウドプラットフォームの特定を試みます。スクリプトは、インスタンスの初回起動時に実行されます。カスタムデータソースディレクティブを追加すると cloud-init の実行時間を抑えることができます。ディレクティブは、/etc/cloud/cloud.cfg ファイルまたは /etc/cloud/cloud.cfg.d ディレクトリーに追加します。cloud-init の実行後に、プラットフォームに関する詳細情報を提供するログファイル (run/cloud-init/ds-identify.log) を表示できます。datasource_list の詳細は、カスタムデータソース を確認してください。
CCSP のデータソースの設定の詳細は、以下を参照してください。
2.3. cloud-init のブート段階 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init ユーティリティーは、次の 5 つのブートステージで仮想マシン設定を完了します。フェーズは、モジュールの実行順序を制御するブートステージの論理的なグループです。デフォルトのモジュールは特定のフェーズで実行されます。
システムの起動中に、cloud-init ユーティリティーは 5 つの ステージ で動作し、cloud-init の実行の有無、データソースの検索先など、さまざまなタスクを決定します。各ステージは、実行されるモジュールを制御するモジュール実行 フェーズ にも属します。ステージは次のとおりです。
検出ステージ: このステージでは、
systemdサービスを使用して、起動時にcloud-initユーティリティーを実行するかどうかを決定します。ds-identifyツールは、有効なプラットフォームがない場合にcloud-initを実行するかどうかを検出します。このステージは 初期化 フェーズに属し、モジュールは実行されません。代わりに、
cloud-init設定のデータソースを識別します。ローカルステージ:
cloud-initは、ローカルデータソースを検索し、DHCP ベースのフォールバックメカニズムを含むネットワーク設定を適用します。このステージは 初期化 フェーズに属し、モジュールは実行されません。
ネットワークステージ:
cloud-initは、/etc/cloud/cloud.cfgファイルのcloud_init_modulesの下にリスト表示されているモジュールを実行することで、ユーザーデータを処理します。cloud_init_modulesセクションでモジュールを追加、削除、有効化、または無効化できます。このステージは、Networking モジュール実行ステージに属します。
設定ステージ:
cloud-initは、/etc/cloud/cloud.cfgファイルのcloud_config_modulesセクションにリスト表示されているモジュールを実行します。cloud_config_modulesセクションでモジュールを追加、削除、有効化、または無効化できます。このステージは、Configuration モジュール実行フェーズに属します。
最終ステージ:
cloud-initは、/etc/cloud/cloud.cfgファイルのcloud_final_modulesセクションに含まれるモジュールと設定を実行します。これには、特定のパッケージのインストールや、設定管理プラグインやユーザー定義スクリプトのトリガーも含まれる場合があります。cloud_final_modulesセクションでモジュールを追加、削除、有効化、または無効化できます。この段階は、Finalization モジュール実行フェーズに相当します。
仮想マシンの初回ブート時に cloud-init サービスが起動すると、設定されたすべてのモジュールがそれぞれのフェーズで実行されます。初回以降のブート時に、モジュールがあるフェーズ内で実行されるかどうかは、そのモジュールの モジュール実行頻度 によって決まります。モジュール実行頻度は、cloud-init の設定内で指定されます。この設定で、インスタンス上で cloud-init が実行されるたびにモジュールを実行するのか、インスタンス ID が変更された場合でも、cloud-init の初回実行時にのみモジュールを実行するのかを決定します。
インスタンス ID はインスタンスを一意に識別します。インスタンス ID が変更されると、cloud-init はそのインスタンスを新しいインスタンスとして処理します。詳細は、モジュール作成のシーン名の定義 を参照してください。
設定可能な モジュール実行頻度 の値は次のとおりです。
-
PER_INSTANCEとは、モジュールがインスタンスの初回起動時に実行されることを意味します。たとえば、インスタンスのクローンを作成したり、保存したイメージから新しいインスタンスを作成したりすると、インスタンス別と指定されたモジュールは再度実行されます。 -
ONCEとは、モジュールが 1 回だけ実行されることを意味します。たとえば、インスタンスのクローンを作成したり、保存したイメージから新しいインスタンスを作成したりすると、1 回と指定されたモジュールは、それらのインスタンスでは再度実行されません。 -
PER_ALWAYSとは、モジュールが起動のたびに実行されることを意味します。
モジュールの実行頻度は、モジュールを設定するとき、またはコマンドラインを使用してオーバーライドできます。
2.4. cloud-init にとって重要なファイルとディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、cloud-init ユーティリティー、cloud-init モジュール、およびデフォルトのディレクトリーとファイルをサポートしています。ディレクトリーとファイルを使用すると、次のようなタスクを実行できます。
-
cloud-initの設定 -
cloud-init実行後の設定詳細の確認 - ログファイルの検証
- テンプレートの検索
要件とデータソースによっては、設定にとって重要な追加のファイルとディレクトリーが存在する場合があります。
| ディレクトリーまたはファイル | 説明 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
このディレクトリーには、特定のシナリオの |
|
|
|
|
|
|
2.4.1. デフォルトの cloud.cfg ファイル リンクのコピーリンクがクリップボードにコピーされました!
/etc/cloud/cloud.cfg ファイルには、cloud-init の基本設定に含まれるモジュールがリストされます。これらのモジュールは cloud-init のデフォルトモジュールです。要件に応じてモジュールを設定または削除できます。
-
いずれかの
cloud-initフェーズでアクションを実行するには、各モジュールを個別に設定し、cloud.cfgファイルにリストする必要があります。モジュールは、cloud.cfgで指定された順序で実行されます。通常、この順序を変更することはありません。ただし、追加するモジュールが Red Hat によってサポートされている場合は、cloud.cfgにモジュールを追加できます。 -
cloud.cfgディレクティブは、ユーザーデータによって上書きされることができます。cloud-initを手動で実行する場合、コマンドラインオプションを使用してcloud.cfgを上書きできます。 - 各モジュールには独自の設定オプションが含まれており、この設定オプションに特定の情報を追加することができます。
-
設定の機能を最適化するには、モジュール名にダッシュ (
-) ではなくアンダースコア (_) を使用します。 - Red Hat Enterprise Linux (RHEL) 用ファイルのデフォルトの内容は次のとおりです。
-
usersはシステムのデフォルトユーザーを指定します。詳細は、Users and Groups を参照してください。 -
disable_rootは、root ログインを有効または無効にします。詳細は、Authorized Keys を参照してください。 -
ssh_pwauthは、パスワード認証を許可するようにsshを設定するかどうかを指定します。詳細は、Set Passwords を参照してください。 -
mount_default_fieldsはマウントポイントを設定します。6 つの値を含むリストを設定する必要があります。詳細は、Mounts を参照してください。 -
ssh_deletekeysは、デフォルトのホスト SSH 鍵を削除するかどうかを指定します。詳細は、Host Keys を参照してください。 -
ssh_genkeytypesは生成する鍵の種類を指定します。詳細は、Host Keys を参照してください。 -
syslog_fix_permsは、すべてのブート段階をログファイルに記録するようにcloud-initを設定します。詳細は、usr/share/doc/cloud-init/examplesディレクトリーのcloud-config.txtファイルを参照してください。 -
disable_vmware_customizationは、VMware vSphere のカスタマイズを有効または無効にします。 -
cloud_init_modules:このセクションのモジュールは、ブートプロセスの早い段階でcloud-initサービスが起動するときに実行されるサービスです。 -
cloud_config_modules:これらのモジュールは、初期ブート後のcloud-init設定中に実行されます。 -
cloud_final_modules:これらのモジュールは、設定が完了した後、cloud-initの最終フェーズで実行されます。 -
default_userは、デフォルトユーザーの詳細を指定します。詳細は、Users and Groups を参照してください。 -
distro:ディストリビューションを指定します。 -
cloud_dirは、cloud-init固有のサブディレクトリーを含むメインディレクトリーを指定します。詳細は、Directory layout を参照してください。 -
templates_dirはテンプレートが配置される場所を指定します。 -
ssh_svcnameは SSH サービスの名前です。
2.4.2. デフォルトの cloud.cfg.d ディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
cloud-init は、ユーザーが提供および設定するディレクティブに対応します。通常、これらのディレクティブは cloud.cfg.d ディレクトリーに含まれています。
cloud.cfg ファイル内でユーザーデータディレクティブを追加することでモジュールを設定できますが、cloud.cfg を未変更のままにすること (ベストプラクティス) をご検討ください。ディレクティブを /etc/cloud/cloud.cfg.d ディレクトリーに追加します。このディレクトリーにディレクティブを追加することで、今後の変更およびアップグレードを容易にすることができます。
ユーザースクリプトを *.cfg ファイルとして追加する方法の詳細は ユーザーデータ形式 を参照してください。
2.4.3. デフォルトの 05_logging.cfg ファイル リンクのコピーリンクがクリップボードにコピーされました!
05_logging.cfg ファイルは、ログ情報と cloud-init のデフォルトのログ設定ファイルを設定します。/etc/cloud/cloud.cfg.d ディレクトリーには、このファイルとその他の cloud-init ディレクティブが含まれています。RHEL のファイルのデフォルトの内容は次のとおりです。
2.4.4. /var/lib/cloud ディレクトリーのレイアウト リンクのコピーリンクがクリップボードにコピーされました!
cloud-init が開始されると、インスタンスの詳細と cloud-init 設定を含むディレクトリーレイアウトが作成されます。このディレクトリーには、/scripts/vendor などのオプションのディレクトリーを含めることができます。以下は、cloud-init のサンプルディレクトリーレイアウトです。
第3章 Red Hat による cloud-init のサポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat は、さまざまな Red Hat 製品において、cloud-init ユーティリティー、cloud-init モジュール、およびデフォルトのディレクトリーとファイルをサポートしています。
3.1. cloud-init を使用する Red Hat 製品 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init は次の Red Hat 製品で使用できます。
-
Red Hat OpenStack Platform.
cloud-initを使用して、OpenStack のイメージの設定をサポートできます。詳細は、インスタンスとイメージのガイド を参照してください。 -
Red Hat Satellite.
cloud-initを Red Hat Satellite で使用することができます。詳細は Red Hat Virtualization での Cloud-init イメージの準備 を参照してください。 -
Red Hat OpenShift.OpenShift 用の仮想マシンを作成する際に
cloud-initを使用できます。詳細は、Creating Virtual Machines を参照してください。
3.2. サポートされている cloud-init モジュール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat はほとんどの cloud-init モジュールをサポートしています。個々のモジュールには、複数の設定オプションを含めることができます。次の表には、Red Hat が現在サポートしているすべての cloud-init モジュールが記載されており、簡単な説明とデフォルトのモジュール実行頻度が示されています。
| cloud-init モジュール | 説明 | デフォルトのモジュール実行頻度 |
|---|---|---|
| bootcmd | ブートプロセスの初期段階でコマンドを実行します。 | 常時 |
| ca_certs | CA 証明書を追加します。 | インスタンス別 |
| debug | デバッグを支援するために内部情報の出力を有効または無効にします。 | インスタンス別 |
| disable_ec2_metadata | AWS EC2 メタデータを有効または無効にします。 | 常時 |
| disk_setup | シンプルなパーティションテーブルとファイルシステムを設定します。 | インスタンス別 |
| final_message |
| 常時 |
| foo | モジュール構造の例 (モジュールは何もしません)。 | インスタンス別 |
| growpart | パーティションのサイズを変更して、利用可能なディスク領域を埋めます。 | 常時 |
| keys_to_console | コンソールに書き込むことができるフィンガープリントとキーの制御を許可します。 | インスタンス別 |
| landscape | ランドスケープクライアントをインストールおよび設定します。 | インスタンス別 |
| locale | システムロケールを設定し、システム全体に適用します。 | インスタンス別 |
| mcollective |
| インスタンス別 |
| migrator |
| 常時 |
| mounts | マウントポイントとスワップファイルを設定します。 | インスタンス別 |
| phone_home | 起動完了後にリモートホストにデータを投稿します。 | インスタンス別 |
| power_state_change | すべての設定モジュールの実行後にシャットダウンを完了し、再起動します。 | インスタンス別 |
| puppet | puppet をインストールおよび設定します。 | インスタンス別 |
| resizefs | ファイルシステムのサイズを変更し、パーティションで利用可能な領域をすべて使用します。 | 常時 |
| resolv_conf |
| インスタンス別 |
| rh_subscription | Red Hat Enterprise Linux (RHEL) システムを登録します。 | インスタンス別 |
| rightscale_userdata |
| インスタンス別 |
| rsyslog |
| インスタンス別 |
| runcmd | 任意のコマンドを実行します。 | インスタンス別 |
| salt_minion |
| インスタンス別 |
| scripts_per_boot | 起動スクリプトごとに実行します。 | 常時 |
| scripts_per_instance | インスタンススクリプトごとに実行します。 | インスタンス別 |
| scripts_per_once | スクリプトを 1 回実行します。 | 1 回 |
| scripts_user | ユーザースクリプトを実行します。 | インスタンス別 |
| scripts_vendor | ベンダースクリプトを実行します。 | インスタンス別 |
| seed_random | ランダムなシードデータを提供します。 | インスタンス別 |
| set_hostname | ホスト名および完全修飾ドメイン名 (FQDN) を設定します。 | 常時 |
| set_passwords | ユーザーパスワードを設定し、SSH パスワード認証を有効または無効にします。 | インスタンス別 |
| ssh_authkey_fingerprints | ユーザーの SSH 鍵のフィンガープリントをログに記録します。 | インスタンス別 |
| ssh_import_id | SSH 鍵をインポートします。 | インスタンス別 |
| ssh | SSH、ホスト、および認可された SSH 鍵を設定します。 | インスタンス別 |
| timezone | システムのタイムゾーンを設定します。 | インスタンス別 |
| update_etc_hosts |
| 常時 |
| update_hostname | ホスト名および FQDN を更新します。 | 常時 |
| users_groups | ユーザーおよびグループを設定します。 | インスタンス別 |
| write_files | 任意のファイルを書き込みます。 | インスタンス別 |
| yum_add_repo | dnf リポジトリー設定をシステムに追加します。 | 常時 |
3.3. Red Hat のサポート対象外の cloud-init モジュール リンクのコピーリンクがクリップボードにコピーされました!
次のモジュールのリストは Red Hat では サポートされていない ため、cloud-init 設定でこのようなモジュールを使用することは推奨されません。
| モジュール |
|---|
| apt_configure |
| apt_pipeline |
| byobu |
| chef |
| emit_upstart |
| grub_dpkg |
| ubuntu_init_switch |
第4章 cloud-init での仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init を含む新しい仮想マシン (VM) を作成するには、meta-data ファイルと user-data ファイルを作成します。
-
meta-dataファイルには、インスタンスの詳細が含まれます。 -
user-dataファイルには、ユーザーを作成し、アクセスを付与するための情報が含まれます。
これらのファイルを新しい ISO イメージに追加し、KVM ゲストイメージから作成した新しい仮想マシンに ISO ファイルをアタッチします。このシナリオでは、データソースは NoCloud です。
手順
cloudinitisoディレクトリーを作成し、作業ディレクトリーとして設定します。mkdir cloudinitiso cd cloudinitiso
$ mkdir cloudinitiso $ cd cloudinitisoCopy to Clipboard Copied! Toggle word wrap Toggle overflow meta-dataファイルを編集します。vi meta-data instance-id: citest local-hostname: citest-1
$ vi meta-data instance-id: citest local-hostname: citest-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow user-dataファイルを編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記SSH 公開鍵は
~/.ssh/id_rsa.pubファイルにあります。user-dataとmeta-dataを含む ISO イメージを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Red Hat カスタマーポータルから、
/var/lib/libvirt/imagesディレクトリーに KVM ゲストイメージをダウンロードします。 virt-installユーティリティーを使用して KVM ゲストイメージから新しい仮想マシンを作成し、ダウンロードしたイメージを既存のイメージにアタッチします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトのユーザー名
cloud-userとデフォルトのパスワードcilogonを使用してイメージにログオンします。citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$
citest-1 login: cloud-user Password: [cloud-user@citest-1 ~]$Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
cloud-initサービスのステータスをチェックして、ユーティリティーが定義されたタスクを完了したことを確認します。cloud-init status status: done
[cloud-user@citest-1 instance]$ cloud-init status status: doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-initユーティリティーは、実行時に/var/lib/cloudの下のcloud-initディレクトリーレイアウトを作成し、指定したディレクティブに基づいて特定のディレクトリーコンテンツを更新または変更します。たとえば、データソースファイルをチェックして、データソースが
NoCloudであることを確認できます。cd /var/lib/cloud/instance cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]
$ cd /var/lib/cloud/instance $ cat datasource DataSourceNoCloud: DataSourceNoCloud [seed=/dev/sr0][dsmode=net]Copy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-initは、user-data を/var/lib/cloud/instance/user-data.txtにコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OpenStack の場合、インスタンスの作成と管理 には、cloud-init を使用してインスタンスを設定するための情報が含まれています。具体的な手順は、カスタムインスタンスの作成 を参照してください。
第5章 cloud-init を使用して初回起動コマンドを実行する リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンの最初の起動と初期化中にコマンドを実行するには、cloud-init 設定の runcmd セクションと bootcmd セクションを使用できます。
-
bootcmdセクションは、初期化プロセスの早い段階で実行され、デフォルトでは起動ごとに実行されます。 -
runcmdセクションは、プロセスの最後の方で実行され、初回起動時および初期化中にのみ実行されます。
前提条件
データソースの要件に応じて、
user-dataファイルを編集するか、次のディレクティブをcloud.cfg.dディレクトリーに追加する。注記cloud-initが、ユーザーディレクティブを含むファイルを認識できるように、すべてのユーザーディレクティブはファイルの最上部に#cloud-configが含まれます。cloud.cfg.dディレクトリーにディレクティブを含める場合は、ファイル名を*.cfgとし、ファイルの最上部に常に#cloud-configを含めます。
手順
bootcmdおよびruncmdのセクションを追加します。cloud-initが実行するコマンドを含めます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第6章 仮想マシンでの cloud-init の再実行 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init サービスで設定された仮想マシン (VM) に追加の設定が必要な場合は、cloud-init プロセスを再実行できます。
cloud-init プロセスを再実行すると、データが失われ、SSH 鍵やパスワードなどの認証情報が上書きされる可能性があります。実稼働環境で cloud-init を再実行することは避けてください。
6.1. cloud-init の実行後に KVM ゲストイメージから作成された仮想マシンの変更 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init パッケージがインストールされ有効になっている仮想マシンを起動すると、仮想マシンの初回起動時に cloud-init がデフォルトの状態で実行されます。仮想マシンの設定を変更する場合は、cloud-init の設定を変更して cloud-init を再実行できます。
手順
- 仮想マシンにログインします。
-
ディレクティブを追加または変更します。たとえば、
/etc/cloudディレクトリーのcloud.cfgファイルを変更するか、ディレクティブを/etc/cloud/cloud.cfg.dディレクトリーに追加します。 -
cloud-init cleanコマンドを実行してディレクトリーをクリーンアップし、cloud-initを再実行できるようにします。 仮想マシンデータを消去するには、次のコマンドを
rootとして実行します。rm -Rf /var/lib/cloud/instances/ rm -Rf /var/lib/cloud/instance rm -Rf /var/lib/cloud/data/
rm -Rf /var/lib/cloud/instances/ rm -Rf /var/lib/cloud/instance rm -Rf /var/lib/cloud/data/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クリーンアップしたイメージをテンプレートイメージとして保存し、そのイメージを複数の仮想マシンに使用できます。新しい仮想マシンは更新された設定を使用して
cloud-initを実行します。-
設定の変更を実装するには、
cloud-initを再実行するか、仮想マシンを再起動します。cloud-initの再実行の詳細は、cloud-init の再実行 を参照してください。
6.2. cloud-init 実行後の特定データソースの仮想マシンの変更 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init を再実行する前に、cloud-init の設定を変更できます。実行する必要がある正確な手順は、データソースによって異なることに注意してください。次の手順では、OpenStack をデータソースの例として使用します。
手順
-
OpenStack Platform のインスタンスを作成して起動します。OpenStack のインスタンスの作成は、インスタンスの作成 を参照してください。この例では、仮想マシンには
cloud-initが含まれており、これは仮想マシンの起動時に実行されます。 -
ディレクティブを追加または変更します。たとえば、OpenStack HTTP サーバー上に保管されている
user-data.fileファイルを変更します。 仮想マシンをクリーンアップします。
rm -rf /etc/resolv.conf /run/cloud-init userdel -rf cloud-user hostnamectl set-hostname localhost.localdomain rm /etc/NetworkManager/conf.d/99-cloud-init.conf
# rm -rf /etc/resolv.conf /run/cloud-init # userdel -rf cloud-user # hostnamectl set-hostname localhost.localdomain # rm /etc/NetworkManager/conf.d/99-cloud-init.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記クリーンアップしたイメージをテンプレートイメージとして保存し、そのイメージを複数の仮想マシンで使用できます。新しい仮想マシンは、更新された
cloud-init設定を使用して、cloud-initを実行します。-
設定の変更を実装するには、
cloud-initを再実行するか、仮想マシンを再起動します。cloud-initの再実行の詳細は、cloud-init の再実行 を参照してください。
第7章 cloud-init を使用した認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
cloud-init ユーティリティーを使用して、ユーザー、アクセス権、およびパスワードを管理できます。具体的には、仮想マシンで次のいずれかを実行するように cloud-init を設定できます。
-
usersセクションでユーザーを作成して、記述します。usersセクションを追加する場合は、そのセクションでデフォルトのユーザーオプションも設定する必要があります。セクションを変更して、初期システム設定にユーザーを追加したり、追加のユーザーオプションを設定したりすることもできます。 -
usersセクションにsudoおよびgroupsエントリーを追加して、ユーザーを sudoer として設定します。 -
自分だけが
rootユーザーの権限を所有するようにユーザーデータを設定します。 -
パスワードをリセットするには、最初のログイン時に
cloud-userにcloud-userのパスワードを強制的に変更させます。 -
ユーザーリストを作成して、
rootパスワードを設定します。
前提条件
データソースの要件に応じて、
user-dataファイルを編集するか、次のディレクティブをcloud.cfg.dディレクトリーに追加する。注記cloud-initが、ユーザーディレクティブを含むファイルを認識できるように、すべてのユーザーディレクティブはファイルの最上部に#cloud-configが含まれます。cloud.cfg.dディレクトリーにディレクティブを含める場合は、ファイル名を*.cfgとし、ファイルの最上部に常に#cloud-configを含めます。
手順
ユーザーとユーザーオプションを追加 します。
デフォルトでは、
selinux-user値がない場合、ユーザーはunconfined_uとラベル付けされます。注記この例では、ユーザー
user2をusersとwheelの 2 つのグループに配置します。usersセクションを追加または変更し、ユーザーを追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
cloud-userを、指定する他のユーザーと共に作成したデフォルトユーザーにするには、セクションの最初のエントリーとしてdefaultを追加することを確認してください。これが最初のエントリーでない場合は、cloud-userは作成されません。
sudo ユーザーをユーザーリストに追加 します。
-
sudoエントリーを追加し、ユーザーアクセスを指定します。たとえば、sudo: ALL=(ALL) NOPASSWD:ALLは、ユーザーに無制限のユーザーアクセスを許可します。 groupsエントリーを追加し、ユーザーを含むグループを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
ユーザーに排他的な
rootアクセスを設定 します。nameオプションを変更して、usersセクションにユーザーrootのエントリーを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
rootユーザーの SSH 鍵を設定します。users: - name: root ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.comusers: - name: root ssh_pwauth: True ssh_authorized_keys: - ssh-rsa AA..vz user@domain.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
デフォルトの
cloud-initユーザー名を変更するには、次の手順に従います。user: <username>の行を追加します。<username> は新しいデフォルトのユーザー名に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新しいユーザーのパスワードをリセット します。
chpasswd: {expire: False}の行をchpasswd: {expire: True}に変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記-
これはパスワードを失効させます。なぜなら、
passwordとchpasswdは特に指定がない限り、デフォルトのユーザーで動作するからです。 -
これはグローバル設定です。
chpasswdをTrueに設定すると、作成するすべてのユーザーが、ログイン時にパスワードを変更する必要があります。
-
これはパスワードを失効させます。なぜなら、
root パスワードを設定 します。
chpasswdセクションにユーザーリストを作成します。注記空白は重要です。ユーザーリストのコロンの前後に空白を含めないでください。空白が含まれている場合、パスワードは空白を入れた設定となります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この方法を使用してユーザーパスワードを設定する場合は、このセクションの すべてのパスワード を設定する必要があります。
第8章 cloud-init を使用した Red Hat サブスクリプションの管理 リンクのコピーリンクがクリップボードにコピーされました!
rh_subscription ディレクティブを使用してシステムを登録できます。サブスクリプションごとに、ユーザーデータを編集する必要があります。
defaultオプションの使用rh_subscriptionの下に、usernameとpasswordを追加します。rh_subscription: username: <example@redhat.com> password: <example_password>
rh_subscription: username: <example@redhat.com> password: <example_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow activation-keyとorgオプションの使用rh_subscriptionの下に、activation keyとorgの番号を追加します。rh_subscription: activation-key: <example_key> org: <example_id>
rh_subscription: activation-key: <example_key> org: <example_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow server-hostnameオプションの使用/etc/rhsm/rhsm.confファイルでサーバーのホスト名を設定できます。rh_subscriptionの下に、username、password、およびserver-hostnameを追加します。rh_subscription: username: <example@redhat.com> password: <example_password> server-hostname: <test.example.com>
rh_subscription: username: <example@redhat.com> password: <example_password> server-hostname: <test.example.com>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第9章 cloud-init を使用した静的ネットワークの設定 リンクのコピーリンクがクリップボードにコピーされました!
network-interfaces セクションをメタデータに追加することで、cloud-init を使用してネットワーク設定をセットアップできます。
Red Hat Enterprise Linux (RHEL) は、NetworkManager を通じてデフォルトのネットワークサービスを提供します。これは、動的なネットワーク制御および設定を行うデーモンであり、ネットワークデバイスと接続が利用可能なときに、それらをアクティブな稼働状態に維持します。
+
データソースがネットワーク設定を提供する場合があります。詳細は、cloud-init セクションの ネットワーク設定ソース を参照してください。
cloud-init のネットワーク設定を指定しておらず、ネットワーク設定を無効にしていない場合、cloud-init は割り当てられているデバイスに既存の接続があるかどうかを判別しようとします。接続されたデバイスを見つけると、インターフェイスで DHCP 要求を発行するネットワーク設定が生成されます。詳細は、cloud-init ドキュメントの Fallback Network Configuration セクションを参照してください。
前提条件
データソースの要件に応じて、
user-dataファイルを編集するか、次のディレクティブをcloud.cfg.dディレクトリーに追加する。注記cloud-initが、ユーザーディレクティブを含むファイルを認識できるように、すべてのユーザーディレクティブはファイルの最上部に#cloud-configが含まれます。cloud.cfg.dディレクトリーにディレクティブを含める場合は、ファイル名を*.cfgとし、ファイルの最上部に常に#cloud-configを含めます。
手順
network-interfacesセクションを追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
メタデータに以下の情報を追加することで、ネットワーク設定を無効にすることができます。
network: config: disabled
network:
config: disabled
第10章 cloud-init を使用したコンテナーストレージの設定 リンクのコピーリンクがクリップボードにコピーされました!
write_files モジュール内で、container-storage-setup ユーティリティーを参照してストレージを設定できます。
前提条件
データソースの要件に応じて、
user-dataファイルを編集するか、次のディレクティブをcloud.cfg.dディレクトリーに追加する。注記cloud-initが、ユーザーディレクティブを含むファイルを認識できるように、すべてのユーザーディレクティブはファイルの最上部に#cloud-configが含まれます。cloud.cfg.dディレクトリーにディレクティブを含める場合は、ファイル名を*.cfgとし、ファイルの最上部に常に#cloud-configを含めます。
手順
container-storage-setupユーティリティーへのパスを含めるようにwrite_filesモジュールを追加または変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、ルート論理ボリュームのサイズをデフォルトの 3 GB ではなく 6 GB に設定します。
第11章 cloud-init でのシェルスクリプトの使用 リンクのコピーリンクがクリップボードにコピーされました!
bootcmd または runcmd に、リスト値または文字列の値を追加できます。また、ユーザーデータ内にシェルスクリプトを指定することもできます。
- 文字列値を使用する場合、文字列全体がシェルスクリプトとして実行されます。
-
bootcmdまたはruncmdのリスト値を使用する場合、各リスト項目はexecveを使用して順番に実行されます。 -
cloud-initを使用してシェルスクリプトを実行する場合は、cloud-initに.yamlファイルを指定する代わりに、シェルスクリプト (シバン#!を追加すること) を指定できます。
シェルスクリプトを bootcmd および runcmd に配置する方法の例は、Run commands on first boot を参照してください。
第12章 cloud-init を使用したシステムロケールの変更 リンクのコピーリンクがクリップボードにコピーされました!
locale モジュールを使用して、システムの場所を設定できます。
前提条件
-
データソースの要件に応じて、
meta-dataファイルを編集します。次のディレクティブをcloud.cfgファイルまたはcloud.cfg.dディレクトリーに追加することもできます。
手順
-
場所を指定して
localeディレクティブを追加します。以下の例では、UTF-8エンコーディングでlocaleをja_JP(日本) に設定しています。
#cloud-config locale: ja_JP.UTF-8
#cloud-config
locale: ja_JP.UTF-8
第13章 cloud-init による設定ファイルの更新の阻止 リンクのコピーリンクがクリップボードにコピーされました!
バックアップイメージからインスタンスを作成または復元すると、インスタンス ID が変更されます。インスタンス ID が更新されると、cloud-init ユーティリティーは設定ファイルを更新します。ただし、バックアップを作成またはバックアップから復元するときに、cloud-init が特定の設定ファイルを更新しないようにすることができます。
手順
/etc/cloud/cloud.cfgファイルを編集します。vi /etc/cloud/cloud.cfg
# vi /etc/cloud/cloud.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスの復元時に、
cloud-initが更新しない設定をコメントアウトまたは削除します。たとえば、SSH 鍵ファイルの更新を回避するには、cloud_init_modulesセクションから-sshを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
cloud-initによって更新された設定ファイルを確認するには、/var/log/cloud/cloud-init.logファイルを調べます。更新されたファイルは、インスタンスの起動時にWriting toで始まるメッセージでログに記録されます。2019-09-03 00:16:07,XXX - util.py[DEBUG]: Writing to /root/.ssh/authorized_keys - wb: [XXX] 554 bytes 2019-09-03 00:16:08,XXX - util.py[DEBUG]: Writing to /etc/ssh/sshd_config - wb: [XXX] 3905 bytes
2019-09-03 00:16:07,XXX - util.py[DEBUG]: Writing to /root/.ssh/authorized_keys - wb: [XXX] 554 bytes 2019-09-03 00:16:08,XXX - util.py[DEBUG]: Writing to /etc/ssh/sshd_config - wb: [XXX] 3905 bytesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第14章 cloud-init のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
cloud-init ユーティリティーを実行した後、設定ファイルとログファイルを調べることでインスタンスのトラブルシューティングを行うことができます。問題を特定したら、インスタンスで cloud-init を再実行します。コマンドラインから cloud-init を実行できます。詳細は、cloud-init --help コマンドを実行してください。
一般的な設定の問題は、
cloud-init設定ファイルを確認してください。-
/etc/cloud/cloud.cfg設定ファイルを検証します。cloud_init_modules、cloud_config_modules、およびcloud_final_modulesに含まれるモジュールを確認します。 -
/etc/cloud/cloud.cfg.dディレクトリーで、ディレクティブ (*.cfgfiles) を確認します。
-
root パーティションが自動的に拡張されなかった場合は、
growpartユーティリティーのログメッセージを確認します。注記growpartは LVM をサポートしません。root パーティションが LVM をベースとしている場合は、root パーティションは初回起動時に自動的に拡張されません。-
特定の問題の詳細は、
/var/log/cloud-init.logファイルおよび/var/log/cloud-init-output.logファイルを確認してください。
-
特定の問題の詳細は、
ファイルシステムが拡張されなかった場合は、ログメッセージで
resizefsを確認します。grep resizefs /var/log/cloud-init.log
# grep resizefs /var/log/cloud-init.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow
cloud-init コマンドを root として再実行します。
init モジュールのみで
cloud-initを再実行します。/usr/bin/cloud-init -d init
# /usr/bin/cloud-init -d initCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定内のすべてのモジュールで
cloud-initを再実行します。/usr/bin/cloud-init -d modules
# /usr/bin/cloud-init -d modulesCopy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-initキャッシュを削除し、起動後にcloud-initを強制的に実行します。rm -rf /var/lib/cloud/ && /usr/bin/cloud-init -d init
# rm -rf /var/lib/cloud/ && /usr/bin/cloud-init -d initCopy to Clipboard Copied! Toggle word wrap Toggle overflow ディレクトリーをクリーンアップし、クリーンなインスタンスをシミュレートします。
rm -rf /var/lib/cloud/instances/ rm -rf /var/lib/cloud/instance rm -rf /var/lib/cloud/data/ reboot
# rm -rf /var/lib/cloud/instances/ # rm -rf /var/lib/cloud/instance # rm -rf /var/lib/cloud/data/ # rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-initユーティリティーを再実行します。cloud-init init --local cloud-init init
# cloud-init init --local # cloud-init initCopy to Clipboard Copied! Toggle word wrap Toggle overflow