第2章 cloud-init の概要

cloud-init ユーティリティーは、システムの起動時にクラウドインスタンスの初期化を自動化します。cloud-init は、さまざまなタスクを実行するように設定できます。

  • ホスト名の設定
  • インスタンスへのパッケージのインストール
  • スクリプトの実行
  • デフォルトの仮想マシン (VM) 動作の抑制

前提条件

cloud-init は、さまざまなタイプの RHEL イメージで利用できます。以下に例を示します。

  • Red Hat カスタマーポータル から KVM ゲストイメージをダウンロードすると、イメージが cloud-init パッケージで事前にインストールされます。インスタンスを起動すると、cloud-init パッケージが有効になります。Red Hat カスタマーポータルの KVM ゲストイメージは、Red Hat Virtualization (RHV)、Red Hat OpenStack Platform (RHOSP)、および Red Hat OpenShift Virtualization で使用することを目的としています。
  • Red Hat カスタマーポータルから RHEL ISO イメージをダウンロードして、カスタムゲストイメージを作成することもできます。この場合は、カスタマイズしたゲストイメージに cloud-init パッケージをインストールする必要があります。
  • クラウドサービスプロバイダー(AWS または Azure など)からのイメージを使用する必要がある場合は、RHEL イメージビルダーを使用してイメージ を作成します。Image Builder イメージは、特定のクラウドプロバイダー向けにカスタマイズされます。次のイメージタイプには、cloud-init がすでにインストールされているものがあります。

ほとんどのクラウドプラットフォームは cloud-init をサポートしますが、設定手順とサポートされるオプションは異なります。また、NoCloud 環境向けに cloud-init を設定できます。

さらに、1 つの仮想マシンで cloud-init を設定し、その仮想マシンをテンプレートとして使用し、追加の仮想マシンまたは仮想マシンクラスターを作成できます。

Red Hat Virtualization などの特定の Red Hat 製品では、これらの製品の 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 初期化フェーズ ..設定フェーズ ..最終フェーズ。

    + cloud.cfg ファイルでは、3 つのフェーズのモジュールが cloud_init_modulescloud_config_modules、および cloud_final_modules の下にそれぞれ一覧表示されます。

  • cloud.cfg.d ディレクトリーに、cloud-init のディレクティブを追加できます。cloud.cfg.d ディレクトリーにディレクティブを追加する場合は、それらを *.cfg という名前のカスタムファイルに追加し、ファイルの先頭に常に #cloud-config を含める必要があります。