Red Hat Training

A Red Hat training course is available for RHEL 8

RHEL システムイメージのカスタマイズ

Red Hat Enterprise Linux 8

Red Hat Enterprise Linux 8 の Image Builder でシステムイメージのカスタマイズ

概要

Image Builder は、デプロイメント可能なカスタムシステムイメージ (インストールディスク、仮想マシン、クラウドベンダー固有のイメージなど) を作成するツールです。Image Builder を使用すると、出力タイプごとに必要な特定の設定が不要になるため、手動の手順と比較してこれらのイメージをより迅速に作成できます。このドキュメントでは、Image Builder を設定してイメージを作成する方法について説明します。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

Red Hat ドキュメントへのフィードバック (英語のみ)

当社のドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。

特定の文章に関するコメントの送信

  1. Multi-page HTML 形式でドキュメントを表示し、ページが完全にロードされてから右上隅に Feedback ボタンが表示されていることを確認します。
  2. カーソルを使用して、コメントを追加するテキスト部分を強調表示します。
  3. 強調表示されたテキストの近くに表示される Add Feedback ボタンをクリックします。
  4. フィードバックを追加し、Submit をクリックします。

Bugzilla からのフィードバック送信 (アカウントが必要)

  1. Bugzilla の Web サイトにログインします。
  2. Version メニューから正しいバージョンを選択します。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. Submit Bug をクリックします。

第1章 Image Builder の説明

システムをクラウドプラットフォームにデプロイするには、システムイメージを作成します。RHEL イメージを作成するために、RHEL 8 は Image Builder ツールを使用します。

1.1. Image Builder とは?

Image Builder を使用することで、RHEL のカスタマイズされたシステムイメージを作成できます。これには、クラウドプラットフォームへのデプロイメント用に準備されたシステムイメージが含まれます。Image Builder は、各出力タイプのセットアップの詳細を自動的に処理するため、手動でイメージを作成する方法よりも使いやすく、作業が高速です。composer-cli ツールのコマンドラインインターフェイスで Image Builder 機能、または RHEL Web コンソールでグラフィカルインターフェイスにアクセスできます。

注記

RHEL 8.3 以降では、osbuild-composer バックエンドが lorax-composer に取って代わります。新しいサービスには、イメージビルド向けの REST API が含まれます。

1.2. Image Builder の用語

ブループリント

ブループリントは、カスタマイズされたシステムイメージの説明です。システムの一部となるパッケージとカスタマイズが一覧表示されます。ブループリントをカスタマイズして編集し、特定のバージョンとして保存できます。ブループリントからシステムイメージを作成すると、RHEL Web コンソールのイメージビルダーインターフェイスでイメージがブループリントに関連付けられます。

ブループリントは TOML 形式で作成できます。

Compose
コンポーズは、特定のブループリントの特定のバージョンに基づいた、システムイメージの個別のビルドです。用語としての Compose は、システムイメージと、その作成、入力、メタデータ、およびそのプロセス自体のログを指します。
カスタマイズ
カスタマイズは、パッケージではないイメージの仕様です。これには、ユーザー、グループ、および SSH 鍵が含まれます。

1.3. Image Builder の出力形式

Image Builder は、次の表に示す出力形式でイメージを作成できます。サポートされているタイプを確認するには、次のコマンドを実行します。

# composer-cli compose types

表1.1 Image Builder の出力形式

説明CLI 名ファイル拡張子

QEMU QCOW2 イメージ

qcow2

.qcow2

tar アーカイブ

tar

.tar

Amazon Machine Image ディスクの作成

ami

.raw

Azure ディスクイメージ

vhd

.vhd

Google Cloud Platform

gce

.vhd

VMware 仮想マシンディスク

vmdk

.vmdk

Openstack

openstack

.qcow2

RHEL for Edge のコミット

edge-commit

.tar

RHEL for Edge コンテナー

edge-container

.tar

RHEL for Edge インストーラー

edge-installer

.iso

RHEL for Edge Raw

edge-raw-image

.tar

RHEL for Edge Simplified Installer

edge-simplified-installer

.iso

ISO イメージ

image-installer

.iso

1.4. Image Builder のシステム要件

Image Builder を実行する環境 (専用の仮想マシンなど) は、次の表に記載されている要件を満たす必要があります。

表1.2 Image Builder のシステム要件

パラメーター最低要求値

システムのタイプ

専用の仮想マシン

プロセッサー

2 コア

メモリー

4 GiB

ディスク容量

/var ファイルシステムに 20 GiB の空き容量

アクセス権限

管理者レベル (root)

ネットワーク

インターネット接続

注記

インターネット接続がない場合は、Red Hat Content Delivery Network (CDN) に接続しないように再設定すれば、隔離されたネットワークで Image Builder を使用できます。そのためには、ローカルリポジトリーを指すようにデフォルトのリポジトリーをオーバーライドする必要があります。コンテンツが内部でミラーリングされていることを確認するか、Red Hat Satellite を使用してください。詳細は、Managing repositories を参照してください。

第2章 Image Builder のインストール

Image Builder を使用する前に、仮想マシンで Image Builder をインストールする必要があります。

2.1. 仮想マシンへの Image Builder のインストール

Image Builder を専用の仮想マシン (VM) にインストールするには、以下の手順を行います。

前提条件

  • RHEL VM に接続している必要があります。
  • Image Builder 用の VM が実行中であり、Red Hat Subscription Manager (RHSM) または Red Hat Satellite にサブスクライブしている必要があります。

手順

  1. Image Builder とその他の必要なパッケージを VM にインストールします。

    • osbuild-composer - RHEL 8.3 以降でサポート
    • composer-cli
    • cockpit-composer
    • bash-completion
    # yum install osbuild-composer composer-cli cockpit-composer bash-completion

    Web コンソールは、cockpit-composer パッケージの依存関係としてインストールされます。

  2. システムを再起動するたびに、Image Builder が起動するようにします。

    # systemctl enable --now osbuild-composer.socket
    # systemctl enable --now cockpit.socket

    osbuild-composer および cockpit サービスは、最初のアクセスで自動的に起動します。

  3. システムを再起動しなくても、composer-cli コマンドのオートコンプリート機能がすぐに動作するように、シェル設定スクリプトを読み込みます。

    $ source /etc/bash_completion.d/composer-cli
重要

osbuild-composer パッケージは、Red Hat Enterprise Linux 8.3 以降の新機能すべてに焦点を当てた新しいバックエンドエンジンで、デフォルト設定として推奨されています。以前のバックエンドの lorax-composer は非推奨となり、Red Hat Enterprise Linux 8 ライフサイクルの残りの期間、一部の修正のみを受信し、今後のメジャーリリースから削除される予定です。osbuild-composer を優先するには、lorax-composer のアンインストールを推奨します。

検証

システムジャーナルを使用して、Image Builder サービスアクティビティーを追跡できます。さらに、ファイル内のログメッセージを見つけることができます。

  • トレースバックのジャーナル出力を見つけるには、次のコマンドを実行します。

    $ journalctl | grep osbuild
  • リモートワーカーとローカルワーカーの両方を表示するには:

    $ journalctl -u osbuild-worker*
  • 実行中のサービスを表示するには:

    $ journalctl -u osbuild-composer.service

2.2. lorax-composer Image Builder バックエンドに戻す手順

osbuild-composer バックエンドは、はるかに拡張性が高くなっていますが、現時点では以前の lorax-composer バックエンドとの機能パリティーがありません。

以前のバックエンドに戻すには、以下の手順に従います。

前提条件

  • osbuild-composer パッケージがインストールされている。

手順

  1. osbuild-composer バックエンドを削除します。

    # yum remove osbuild-composer
    # yum remove weldr-client
  2. /etc/yum.conf ファイルで、osbuild-composer パッケージの除外エントリーを追加します。

    # cat /etc/yum.conf
    [main]
    gpgcheck=1
    installonly_limit=3
    clean_requirements_on_remove=True
    best=True
    skip_if_unavailable=False
    exclude=osbuild-composer weldr-client
  3. lorax-composer パッケージをインストールします。

    # yum install lorax-composer composer-cli
  4. lorax-composer サービスを有効にして開始し、再起動するたびに開始します。

    # systemctl enable --now lorax-composer.socket
    # systemctl start lorax-composer

第3章 Image Builder リポジトリーの管理

3.1. Image Builder のデフォルトのシステムリポジトリー

osbuild-composer バックエンドは、/etc/yum.repos.d/ にあるシステムのリポジトリーを継承しません。代わりに、/usr/share/osbuild-composer/repositories ディレクトリーに定義された独自の公式リポジトリーのセットがあります。これには、追加のソフトウェアをインストールしたり、すでにインストールされているプログラムを新しいバージョンに更新したりするためのベースシステム RPM が含まれている Red Hat 公式リポジトリーが含まれます。公式リポジトリーをオーバーライドするには、/etc/osbuild-composer/repositories オーバーライドを定義する必要があります。このディレクトリーはユーザー定義のオーバーライド用であり、ここにあるファイルは /usr ディレクトリー内のファイルよりも優先されます。

設定ファイルは /etc/yum.repos.d/ 内のファイルから知られている通常の YUM リポジトリー形式ではありません。それらは単純な JSON ファイルになります。

3.2. システムリポジトリーのオーバーライド

次の手順で、/etc/osbuild-composer/repositories ディレクトリーの Image Builder にリポジトリーのオーバーライドを設定できます。

注記

RHEL 8.5 リリース以前では、リポジトリーオーバーライドの名前は rhel-8.json です。RHEL 8.5 以降、名前はマイナーバージョン (rhel-84.jsonrhel-85.json など) も尊重します。

前提条件

  • ホストシステムからアクセスできるカスタムリポジトリーがあります

手順

  1. リポジトリーのオーバーライドを保存するディレクトリーを作成します。

    $ sudo mkdir -p /etc/osbuild-composer/repositories
  2. 独自の JSON ファイル構造を作成できます。
  3. RHEL バージョンに対応する名前を使用して、JSON ファイルを作成します。または、配布用のファイルを /usr/share/osbuild-composer/ からコピーして、その内容を変更することもできます。

    RHEL 8 の場合は、/etc/osbuild-composer/repositories/rhel-87.json を使用します。

  4. 次の例のような構造を JSON ファイルに追加します。

    {
        "<ARCH>": [
            {
                "name": "baseos",
                "metalink": "",
                "baseurl": "http://mirror.example.com/composes/released/RHEL-8/8.0/BaseOS/x86_64/os/",
                "mirrorlist": "",
                "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\n (…​)",
                "check_gpg": true,
                "metadata_expire": ""
            }
        ]
    }

    次の属性から 1 つだけ指定します。

    • metalink - リポジトリーリンクの可用性とエラー修正を向上させます。
    • mirrorlist - パッケージリポジトリーを指す URL のリスト。
    • baseurl - インストールに必要なパッケージを含むリポジトリーへのリンク。

      残りのフィールドは任意です。

      1. または、ディストリビューションの JSON ファイルをコピーできます。

        1. 作成したディレクトリーにリポジトリーファイルをコピーします。次のコマンドで、rhel-version.json をご使用の RHEL バージョン (例: rhel-8.json) に置き換えます。

          $  cp /usr/share/osbuild-composer/repositories/rhel-version.json /etc/osbuild-composer/repositories/
  5. テキストエディターを使用して、rhel-8.json ファイルの baseurl パスを編集し、保存します。以下に例を示します。

    $ vi /etc/osbuild-composer/repositories/rhel-version.json
  6. osbuild-composer.service を再起動します。

    $ sudo systemctl restart osbuild-composer.service

検証

  • リポジトリーが正しい URL を指しているか確認します。

    $ cat /etc/yum.repos.d/redhat.repo

    リポジトリーは /etc/yum.repos.d/redhat.repo ファイルからコピーされた正しい URL を指していることが分かります。

3.3. サブスクリプションをサポートするシステムリポジトリーのオーバーライド

osbuild-composer サービスは /etc/yum.repos.d/redhat.repo ファイルで定義されているシステムのサブスクリプションを使用することができます。osbuild-composer でシステムサブスクリプションを使用するには、次を持つリポジトリーオーバーライドを定義します。

  • /etc/yum.repos.d/redhat.repo で定義されているリポジトリーと同じ baseurl
  • "rhsm": true の値は、JSON オブジェクトで定義されます。

前提条件

手順

  1. /etc/yum.repos.d/redhat.repo ファイルから baseurl を取得します。

    # cat /etc/yum.repos.d/redhat.repo
    [AppStream]
    name = AppStream mirror example
    baseurl = https://mirror.example.com/RHEL-8/8.0/AppStream/x86_64/os/
    enabled = 1
    gpgcheck = 0
    sslverify = 1
    sslcacert = /etc/pki/ca1/ca.crt
    sslclientkey = /etc/pki/ca1/client.key
    sslclientcert = /etc/pki/ca1/client.crt
    metadata_expire = 86400
    enabled_metadata = 0
  2. 同じ baseurl を使用するようにリポジトリーオーバーライドを設定し、rhsm を true に設定します。

    {
        "x86_64": [
            {
                "name": "AppStream mirror example",
                "baseurl": "https://mirror.example.com/RHEL-8/8.0/AppStream/x86_64/os/",
                "gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\n (…​)",
                "check_gpg": true,
                "rhsm": true
            }
        ]
    }
    注記

    osbuild-composer は、自動的に /etc/yum.repos.d/ で定義されたリポジトリーを使用していません。システムリポジトリーのオーバーライドとして、composer-cli を使用して追加の source として手動で指定する必要があります。システムリポジトリーのオーバーライドは通常、BaseOS および AppStream リポジトリーに使用されますが、composer-cli ソースは他のすべてのリポジトリーに使用されます。

その結果、Image Builder はホストシステムから /etc/yum.repos.d/redhat.repo ファイルを読み取り、それをサブスクリプションのソースとして使用します。

第4章 Image Builder コマンドラインインターフェイスを使用したシステムイメージの作成

Image Builder は、カスタムのシステムイメージを作成するツールです。Image Builder を制御し、カスタムシステムイメージを作成するには、コマンドラインインターフェイス (CLI) または Web コンソールインターフェイスを使用できます。ただし、現在、Image Builder を使用するには CLI が推奨されます。

4.1. Image Builder コマンドラインインターフェイスの紹介

現在、Image Builder コマンドラインインターフェイス (CLI) は、Image Builder を使用するための推奨される方法です。Web コンソールインターフェイス よりも多くの機能を提供します。CLI を使用するには、適切なオプションとサブコマンドを指定して composer-cli コマンドを実行します。

コマンドラインインターフェイスのワークフローの概要は次のようになります。

  1. 平文テキストファイルにブループリント定義をエクスポート (保存) する。
  2. テキストエディターでこのファイルを編集する。
  3. Image Builder でブループリントのテキストファイルをインポート (プッシュ) する。
  4. compose を実行して、ブループリントからイメージを構築する。
  5. イメージファイルをエクスポートして、ダウンロードする。

この手順を実行する基本的なサブコマンドとは別に、composer-cli コマンドには、設定したブループリントと Compose の状態を調べるサブコマンドが多数あります。

composer-cli コマンドを非 root として実行するには、ユーザーは、weldr または root グループに属している必要があります。

  • ユーザーを weldr または root グループに追加するには、次のコマンドを実行します:

    $ sudo usermod -a -G weldr user
    $ newgrp weldr

4.2. コマンドラインインターフェイスを使用した Image Builder ブループリントの作成

コマンドラインインターフェイス (CLI) を使用して、新しい Image Builder ブループリントを作成できます。ブループリントには、最終的なイメージと、パッケージやカーネルのカスタマイズなどのそのカスタマイズが記述されています。

前提条件

  • イメージビルダーツールへのアクセス。

手順

  1. 以下の内容で平文テキストファイルを作成します。

    name = "BLUEPRINT-NAME"
    description = "LONG FORM DESCRIPTION TEXT"
    version = "0.0.1"
    modules = []
    groups = []

    BLUEPRINT-NAME および LONG FORM DESCRIPTION TEXT は、ブループリントの名前および説明に置き換えます。

    Semantic Versioning スキームに従って、0.0.1 をバージョン番号に置き換えます。

  2. ブループリントに含まれるすべてのパッケージに、次の行をファイルに追加します。

    [[packages]]
    name = "package-name"
    version = "package-version"

    package-name は、パッケージ名 (httpdgdb-doccoreutils など) に置き換えます。

    package-version を使用するバージョンに置き換えます。このフィールドは、dnf バージョンの指定に対応します。

    • 特定のバージョンについては、8.7.0 などの正確なバージョン番号を使用してください。
    • 利用可能な最新バージョンについては、アスタリスク * を使用してください。
    • 最新のマイナーバージョンを指定する場合は、8.* などの形式を使用してください。
  3. ニーズに合わせてブループリントをカスタマイズします。たとえば、Simultaneous Multi Threading (SMT) を無効にするには、ブループリントファイルに次の行を追加します。

    [customizations.kernel]
    append = "nosmt=force"

    その他に利用できるカスタマイズについては、サポートされているイメージのカスタマイズ を参照してください。

  4. たとえば、ファイルを BLUEPRINT-NAME.toml として保存し、テキストエディターを閉じます。
  5. ブループリントをプッシュ (インポート) します。

    # composer-cli blueprints push BLUEPRINT-NAME.toml

    BLUEPRINT-NAME は、前の手順で使用した値に置き換えます。

    注記

    composer-cli を非 root として使用してイメージを作成するには、ユーザーを weldr または root グループに追加します。

    # usermod -a -G weldr user
    $ newgrp weldr

検証

  • ブループリントがプッシュされ存在していることを確認するには、既存のブループリントを一覧表示します。

    # composer-cli blueprints list
  • 追加したばかりのブループリント設定を表示します。

    # composer-cli blueprints show
  • ブループリントに記載されているコンポーネントおよびバージョンと、その依存関係が有効かどうかを確認します。

    # composer-cli blueprints depsolve BLUEPRINT-NAME

    Image Builder がカスタムリポジトリーからパッケージを解決できない場合は、次の手順に従います。

  • osbuild-composer キャッシュを削除します。

    $ sudo rm -rf /var/cache/osbuild-composer/*
    $ sudo systemctl restart osbuild-composer

4.3. コマンドラインインターフェイスで Image Builder のブループリントの編集

コマンドライン (CLI) インターフェイスで既存の Image Builder ブループリントを編集して、たとえば、新しいパッケージを追加したり、新しいグループを定義したり、カスタマイズしたイメージを作成したりできます。そのためには、以下の手順に従います。

前提条件

  • ブループリントを作成しました。

手順

  1. ローカルのテキストファイルにブループリントを保存 (エクスポート) します。

    # composer-cli blueprints save BLUEPRINT-NAME
  2. BLUEPRINT-NAME .toml ファイルをテキストエディターで編集し、変更を加えます。
  3. 編集を完了する前に、ファイルが有効なブループリントであることを確認します。

    1. 次の行がある場合は削除します。

      packages = []
    2. たとえば、バージョン番号を 0.0.1 から 0.1.0 に増やします。Image Builder のブループリントバージョンは Semantic Versioning スキームを使用する必要があります。また、バージョンを変更しない場合、パッチバージョンコンポーネントが自動的に増加することにも注意してください。
    3. コンテンツが有効な TOML 仕様かどうかを確認します。詳細は、TOML のドキュメント を参照してください。

      注記

      TOML のドキュメントはコミュニティーが提供しているため、Red Hat のサポート対象外となります。このツールの問題は、https://github.com/toml-lang/toml/issues から報告できます。

  4. ファイルを保存し、テキストエディターを閉じます。
  5. ブループリントを Image Builder にプッシュ (インポート) します。

    # composer-cli blueprints push BLUEPRINT-NAME.toml
    注記

    ブループリントを Image Builder にインポートして戻すには、.toml 拡張子を含むファイル名を指定しますが、他のコマンドではブループリント名のみを使用します。

  6. Image Builder にアップロードしたコンテンツが編集内容と一致することを確認するには、ブループリントのコンテンツの一覧を表示します。

    # composer-cli blueprints show BLUEPRINT-NAME
  7. ブループリントに記載されているコンポーネントおよびバージョンと、その依存関係が有効かどうかを確認します。

    # composer-cli blueprints depsolve BLUEPRINT-NAME

4.4. Image Builder コマンドラインインターフェイスでシステムイメージの作成

Image Builder コマンドラインインターフェイスを使用して、カスタムイメージを作成できます。

前提条件

手順

  1. Compose を起動します。

    # composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE

    BLUEPRINT-NAME は、ブループリントの名前に、IMAGE-TYPE は、イメージのタイプに置き換えます。使用可能な値は、composer-cli compose types コマンドの出力を参照してください。

    作成プロセスはバックグラウンドで開始され、作成者の Universally Unique Identifier (UUID) が表示されます。

  2. 作成プロセスが完了するまで待ちます。イメージの作成が完了するまでに最大 10 分かかる場合があります。

    Compose のステータスを確認するには、以下のコマンドを実行します。

    # composer-cli compose status

    終了した設定には、FINISHED ステータス値が表示されます。リストで設定を識別するには、その UUID を使用します。

  3. 作成プロセスが完了したら、結果のイメージファイルをダウンロードします。

    # composer-cli compose image UUID

    UUID は、前の手順で示した UUID 値に置き換えます。

検証

イメージを作成したら、次のコマンドを使用してイメージ作成の進行状況を確認できます。

  • 作成ステータスを確認します。

    $ sudo composer-cli compose status
  • イメージのメタデータをダウンロードします。

    $ sudo composer-cli compose metadata UUID
  • イメージのログをダウンロードします。

    $ sudo composer-cli compose logs UUID

    このコマンドは、イメージ作成のログを含む .tar ファイルを作成します。ログが空の場合は、ジャーナルを確認できます。

  • ジャーナルを確認してください。

    $ journalctl | grep osbuild
  • マニフェストを確認します。

    $ sudo cat /var/lib/osbuild-composer/jobs/job_UUID.json

    ジャーナルで job_UUID .json を見つけることができます。

関連情報

4.5. Image Builder コマンドラインの基本的なコマンド

Image Builder コマンドラインインターフェイスでは、以下のサブコマンドを利用できます。

ブループリント操作

利用可能なブループリント一覧の表示
# composer-cli blueprints list
TOML 形式でブループリントの内容の表示
# composer-cli blueprints show BLUEPRINT-NAME
TOML 形式のブループリントの内容を BLUEPRINT-NAME.toml ファイルに保存 (エクスポート)
# composer-cli blueprints save BLUEPRINT-NAME
ブループリントの削除
# composer-cli blueprints delete BLUEPRINT-NAME
TOML 形式のブループリントファイルを Image Builder へプッシュ (インポート)
# composer-cli blueprints push BLUEPRINT-NAME

ブループリントでイメージの設定

利用可能なイメージタイプを一覧表示します。
# composer-cli compose types
Compose の起動
# composer-cli compose start BLUEPRINT COMPOSE-TYPE

BLUEPRINT は、構築するブループリントの名前に、COMPOSE-TYPE は、出力イメージタイプに置き換えます。

Compose の一覧表示
# composer-cli compose list
Compose、およびそのステータスの一覧表示
# composer-cli compose status
実行中の Compose のキャンセル
# composer-cli compose cancel COMPOSE-UUID
完了した Compose の削除
# composer-cli compose delete COMPOSE-UUID
Compose の詳細情報の表示
# composer-cli compose info COMPOSE-UUID
Compose のイメージファイルのダウンロード
# composer-cli compose image COMPOSE-UUID
サブコマンドとオプションをもっと見る
# composer-cli help

関連情報

  • composer-cli(1) man ページ

4.6. Image Builder のブループリント形式

Image Builder のブループリントは、TOML 形式のプレーンテキストとしてユーザーに表示されます。

一般的なブループリントファイルの要素には、次のものが含まれます。

ブループリントのメタデータ
name = "BLUEPRINT-NAME"
description = "LONG FORM DESCRIPTION TEXT"
version = "VERSION"

BLUEPRINT-NAME および LONG FORM DESCRIPTION TEXT フィールドは、ブループリントの名前と説明です。

VERSION は、セマンティックバージョニング スキームに従ったバージョン番号です。

この部分は、ブループリントファイル全体に対して 1 回だけ存在します。

modules エントリーには、イメージにインストールされるパッケージの名前とバージョンが一覧表示されます。

group エントリーは、イメージにインストールするパッケージのグループを説明します。グループは、次のパッケージカテゴリーを使用します。

  • 必須
  • デフォルト
  • オプション

    ブループリントは、必須パッケージとデフォルトパッケージをインストールします。オプションパッケージを選択するメカニズムはありません。

イメージに追加するグループ
[[groups]]
name = "group-name"

group-name は、anaconda-toolswidgetwheel または users などのグループの名前です。

イメージに追加するパッケージ
[[packages]]
name = "package-name"
version = "package-version"

package-name は、httpdgdb-doc、または coreutils などのパッケージの名前です。

package-version は使用するバージョンです。このフィールドは、dnf バージョンの指定に対応します。

  • 特定のバージョンについては、8.7.0 などの正確なバージョン番号を使用してください。
  • 利用可能な最新バージョンを指定する場合は、アスタリスク (*) を使用します。
  • 最新のマイナーバージョンの場合は、8.* などの形式を使用します。

追加するすべてのパッケージにこのブロックを繰り返します。

注記

現在、Image Builder ツールのパッケージとモジュールの間に違いはありません。どちらも RPM パッケージの依存関係として扱われます。

4.7. サポートされているイメージのカスタマイズ

ブループリントに追加の RPM パッケージを追加するか、サービスを有効にするか、カーネルコマンドラインパラメーターをカスタマイズすることで、イメージをカスタマイズできます。ブループリント内でいくつかのイメージのカスタマイズを使用できます。これらのオプションを利用するには、最初にブループリントでカスタマイズを設定し、それを Image Builder にインポート (プッシュ) する必要があります。

注記

Web コンソールで Image Builder を使用する場合、これらのカスタマイズはサポートされません。

パッケージグループの選択
[[packages]]
name = "package_group_name"

"package_group_name" は、パッケージグループの名前に置き換えます。たとえば、"@server with gui" です。

イメージのホスト名の設定
[customizations]
hostname = "baseimage"
作成されるシステムイメージに対するユーザー指定
[[customizations.user]]th
name = "USER-NAME"
description = "USER-DESCRIPTION"
password = "PASSWORD-HASH"
key = "PUBLIC-SSH-KEY"
home = "/home/USER-NAME/"
shell = "/usr/bin/bash"
groups = ["users", "wheel"]
uid = NUMBER
gid = NUMBER

GID はオプションであり、イメージに既に存在している必要があります。必要に応じて、パッケージで作成するか、ブループリントで customizations.group エントリーを使用して GID を作成します。

重要

password hash を生成するには、システムに python3 をインストールする必要があります。

# yum install python3

PASSWORD-HASH は、実際の password hash に置き換えます。password hash を生成するには、次のようなコマンドを使用します。

$ python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'

PUBLIC-SSH-KEY を、実際の公開鍵に置き換えます。

その他のプレースホルダーを、適切な値に置き換えます。

name を入力する必要があります。不要な行は省略できます。

追加するすべてのユーザーにこのブロックを繰り返します。

作成されるシステムイメージに対するグループ指定
[[customizations.group]]
name = "GROUP-NAME"
gid = NUMBER

追加するすべてのグループにこのブロックを繰り返します。

既存ユーザーの SSH 鍵を設定します。
[[customizations.sshkey]]
user = "root"
key = "PUBLIC-SSH-KEY"
注記

既存のユーザーの SSH キーの設定のカスタマイズは、既存ユーザーにのみ適用されます。ユーザーの作成と SSH キーの設定は、システムイメージのカスタマイズに関するユーザー仕様 を参照してください。

デフォルトにカーネルの起動パラメーターオプションを追加
[customizations.kernel]
append = "KERNEL-OPTION"
デフォルトでは、Image Builder はデフォルトのカーネルをイメージにビルドします。ただし、ブループリントで次の設定を使用してカーネルをカスタマイズできます
[customizations.kernel]
name = "KERNEL-rt"
イメージで使用するカーネル名を定義
[customizations.kernel.name]
name = "KERNEL-NAME"
作成されたシステムイメージにタイムゾーンおよび Network Time Protocol (NTP) サーバーを設定
[customizations.timezone]
timezone = "TIMEZONE"
ntpservers = "NTP_SERVER"

タイムゾーンを設定しないと、システムはデフォルトとして Universal Time, Coordinated (UTC) を使用します。NTP サーバーの設定はオプションです。

作成されたシステムイメージのロケール設定
[customizations.locale]
languages = ["LANGUAGE"]
keyboard = "KEYBOARD"

言語とキーボードオプションの両方を設定する必要があります。他の多くの言語を追加できます。最初に追加する言語はプライマリー言語で、他の言語はセカンダリーになります。

作成されたシステムイメージのファイアウォールを設定
[customizations.firewall]
port = ["PORTS"]

リストを有効にするには、数値ポートまたは /etc/services ファイルの名前を使用できます。

ファイアウォールサービスのカスタマイズ

利用可能なファイアウォールサービスを確認します。

$ firewall-cmd --get-services

ブループリントの customizations.firewall.service セクションで、カスタマイズするファイアウォールサービスを指定します。

[customizations.firewall.services]
enabled = ["SERVICES"]
disabled = ["SERVICES"]

firewall.services にリストされているサービスは、/etc/services ファイルで使用可能なサービス名とは異なります。

注記

ファイアウォールサービスをカスタマイズしない場合は、ブループリントの [customizations.firewall] セクションおよび [customizations.firewall.services] セクションを省略します。

システムの起動時に有効にするサービスの設定
[customizations.services]
enabled = ["SERVICES"]
disabled = ["SERVICES"]

システムの起動時に有効にするサービスを制御することができます。一部のイメージタイプでは、イメージが正しく機能し、この設定を上書きできないようにするために、既にサービスが有効または無効になっています。Blueprint の [customizations.services] のカスタマイズはこれらのサービスを置き換えませんが、それらをイメージテンプレートにすでに存在しているサービスの一覧に追加します。

注記

ビルドが開始されるたびに、ホストシステムのリポジトリーのクローンが作成されます。大量の履歴を持つリポジトリーを参照すると、クローンに時間がかかり、大量のディスク領域が使用される場合があります。また、クローンは一時的なものであり、RPM パッケージの作成後にビルドによって削除されます。

カスタムファイルシステム設定を指定します。

ブループリントでカスタムファイルシステム設定を指定できるため、デフォルトのレイアウト設定ではなく、特定のディスクレイアウトでイメージを作成できます。ブループリントでデフォルト以外のレイアウト設定を使用すると、次の利点が得られます。

  • セキュリティーベンチマークコンプライアンス
  • ディスク外エラーに対する保護
  • 改良された性能
  • 既存の設定との一貫性

    ブループリントでファイルシステム設定をカスタマイズするには:

    [[customizations.filesystem]]
    mountpoint = "MOUNTPOINT"
    size = MINIMUM-PARTITION-SIZE

    ブループリントは、次の mountpoints とそのサブディレクトリーをサポートしています。

    • / - ルートマウントポイント
    • /var
    • /home
    • /opt
    • /srv/
    • /usr
    • /app
    • /data
    • /boot - RHEL 8.7 および RHEL 9.1 以降でサポートされています。

      注記

      マウントポイントのカスタマイズは、CLI を使用することで、RHEL 8.5 および RHEL 9.0 ディストリビューション以降でのみサポートされます。以前のディストリビューションでは、root パーティションをマウントポイントとして指定し、size 引数をイメージ size のエイリアスとして指定することしかできません。

      カスタマイズされたイメージに複数のパーティションがある場合、LVM でカスタマイズされたファイルシステムパーティションを使用してイメージを作成し、実行時にそれらのパーティションのサイズを変更できます。これを行うには、ブループリントでカスタマイズされたファイルシステム設定を指定して、目的のディスクレイアウトでイメージを作成します。デフォルトのファイルシステムレイアウトは変更されません。ファイルシステムをカスタマイズせずにプレーンイメージを使用すると、ルートパーティションは cloud-init によってサイズ変更されます。

      注記

      8.6 以降、osbuild-composer-46.1-1.el8 RPM 以降のバージョンでは、物理パーティションは利用できなくなり、ファイルシステムのカスタマイズで論理ボリュームが作成されます。

      ブループリントは、ファイルシステムのカスタマイズを LVM パーティションに自動的に変換します。

      MINIMUM-PARTITION-SIZE 値には、デフォルトのサイズ形式はありません。ブループリントのカスタマイズでは、kB から TB、および KiB から TiB の値と単位がサポートされています。たとえば、マウントポイントのサイズをバイト単位で定義できます。

      [[customizations.filesystem]]
      mountpoint = "/var"
      size = 1073741824

      単位を使用してマウントポイントのサイズを定義することもできます。

      注記

      マウントポイントのサイズは、RHEL 8.6 および RHEL 9.0 ディストリビューション以降に提供されているパッケージバージョンのユニットを使用してのみ定義できます。

      以下に例を示します。

      [[customizations.filesystem]]
      mountpoint = "/opt"
      size = "20 GiB"
      
      or
      
      [[customizations.filesystem]]
      mountpoint = "/boot"
      size = "1 GiB"

4.8. Image Builder によってインストールされるパッケージ

Image Builder を使用してシステムイメージを作成すると、システムはデフォルトでベースパッケージのセットをインストールします。パッケージのベースリストは、comps core グループのメンバーです。デフォルトでは、Image Builder は core yum グループを使用します。

表4.1 イメージタイプの作成をサポートするデフォルトパッケージ

イメージタイプデフォルトパッケージ

ami

checkpolicy、chrony、cloud-init、cloud-utils-growpart、@Core、dhcp-client、gdisk、insights-client、kernel、langpacks-en、net-tools、NetworkManager、redhat-release、redhat-release-eula、rng-tools、rsync、selinux-policy-targeted、tar、yum-utils

openstack

@core、langpacks-en

qcow2

@core, chrony, dnf, kernel, yum, nfs-utils, dnf-utils, cloud-init, python3-jsonschema, qemu-guest-agent, cloud-utils-growpart, dracut-norescue, tar, tcpdump, rsync, dnf-plugin-spacewalk, rhn-client-tools, rhnlib, rhnsd, rhn-setup, NetworkManager, dhcp-client, cockpit-ws, cockpit-system, subscription-manager-cockpit, redhat-release, redhat-release-eula, rng-tools, insights-client

tar

policycoreutils、selinux-policy-targeted

vhd

@core、langpacks-en

vmdk

@core、chrony、cloud-init、firewalld、langpacks-en、open-vm-tools、selinux-policy-targeted

edge-commit

attr、audit、basesystem、bash、bash-completion、chrony、clevis、clevis-dracut、clevis-luks、container-selinux、coreutils、criu、cryptsetup、curl、dnsmasq、dosfstools、dracut-config-generic、dracut-network、e2fsprogs、firewalld、fuse-overlayfs、fwupd、glibc、glibc-minimal-langpack、gnupg2、greenboot、gzip、hostname、ima-evm-utils、iproute、iptables、iputils、keyutils、less、lvm2、NetworkManager、NetworkManager-wif、NetworkManager-wwan、nss-altfiles、openssh-clients、openssh-server、passwd、pinentry、platform-python、podman、policycoreutils、policycoreutils-python-utils、polkit、procps-ng、redhat-release、rootfiles、rpm、rpm-ostree、rsync、selinux-policy-targeted、setools-console、setup、shadow-utils、shadow-utils、skopeo、slirp4netns、sudo、systemd、tar、tmux、traceroute、usbguard、util-linux、vim-minimal、wpa_supplicant、xz

edge-container

dnf、dosfstools、e2fsprogs、glibc、lorax-templates-generic、lorax-templates-rhel、lvm2、policycoreutils、python36、python3-iniparse、qemu-img、selinux-policy-targeted、systemd、tar、xfsprogs、xz

edge-installer

aajohan-comfortaa-fonts、abattis-cantarell-fonts、alsa-firmware、alsa-tools-firmware、anaconda、anaconda-install-env-deps、anaconda-widgets、audit、bind-utils、bitmap-fangsongti-fonts、bzip2、cryptsetup、dbus-x11、dejavu-sans-fonts、dejavu-sans-mono-fonts、device-mapper-persistent-data、dnf、dump、ethtool、fcoe-utils、ftp、gdb-gdbserver、gdisk、gfs2-utils、glibc-all-langpacks、google-noto-sans-cjk-ttc-fonts、gsettings-desktop-schemas、hdparm、hexedit、initscripts、ipmitool、iwl3945-firmware、iwl4965-firmware、iwl6000g2a-firmware、iwl6000g2b-firmware、jomolhari-fonts、kacst-farsi-fonts、kacst-qurn-fonts、kbd、kbd-misc、kdump-anaconda-addon、khmeros-base-fonts、libblockdev-lvm-dbus、libertas-sd8686-firmware、libertas-sd8787-firmware、libertas-usb8388-firmware、libertas-usb8388-olpc-firmware、libibverbs、libreport-plugin-bugzilla、libreport-plugin-reportuploader、libreport-rhel-anaconda-bugzilla、librsvg2、linux-firmware、lklug-fonts、lldpad、lohit-assamese-fonts、lohit-bengali-fonts、lohit-devanagari-fonts、lohit-gujarati-fonts、lohit-gurmukhi-fonts、lohit-kannada-fonts、lohit-odia-fonts、lohit-tamil-fonts、lohit-telugu-fonts、lsof、madan-fonts、metacity、mtr、mt-st、net-tools、nmap-ncat、nm-connection-editor、nss-tools、openssh-server、oscap-anaconda-addon、pciutils、perl-interpreter、pigz、python3-pyatspi、rdma-core、redhat-release-eula、rpm-ostree、rsync、rsyslog、sg3_utils、sil-abyssinica-fonts、sil-padauk-fonts、sil-scheherazade-fonts、smartmontools、smc-meera-fonts、spice-vdagent、strace、system-storage-manager、thai-scalable-waree-fonts、tigervnc-server-minimal、tigervnc-server-module、udisks2、udisks2-iscsi、usbutils、vim-minimal、volume_key、wget、xfsdump、xorg-x11-drivers、xorg-x11-fonts-misc、xorg-x11-server-utils、xorg-x11-server-Xorg、xorg-x11-xauth

edge-simplified-installer

attr、basesystem、binutils、bsdtar、clevis-dracut、clevis-luks、cloud-utils-growpart、coreos-installer、coreos-installer-dracut、coreutils、device-mapper-multipath、dnsmasq、dosfstools、dracut-live、e2fsprogs、fcoe-utils、fdo-init、gzip、ima-evm-utils、iproute、iptables、iputils、iscsi-initiator-utils、keyutils、lldpad、lvm2、passwd、policycoreutils、policycoreutils-python-utils、procps-ng、rootfiles、setools-console、sudo、traceroute、util-linux

image-installer

anaconda-dracut、curl、dracut-config-generic、dracut-network、hostname、iwl100-firmware、iwl1000-firmware、iwl105-firmware、iwl135-firmware、iwl2000-firmware、iwl2030-firmware、iwl3160-firmware、iwl5000-firmware、iwl5150-firmware、iwl6000-firmware、iwl6050-firmware、iwl7260-firmware、kernel、less、nfs-utils、openssh-clients、ostree、plymouth、prefixdevname、rng-tools、rpcbind、selinux-policy-targeted、systemd、tar、xfsprogs、xz

edge-raw-image

dnf、dosfstools、e2fsprogs、glibc、lorax-templates-generic、lorax-templates-rhel、lvm2、policycoreutils、python36、python3-iniparse、qemu-img、selinux-policy-targeted、systemd、tar、xfsprogs、xz

gce

@core、langpacks-en、acpid、dhcp-client、dnf-automatic、net-tools、python3、rng-tools、tar、vim

注記

ブループリントにコンポーネントを追加する場合は、追加したコンポーネント内のパッケージが他のパッケージコンポーネントと競合しないようにしてください。そうしないと、システムは依存関係を解決できず、カスタマイズされたイメージの作成に失敗します。次のコマンドを実行して、パッケージ間に競合がないかどうかを確認できます。

+

# composer-cli blueprints depsolve BLUEPRINT-NAME

4.9. カスタムイメージで有効なサービス

イメージビルドを使用してカスタムイメージを設定する場合、イメージが使用する既定のサービスは次のように決定されます。

  • osbuild-composer ユーティリティーを使用する RHEL リリース
  • イメージの種類

たとえば、.ami イメージタイプは、デフォルトで sshdchronyd、および cloud-init サービスを有効にします。これらのサービスが有効になっていない場合、カスタムイメージは起動しません。

表4.2 イメージタイプの作成をサポートするために有効になっているサービス

イメージタイプデフォルトで有効化されているサービス

ami

sshd, cloud-init, cloud-init-local, cloud-config, cloud-final

openstack

sshd, cloud-init, cloud-init-local, cloud-config, cloud-final

qcow2

cloud-init

rhel-edge-commit

デフォルトでは、追加のサービスは有効になりません。

tar

デフォルトでは、追加のサービスは有効になりません。

vhd

sshd, chronyd, waagent, cloud-init, cloud-init-local, cloud-config, cloud-final

vmdk

sshd、chronyd、vmtoolsd、cloud-init

注記: システムの起動時に有効にするサービスをカスタマイズできます。ただし、カスタマイズは、前述のイメージタイプに対してデフォルトで有効になっているサービスを上書きしません。

第5章 Image Builder Web コンソールインターフェイスを使用したシステムイメージの作成

Image Builder は、カスタムのシステムイメージを作成するツールです。Image Builder を制御してカスタムシステムイメージを作成する場合は、Web コンソールインターフェイスを使用できます。ただし、コマンドラインインターフェイス の方が提供している機能が多いため、コマンドラインインターフェイスを使用することが推奨されます。

5.1. RHEL Web コンソールでの Image Builder GUI へのアクセス

RHEL Web コンソール用の cockpit-composer プラグインを使用すると、グラフィカルインターフェイスを使用してイメージビルダーのブループリントと設定を管理できます。Image Builder を制御するための推奨される方法は、コマンドラインインターフェイスです。

前提条件

  • システムへの root アクセス権限がある。
  • Image Builder をインストールしました。

手順

  1. Image Builder がインストールされている Web ブラウザーで https://localhost:9090/ を開きます。

    Image Builder にリモートでアクセスする方法の詳細は、Managing systems using the RHEL web console を参照してください。

  2. root ユーザーとして Web コンソールにログインします。
  3. Image Builder コントロールを表示するには、ウィンドウの左上にある Image Builder アイコンをクリックします。

    Image Builder ビューが開き、既存のブループリントの一覧が表示されます。

5.2. Web コンソールインターフェイスで Image Builder のブループリントの作成

ブループリントの作成は、カスタマイズされたシステムイメージを説明する前に必要な手順です。

前提条件

  • ブラウザーの Web コンソールから Image Builder アプリを開きました。xref:rhel-8-web-console_creating-system-images-with-composer-web-console-interface での composer-gui へのアクセスを参照してください。

手順

  1. 右上隅にある Create Blueprint をクリックします。

    ブループリントの名前と説明のフィールドを含むダイアログウィザードが開きます。

  2. ブループリントの名前と、必要に応じてその説明を入力します。
  3. Create をクリックします。

Image Builder ビューが開き、既存のブループリントの一覧が表示されます。

5.3. Web コンソールインターフェイスで Image Builder を使用してシステムイメージを作成する

次の手順を実行して、ブループリントからシステムイメージを作成できます。

前提条件

  • ブラウザーの Web コンソールから Image Builder アプリを開きました。
  • ブループリントを作成しました。

手順

  1. ブループリントに Back to blueprints をクリックして、ブループリントテーブルを表示します。
  2. ブループリントテーブルで、イメージを構築するブループリントを見つけます。

    1. 必要に応じて、検索ボックスを使用してブループリントを見つけることができます。ブループリント名を入力します。
  3. 選択したブループリントの右側で、Create Image をクリックします。Create image ダイアログウィザードが開きます。
  4. Image output ページで、次の手順を実行します。

    1. イメージ出力タイプ リストから、目的のイメージタイプを選択します。

      1. 一部のイメージは、Amazon WebserviceOracle Cloud Infrastructure などのターゲットクラウド環境にアップロードできます。そのためには、ターゲットクラウドにアップロード ボックスをオンにします。
      2. 次のページで、クラウド環境の認証情報を追加するよう求められます。
  5. Image Size フィールドから、イメージサイズを入力します。最小サイズはイメージの種類によって異なります。Next をクリックします。
  6. Targeted_Cloud にアップロード ページで、次の手順を実行します。

    注記: このページは、イメージをクラウド環境にアップロードするボックスをチェックしていない場合は表示されません。

    1. 認証 ページで、ターゲットクラウドアカウント ID に関連する情報を入力し、次へ をクリックします。
    2. 宛先ページ で、ターゲットクラウドアカウントの種類に関連する情報を入力し、次へ をクリックします。
  7. カスタマイズ ページで、次の手順を完了します。

    1. システム ページで、ホスト名を入力します。ホスト名を入力しない場合、オペレーティングシステムがシステムのホスト名を決定します。
    2. ユーザー ページで、ユーザーの 追加 をクリックします。

      1. 必須: ユーザー名を入力します。
      2. パスワードを入力します。
      3. SSH キーを入力します。
      4. ユーザーをサーバー管理者にする場合は、チェックボックスをオンにします。Next をクリックします。
  8. パッケージ ページで、次の手順を完了します。

    1. 使用可能なパッケージ 検索フィールドで、システムイメージに追加するパッケージ名を入力します。

      注記

      パッケージの検索が完了するまでに時間がかかる場合があります。

    2. > 矢印をクリックして、選択したパッケージを追加します。Next をクリックします。
  9. 確認 ページで、イメージの作成に関する詳細を確認します。Save Blueprint をクリックして、ブループリントに追加したカスタマイズを保存します。Create image をクリックします。

    イメージのビルドが開始され、完了するまでに最大 20 分かかります。

第6章 Image Builder を使用したブート ISO インストーラーイメージの作成

Image Builder を使用して、起動可能な ISO インストーラーイメージを作成できます。これらのイメージは、ルートファイルシステムを持つ .tar ファイルで設定されます。起動可能な ISO イメージを使って、ファイルシステムをベアメタルサーバーにインストールすることができます。

Image Builder は、ルートファイルシステムを含むブート ISO を作成するマニフェストを作成します。ISO イメージを作成するには、イメージタイプ image-installer を選択します。Image Builder は、次の内容の .tar ファイルを構築します。

  • 標準の Anaconda インストーラー ISO
  • 組み込みの RHEL システム tar ファイル
  • 最小限のデフォルト要件でコミットをインストールするデフォルトのキックスタートファイル

作成されたインストーラー ISO イメージには、ベアメタルサーバーに直接インストールできる設定済みのシステムイメージが含まれています。

6.1. コマンドラインインターフェイスで Image Builder を使用してブート ISO インストーラーイメージを作成する

Image Builder コマンドラインインターフェイスを使用して、カスタマイズされたブート ISO インストーラーイメージを作成できます。

前提条件

  • ユーザーを含むイメージのブループリントを作成し、Image Builder にプッシュしている。Blueprint customization for users を参照してください。

手順

  1. ISO イメージを作成します。

    # composer-cli compose start BLUEPRINT-NAME image-installer
    • BLUEPRINT-NAME は作成したブループリントの名前です。
    • image-installer はイメージタイプです。

      Compose プロセスはバックグラウンドで開始し、Compose の UUID が表示されます。

  2. Compose が完成するまで待ちます。これには数分かかる場合があります。

    Compose のステータスを確認するには、以下のコマンドを実行します。

    # composer-cli compose status

    Compose が完了すると、ステータスが FINISHED となります。リスト内の Compose をその UUID で識別します。

  3. 設定が完了したら、作成されたイメージファイルをダウンロードします。

    # composer-cli compose image UUID

    UUID は、前の手順で取得した UUID 値に置き換えます。

    これにより、Image Builder は ISO インストーラーイメージが含まれる .tar ファイルをビルドします。

検証

  1. イメージファイルをダウンロードしたディレクトリーに移動します。
  2. ダウンロードした .tar イメージを見つけます。
  3. .tar コンテンツを展開します。

    $ tar -xf content.tar

作成した ISO イメージファイルをハードディスク上で使用したり、HTTP ブートや USB インストールなどで仮想マシンを起動したりできます。

6.2. GUI で Image Builder を使用してブート ISO インストーラーイメージを作成する

Image Builder GUI を使用して、カスタマイズされたブート ISO インストーラーイメージを構築できます。

前提条件

手順

  1. ブラウザーで RHEL Web コンソールの Image Builder インターフェイスを開きます。コマンドラインインターフェイスを使用した Image Builder ブループリントの作成 を参照してください。
  2. イメージの構築に使用するブループリントを見つけます。これを行うには、ブループリント名またはその一部を左上の検索ボックスに入力し、Enter をクリックします。
  3. ブループリントの右側で、対応する Create Image ボタンをクリックします。

    Create image ダイアログウィザードが開きます。

  4. Create image ダイアログウィザードで:

    1. Image Type リストで、"RHEL Installer (.iso)" を選択します。
    2. Create をクリックします。

Image Builder は、RHEL .iso イメージの設定をキューに追加します。

注記

イメージのビルドプロセスが完了するまでに数分かかります。

プロセスが完了すると、Image build complete のステータスが表示されます。Image Builder は ISO イメージを作成します。

検証

イメージが正常に作成されたら、ダウンロードできます。

  1. Download をクリックして、RHEL インストーラー (.iso) イメージをシステムに保存します。
  2. RHEL インストーラー (.iso) イメージをダウンロードしたフォルダーに移動します。
  3. ダウンロードした .tar イメージを見つけます。
  4. RHEL インストーラー (.iso) イメージコンテンツを展開します。

    $ tar -xf content.tar

生成された ISO イメージファイルを、ハードディスクで使用したり仮想マシンの起動に使用したりできます (例: HTTP ブートまたは USB インストール)。

6.3. ベアメタルシステムへの Image Builder ISO イメージのインストール

Image Builder を使用して作成した起動可能な ISO イメージをベアメタルシステムにインストールします。

前提条件

手順

  1. dd ツールを使用して、ブート可能な ISO イメージを USB ドライブに直接書き込みます。以下に例を示します。

    dd if=installer.iso of=/dev/sdX

    ここで、installer.iso は ISO イメージファイル名、/dev/sdX は USB フラッシュドライブのデバイスパスです。

  2. 起動するコンピューターの USB ポートにフラッシュドライブを挿入します。
  3. USB フラッシュドライブから ISO イメージを起動します。

    インストール環境が開始したら、デフォルトの Red Hat Enterprise Linux インストールと同様に、インストールの手動完了が必要になることがあります。

第7章 Image Builder OpenSCAP 統合による事前硬化イメージの作成

オンプレミスの Image Builder は、事前に強化された RHEL イメージを生成するための OpenSCAP 統合をサポートしています。OpenSCAP と統合されたオンプレミスの Image Builder を使用すると、事前に強化された RHEL イメージを作成できます。ブループリントをセットアップし、事前定義されたセキュリティープロファイルのセットから選択し、一連のパッケージまたはアドオンファイルを追加して、環境により適した、選択したプラットフォームにデプロイする準備が整ったカスタマイズされた RHEL イメージを構築できます。

Red Hat は、現在のデプロイメントガイドラインを満たすことができるように、システムを構築するときに選択できるセキュリティー強化プロファイルの定期的に更新されたバージョンを提供します。

7.1. キックスタートイメージと事前硬化イメージの違い

キックスタートファイルを使用した従来のイメージ作成では、インストールする必要があるパッケージを選択し、システムが脆弱性の影響を受けないようにする必要があります。Image Builder OpenSCAP 統合により、セキュリティーが強化されたイメージを構築できます。イメージビルドプロセス中、OSBuild oscap remediation stage は、ファイルシステムツリーの chroot で OpenSCAP ツールを実行します。OpenSCAP ツールは、選択したプロファイルの標準評価を実行し、修復をイメージに適用します。これにより、稼働中のシステムで修復を実行する場合と比較すると、より完全に強化されたイメージを構築できます。

7.2. OpenSCAP ブループリントのカスタマイズ

ブループリントカスタマイズの OpenSCAP サポートにより、ブループリントを作成し、それらを使用して独自の事前に強化されたイメージを構築できます。事前に強化されたイメージを作成するには、マウントポイントをカスタマイズし、選択したセキュリティープロファイルに従ってファイルシステムレイアウトを設定します。イメージのビルド中に、OpenSCAP は初回起動修復を適用します。

OpenSCAP プロファイルを選択すると、OpenSCAP ブループリントのカスタマイズにより、選択したプロファイルを使用したイメージのビルド中に修復をトリガーするようにイメージが設定されます。

イメージブループリントで OpenSCAP ブループリントのカスタマイズを使用するには、次の情報を入力します。

  • datastream 修復手順へのデータストリームパス。/usr/share/xml/scap/ssg/content/ ディレクトリーにあります。
  • 必要なセキュリティープロファイルの profile_idprofile_id フィールドは、長い形式と短い形式の両方を受け入れます (例: cis または xccdf_org.ssgproject.content_profile_cis)。詳細については、RHEL 8 でサポートされている SCAP Security Guide のプロファイル を参照してください。

    以下は、OpenSCAP のカスタマイズ例を使用したブループリントです。

    [customizations]
    [customizations.openscap]
    datastream = "/usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml"
    profile_id = "xccdf_org.ssgproject.content_profile_cis"

    最も一般的な SCAP ファイルタイプは、SCAP ソースデータストリームです。scap-security-guide パッケージからの SCAP ソースデータストリームの詳細を表示するには、次のコマンドを入力します。

    $ oscap info /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml

    oscap ツールはイメージツリーで実行され、任意のパスにマウントされているファイルシステムのオフラインスキャンを実行します。Docker 以外の形式のコンテナーなど、oscap-docker または oscap-vm でサポートされていないカスタムオブジェクトのスキャンに使用できます。oscap-chroot は、oscap ツールの使用方法とオプションを模倣しています。

    Image Builder は、ブループリントのカスタマイズに基づいて、osbuild ステージに必要な設定を生成します。さらに、Image Builder は 2 つのパッケージをイメージに追加します。

  • openscap-scanner - OpenSCAP ツール。
  • scap-security-guide - 修復手順を含むパッケージ。

    注記

    このパッケージはデフォルトでイメージにインストールされるため、修復ステージではデータストリームに scap-security-guide パッケージを使用します。別のデータストリームを使用する場合は、必要なパッケージをブループリントに追加し、oscap 設定でデータストリームへのパスを指定します。

7.3. Image Builder を使用した事前硬化イメージの作成

OpenSCAP と Image Builder の統合により、事前に強化されたイメージを作成できます。

手順

  1. 次の内容で、TOML 形式のブループリントを作成します。

    name = "blueprint_name"
    description = "blueprint_description"
    version = "0.0.1"
    modules = []
    groups = []
     distro = ""
    
    [customizations]
    [[customizations.user]]
    name = "scap-security-guide"
    description = "Admin account"
    password = secure_pass
    key = ssh-key
    home = "home/user"
    group = ["wheel"]
    
    
    [[customizations.filesystem]]
    mountpoint = "/tmp"
    size = 13107200
    [customizations.openscap]
    datastream = "/usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml "
    profile_id = "cis"
  2. OpenSCAP イメージのビルドを開始します。

    # composer-cli compose start blueprint_name qcow2

    blueprint_name はブループリント名です。

    イメージビルドの準備ができたら、デプロイメントで事前に強化されたイメージを使用できます。仮想マシンの作成 を参照してください。

検証

事前に強化されたイメージを VM にデプロイした後、設定コンプライアンススキャンを実行して、イメージが選択したセキュリティープロファイルに適合していることを確認できます。

重要

設定コンプライアンススキャンを実行しても、システムが準拠しているとは限りません。詳細については、設定コンプライアンススキャン を参照してください。

  1. SSH を使用してイメージに接続します。
  2. oscap スキャナーを実行します。

    # scap-workbench
  3. スキャンするシステムのバージョンを選択します。コンテンツの読み込みを クリックします。
  4. スキャンするプロファイルを選択し、スキャン をクリックします。OpenSCAP は、システムのすべての要件をチェックします。
  5. スキャンが完了したら、レポートを表示 をクリックします。

    この結果から、システムが安全であることがわかります。

第8章 Image Builder を使用した KVM ゲストイメージの準備とデプロイメント

Red Hat Virtualization (RHV) で使用する専用のイメージを作成するには、イメージビルダーを使用して KVM ゲストイメージを作成します。ただし、KVM ゲストイメージは、RHV の rhel-guest-image サポートによってのみサポートされることに注意してください。

カスタマイズされた KVM ゲストイメージの操作には、次の高レベルの手順が含まれます。

  1. Image Builder を使用して KVM ゲストイメージ .qcow2 イメージを作成します。
  2. KVM ゲストイメージから仮想マシンを作成します。

8.1. Image Builder を使用したカスタマイズされた KVM ゲストイメージの作成

Image Builder を使用して、カスタマイズされた .qcow2 KVM ゲストイメージを作成できます。

前提条件

手順

  1. 作成したブループリント名をクリックします。
  2. イメージ タブを選択します。
  3. イメージの作成 をクリックして、カスタマイズしたイメージを作成します。ポップアップウィンドウが開きます。
  4. Type ドロップダウンメニューリストから、QEMU Image (.qcow2) を選択します。
  5. イメージをインスタンス化する場合のサイズを設定し、作成 をクリックします。
  6. ウィンドウの右上にある小さなポップアップに、イメージの作成がキューに追加されたことが表示されます。イメージ作成プロセスが完了すると、Image build complete のステータスが表示されます。

検証

  1. ブレッドクラムアイコンをクリックして、ダウンロード オプションを選択します。Image Builder は、KVM ゲストイメージ .qcow2 ファイルをデフォルトのダウンロード場所にダウンロードします。

8.2. KVM ゲストイメージからの仮想マシンの作成

Image Builder を使用すると、.qcow2 イメージを構築し、KVM ゲストイメージを使用して VM を作成できます。Image Builder を使用して作成した KVM ゲストイメージでは、cloud-init がすでにインストールされ、有効になっています。

前提条件

  • Image Builder を使用して .qcow2 イメージを作成している。Web コンソールインターフェイスで Image Builder のブループリントの作成 を参照してください。
  • qemu-kvm パッケージがシステムにインストールされている。/dev/kvm フォルダーがシステムで利用できることを確認できます。
  • システムに libvirt および virt-install パッケージがインストールされている。
  • genisoimage ユーティリティーがシステムにインストールされている。

手順

  1. Image Builder を使用して作成した KVM ゲストイメージを /var/lib/libvirt/images ディレクトリーに移動します。
  2. ディレクトリー (cloudinitiso など) を作成し、新規に作成したそのディレクトリーに移動します。

    $ mkdir cloudinitiso
    $ cd cloudinitiso
  3. meta-data という名前のファイルを作成します。このファイルに以下の情報を追加します。

    instance-id: citest
    local-hostname: vmname
  4. user-data という名前のファイルを作成します。以下の情報をファイルに追加します。

    #cloud-config
    user: admin
    password: password
    chpasswd: {expire: False}
    ssh_pwauth: True
    ssh_authorized_keys:
      - ssh-rsa AAA...fhHQ== your.email@example.com

    ここで、ssh_authorized_keys は SSH 公開鍵です。~/.ssh/id_rsa.pub で SSH 公開鍵を確認できます。

  5. genisoimage コマンドを使用して、user-data ファイルおよび meta-data ファイルを含む ISO イメージを作成します。

    # genisoimage -output cloud-init.iso -volid cidata -joliet -rock user-data meta-data
    
    I: -input-charset not specified, using utf-8 (detected in locale settings)
    Total translation table size: 0
    Total rockridge attributes bytes: 331
    Total directory bytes: 0
    Path table size(bytes): 10
    Max brk space used 0
    183 extents written (0 MB)
  6. virt-install コマンドを使用して、KVM ゲストイメージから新しい仮想マシンを作成します。仮想マシンイメージへのアタッチメントとして、手順 4 で作成した ISO イメージを含めます。

    # virt-install \
        --memory 4096 \
        --vcpus 4 \
        --name myvm \
        --disk rhel-8-x86_64-kvm.qcow2,device=disk,bus=virtio,format=qcow2 \
        --disk cloud-init.iso,device=cdrom \
        --os-variant rhel 8 \
        --virt-type kvm \
        --graphics none \
        --import

    詳細は以下のようになります。

    • --graphics none - ヘッドレス RHEL 8 仮想マシンであることを意味します。
    • --vcpus 4 - 4 つの仮想 CPU を使用することを意味します。
    • --memory 4096 - 4096 MB のメモリーを使用することを意味します。
  7. 仮想マシンのインストールが起動します。

    Starting install...
    Connected to domain mytestcivm
    ...
    [  OK  ] Started Execute cloud user/final scripts.
    [  OK  ] Reached target Cloud-init target.
    
    Red Hat Enterprise Linux 8 (Ootpa)
    Kernel 4.18.0-221.el8.x86_64 on an x86_64

検証

起動が完了すると、VM にテキストログインインターフェイスが表示されます。VM にログインします。

  1. ユーザー名として admin と入力し、Enter を押します。
  2. password としてパスワードを入力し、Enter を押します。

    ログイン認証が完了すると、CLI を使用して仮想マシンにアクセスできます。

第9章 コンテナーをレジストリーにプッシュしてイメージに埋め込む

ブループリントでコンテナーのカスタマイズがサポートされているため、コンテナーを作成して、作成したイメージに直接埋め込むことができます。

9.1. コンテナーをイメージに埋め込むブループリントのカスタマイズ

registry.access.redhat.com レジストリーからコンテナーを埋め込むには、ブループリントにコンテナーのカスタマイズを追加する必要があります。以下に例を示します。

[[containers]]
source = "registry.access.redhat.com/ubi9/ubi:latest"
name =  "local-name"
tls-verify = true
  • source - 必須フィールド。これは、レジストリーにあるコンテナーイメージへの参照です。この例では、registry.access.redhat.com レジストリーを使用します。タグのバージョンを指定できます。デフォルトのタグバージョンは latest です。
  • name - ローカルレジストリー内のコンテナーの名前。
  • tls-verify - オプションのブールフィールド。tls-verify ブールフィールドは、トランスポート層のセキュリティーを制御します。デフォルト値は true です。

    Image Builder は、イメージのビルド中にコンテナーをプルし、コンテナーをイメージに格納します。デフォルトのローカルコンテナーストレージの場所は、イメージの種類によって異なります。そのため、Podman などのすべてのサポート container-tools がそれを使用できます。組み込みコンテナーは開始されません。保護されたコンテナーリソースにアクセスするには、containers-auth.json ファイルを使用できます。

9.2. コンテナーレジストリーの認証情報

osbuild-worker サービスは、コンテナーレジストリーとの通信を担当します。これを有効にするには、/etc/osbuild-worker/osbuild-worker.toml 設定ファイルをセットアップします。

注記

/etc/osbuild-worker/osbuild-worker.toml 設定ファイルを設定したら、osbuild-worker サービスを再起動する必要があります。これは、osbuild-worker サービス開始の際に、/etc/osbuild-worker/osbuild-worker.toml 設定ファイルを 1 度のみ読み込むためです。

/etc/osbuild-worker/osbuild-worker.toml 設定ファイルには、保護されたリソースへのアクセスに使用される、containers-auth.json ファイルのパスを参照する文字列である auth_field_path エントリーを含む container セクションがあります。コンテナーレジストリーの認証情報は、コンテナーをイメージに埋め込むときに、コンテナーイメージをレジストリーからプルするためにのみ使用されます。

以下に例を示します。

[containers]
auth_file_path = "/etc/osbuild-worker/containers-auth.json"

9.3. コンテナーアーティファクトをコンテナーレジストリーに直接プッシュする

RHEL for Edge コンテナーイメージなどのコンテナーアーティファクトは、イメージビルダー CLI を使用して、ビルド後にコンテナーレジストリーに直接プッシュできます。そのためには、upload provider と、必要に応じて認証情報を設定する必要があります。その後、レジストリーとリポジトリーを引数として composer-cli に渡し、コンテナーイメージをビルドできます。イメージの準備ができたら、設定したコンテナーレジストリーで使用できます。

前提条件

  • quay.io レジストリー へのアクセス。この例では、ターゲットレジストリーとして quay.io コンテナーレジストリーを使用していますが、任意のコンテナーレジストリーを使用できます。

手順

  1. コンテナープロバイダーを選択するために、registry-config.toml ファイルをセットアップします。

    provider = "container_provider"
    
    [settings]
    tls_verify = false
    username = "admin"
    password = "your_password"
  2. ブループリントを .toml 形式で作成します。これは、ブループリントに nginx パッケージをインストールするコンテナーのブループリントです。

    name = "simple-container"
    description = "Simple RHEL container"
    version = "0.0.1"
    
    [[packages]]
    name = "nginx"
    version = "*"
  3. ブループリントをプッシュします。

    # composer-cli blueprints push blueprint.toml
  4. コンテナーイメージをビルドします。

    # composer-cli compose start simple-container container "quay.io:8080/osbuild/repository" registry-config.toml
    • simple-container - ブループリント名です。
    • コンテナー - イメージの種類です。
    • "quay.io:8080/osbuild/repository" - quay.io はターゲットレジストリー、osbuild は組織、repository はビルドが完了したときにコンテナーをプッシュする場所です。オプションで、tag を設定できます。:tag の値を設定しない場合、デフォルトで :latest タグが使用されます。

      注記

      カスタマイズされたパッケージを分解するため、コンテナーイメージのビルドには時間がかかります。

  5. イメージのビルドが完了すると、作成したコンテナーが quay.io で使用できるようになります。
  6. quay.io にアクセスします。をクリックして、Repository Tags をクリックします。

     You can see details about the container you created, such as:
    - last modified
    - image size
    - the `manifest ID`, that you can copy to the clipboard.
  7. manifest ID の値をコピーして、コンテナーを埋め込むイメージをビルドします。

関連情報

9.4. イメージのビルドとコンテナーのイメージへのプル

コンテナーイメージを作成したら、カスタマイズしたイメージをビルドし、コンテナーイメージをそこにプルできます。そのためには、ブループリントで コンテナーのカスタマイズ を指定し、最終的なイメージの コンテナー名 を指定する必要があります。ビルドプロセス中に、コンテナーイメージが取得され、ローカルの Podman コンテナーストレージに配置されます。

前提条件

  • コンテナーイメージを作成し、それをローカルの quay.io コンテナーレジストリーインスタンスにプッシュしました。
  • registry.access.redhat.com にアクセスできます。
  • コンテナー manifest ID を持っています。
  • qemu-kvm および qemu-img パッケージがインストールされている。インストールするには、次のコマンドを実行します。

    # yum install qemu-kvm qemu-img

手順

  1. qcow2 イメージを構築するためのブループリントを作成します。ブループリントには、 カスタマイズ。

    name = "image"
    description = "A qcow2 image with a container"
    version = "0.0.1"
    distro = "rhel-90"
    
    [[packages]]
    name = "podman"
    version = "*"
    
    [[containers]]
    source = "registry.access.redhat.com/ubi9:8080/osbuild/container/container-image@sha256:manifest-ID-from-Repository-tag: tag-version"
    name =  "source-name"
    tls-verify = true
  2. ブループリントをプッシュします。

    # composer-cli blueprints push blueprint-image.toml
  3. コンテナーイメージをビルドします。

    # composer-cli start compose image qcow2

    詳細は以下のようになります。

    • image はブループリントの名前です。
    • qcow2 はイメージタイプです。

      注記

      quay.io レジストリーでコンテナーをチェックするため、イメージのビルドに時間がかかります。

      イメージのビルドステータスが FINISHED になると、VM で作成した qcow2 イメージを使用できるようになります。

検証

  1. composer-cli から .qcow2 イメージをローカルファイルシステムにプルします。

    # composer-cli compose image COMPOSE-UUID
  2. VM で qcow2 イメージを起動します。KVM ゲストイメージからの仮想マシンの作成 を参照してください。
  3. qemu ウィザードが開きます。qcow2 イメージにログインします。

    1. ユーザー名とパスワードを入力します。これらは、customizations.user セクションの .qcow2 ブループリントで設定するか、起動時に cloud-init で作成したユーザー名とパスワードにすることができます。
  4. コンテナーイメージを実行し、コンテナー内でシェルプロンプトを開きます。

    # podman run -it registry.access.redhat.com/ubi9:8080/osbuild/repository /bin/bash/

    詳細は以下のようになります。

    • registry.access.redhat.com はターゲットレジストリー、osbuild は組織、repository はビルドの完了時にコンテナーをプッシュする場所です。
  5. ブループリントに追加したパッケージが利用可能であることを確認します。

    # type -a nginx

    出力には、nginx パッケージのパスが表示されます。

第10章 Image Builder を使用したクラウドイメージの準備と ppload

Image Builder は、さまざまなクラウドプラットフォームですぐに使用できるカスタムシステムイメージを作成できます。カスタマイズした RHEL システムイメージをクラウドで使用するには、各出力タイプを使用して Image Builder でシステムイメージを作成し、イメージをアップロードするようにシステムを設定し、クラウドアカウントへイメージをアップロードします。RHEL Web コンソールの Image Builder アプリケーションを介して、カスタマイズされたイメージクラウドをプッシュできます。これは、AWSAzure クラウドなど、サポートされているサービスプロバイダーのサブセットで利用できます。AWS Cloud AMI へのイメージのプッシュ および Azure クラウドへの VHD イメージのプッシュ を参照してください。

10.1. AWS AMI イメージのアップロードの準備

AWS AMI イメージをアップロードする前に、イメージをアップロードするためのシステムを設定する必要があります。

前提条件

手順

  1. Python 3 および pip ツールをインストールします。

    # yum install python3
    # yum install python3-pip
  2. pipAWS コマンドラインツール をインストールします。

    # pip3 install awscli
  3. 以下のコマンドを実行してプロファイルを設定します。ターミナルで、認証情報、リージョン、および出力形式を指定するように求められます。

    $ aws configure
    AWS Access Key ID [None]:
    AWS Secret Access Key [None]:
    Default region name [None]:
    Default output format [None]:
  4. バケット名を定義し、以下のコマンドを使用してバケットを作成します。

    $ BUCKET=bucketname
    $ aws s3 mb s3://$BUCKET

    bucketname は、バケット名に置き換えます。この名前は、グローバルで一意となるように指定する必要があります。上記で、バケットが作成されます。

  5. S3 バケットへのアクセス許可を付与するには、AWS Identity and Access Management (IAM) で vmimport S3 ロールを作成します (まだ作成していない場合)。

    $ printf '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }' > trust-policy.json
    $ printf '{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::%s", "arn:aws:s3:::%s/*" ] }, { "Effect":"Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*" } ] }' $BUCKET $BUCKET > role-policy.json
    $ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
    $ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json

10.2. CLI を使用して AMI イメージを AWS にアップロードする

Image Builder を使用して .ami イメージを構築し、CLI を使用してそれらを Amazon AWS Cloud サービスプロバイダーに直接プッシュできます。

前提条件

  • AWS IAM アカウントマネージャーに Access Key ID を設定している。
  • 書き込み可能な S3 バケット を準備している。
  • 定義済みの青写真があります。

手順

  1. テキストエディターを使用して、次の内容の設定ファイルを作成します。

    provider = "aws"
    
    [settings]
    accessKeyID = "AWS_ACCESS_KEY_ID"
    secretAccessKey = "AWS_SECRET_ACCESS_KEY"
    bucket = "AWS_BUCKET"
    region = "AWS_REGION"
    key = "IMAGE_KEY"

    フィールドの値を accessKeyIDsecretAccessKeybucket、および region の認証情報に置き換えます。IMAGE_KEY 値は、EC2 にアップロードされる VM イメージの名前です。

  2. ファイルを CONFIGURATION-FILE.toml として保存し、テキストエディターを閉じます。
  3. Compose を起動します。

    # composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE IMAGE_KEY CONFIGURATION-FILE.toml

    以下を置き換えます。

    • BLUEPRINT-NAME は作成したブループリントの名前です。
    • IMAGE-TYPEami イメージタイプ。
    • EC2 にアップロードする VM イメージの名前を含む IMAGE_KEY
    • クラウドプロバイダーの設定ファイルの名前を持つ CONFIGURATION-FILE.toml。

      注記

      カスタマイズイメージを送信するバケットの正しい IAM 設定が必要です。イメージをアップロードする前にバケットにポリシーを設定しておく必要があります。

  4. イメージビルドのステータスを確認し、AWS にアップロードします。

    # composer-cli compose status

    イメージのアップロードプロセスが完了すると、FINISHED ステータスが表示されます。

検証

イメージのアップロードが成功したことを確認するには、以下を行います。

  1. メニューで EC2 にアクセスし、AWS コンソールで正しいリージョンを選択します。イメージが正常にアップロードされたことを示すには、イメージが available ステータスになっている必要があります。
  2. ダッシュボードでイメージを選択し、Launch をクリックします。

10.3. イメージの AWS Cloud AMI へのプッシュ

作成した出力イメージを Amazon AWS Cloud AMI サービスプロバイダーに直接プッシュできます。

前提条件

手順

  1. ブループリント名 をクリックします。
  2. イメージ タブを選択します。
  3. イメージの作成 をクリックして、カスタマイズしたイメージを作成します。

    ポップアップウィンドウが開きます。

    1. Type ドロップダウンメニューから、Amazon Machine Image Disk (.ami) を選択します。
    2. Upload to AWS チェックボックスをチェックして、イメージを AWS Cloud にアップロードし、Next をクリックします。
    3. AWS へのアクセスを認証するには、対応するフィールドに AAWS access key ID および AWS secret access key と入力します。Next をクリックします。

      注記

      新規アクセスキー ID を作成する場合にのみ、AWS シークレットアクセスキーを表示できます。秘密鍵が分からない場合は、新しいアクセスキー ID を生成します。

    4. Image name フィールドにイメージ名を、Amazon S3 bucket name フィールドに Amazon バケット名を入力して、カスタマイズイメージを追加するバケットの AWS region フィールドを入力します。Next をクリックします。
    5. 情報を確認し、Finish をクリックします。

      必要に応じて、戻る をクリックして、誤った情報を変更できます。

      注記

      カスタマイズイメージを送信するバケットの正しい IAM 設定が必要です。この手順では IAM のインポートとエクスポートを使用するため、バケットにイメージをアップロードする前にバケットに ポリシー を設定する必要があります。詳細は、IAM ユーザーの必要なパーミッション を参照してください。

  4. 右上の小さなポップアップで、保存の進行状況が通知されます。また、イメージの作成、イメージ作成の進捗、およびそれ以降の AWS Cloud にアップロードに関する情報も通知されます。

    プロセスが完了すると、Image build complete のステータスが表示されます。

  5. メニューで Service→EC2 をクリックし、AWS コンソールで 正しいリージョン を選択します。イメージのステータスは、アップロードされていることを示す Available でなければなりません。
  6. ダッシュボードでイメージを選択し、Launch をクリックします。
  7. 新しいウィンドウが開きます。イメージを開始するために必要なリソースに応じて、インスタンスタイプを選択します。Review and Launch をクリックします。
  8. インスタンスの開始の詳細を確認します。変更が必要な場合は、各セクションを編集できます。Launch をクリックします。
  9. インスタンスを起動する前に、インスタンスにアクセスするための公開鍵を選択します。

    既存のキーペアを使用するか、キーペアーを新規作成します。Image Builder を使用して、既存の公開鍵でイメージにユーザーを追加します。詳細は SSH キーを使用したユーザーアカウントの作成 を参照してください。

    次の手順に従って、EC2 で新規キーペアを作成し、新規インスタンスにアタッチします。

    1. ドロップダウンメニューリストから、Create a new key pair を選択します。
    2. 新しいキーペアに名前を入力します。新しいキーペアが生成されます。
    3. Download Key Pair をクリックして、新しいキーペアをローカルシステムに保存します。
  10. 次に、Launch Instance をクリックしてインスタンスを起動できます。

    Initializing と表示されるインスタンスのステータスを確認できます。

  11. インスタンスのステータスが running になると、Connect ボタンが有効になります。
  12. Connect をクリックします。ポップアップウィンドウが表示され、SSH を使用して接続する方法の説明が表示されます。

    1. 優先する接続方法として スタンドアロン SSH クライアント を選択し、ターミナルを開きます。
    2. 秘密鍵を保存する場所で、SSH が機能するために鍵が公開されていることを確認してください。これには、以下のコマンドを実行します。

      $ chmod 400 <your-instance-name.pem>_
    3. パブリック DNS を使用してインスタンスに接続します。

      $ ssh -i "<_your-instance-name.pem_"> ec2-user@<_your-instance-IP-address_>
    4. yes と入力して、接続の続行を確定します。

      これで、SSH でインスタンスに接続されました。

検証

  1. SSH でインスタンスに接続している間にアクションが実行できるかどうかを確認します。

10.4. Azure VHD イメージをアップロードする準備をしています

イメージビルドを使用して、Microsoft Azure クラウドにアップロードできる VHD イメージを準備できます。

前提条件

  • 使用可能な Microsoft Azure リソースグループとストレージアカウントが必要です。
  • AZ CLI ツールは特に python 2.7 に依存しているため、python2 がインストールされています。

手順

  1. Microsoft リポジトリーキーをインポートします。

    # rpm --import https://packages.microsoft.com/keys/microsoft.asc
  2. ローカルの azure-cli リポジトリー情報を作成します。

    # sh -c 'echo -e "[azure-cli]\nname=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'
  3. Azure CLI をインストールします。

    # yumdownloader azure-cli
    # rpm -ivh --nodeps azure-cli-2.0.64-1.el7.x86_64.rpm
    注記

    Azure CLI パッケージのダウンロードバージョンは、現在利用可能なバージョンによって異なる場合があります。

  4. Azure CLI を実行します。

    $ az login

    ターミナルに次のメッセージが表示されます。Note, we have launched a browser for you to login.For old experience with device code, use "az login --use-device-code次に、ターミナルは、ログインできる場所から https://microsoft.com/devicelogin へのリンクのあるブラウザーを開きます。

    注記

    リモート (SSH) セッションを実行している場合、https://microsoft.com/devicelogin リンクはブラウザーで開きません。この場合、リンクをブラウザーにコピーしてログインし、リモートセッションを認証できます。サインインするには、Web ブラウザーを使用してページ https://microsoft.com/devicelogin を開き、デバイスコードを入力して認証します。

  5. Azure で、ストレージアカウントのキーを一覧表示します。

    $ GROUP=resource-group-name
    $ ACCOUNT=storage-account-name
    $ az storage account keys list --resource-group $GROUP --account-name $ACCOUNT

    resource-group-name を Azure リソースグループの名前に置き換え、storage-account-name を Azure ストレージアカウントの名前に置き換えます。

    注記

    次のコマンドを使用して、使用可能なリソースを一覧表示できます。

    $ az resource list
  6. 上記コマンドの出力の key1 の値を書き留め、それを環境変数に割り当てます。

    $ KEY1=value
  7. ストレージコンテナーを作成します。

    $ CONTAINER=storage-account-name
    $ az storage container create --account-name $ACCOUNT \
    --account-key $KEY1 --name $CONTAINER

    storage-account-name は、ストレージアカウント名に置き換えます。

関連情報

10.5. Microsoft Azure クラウドへの VHD イメージのアップロード

カスタマイズした VHD イメージを作成したら、Microsoft Azure クラウドにアップロードできます。

前提条件

  • Azure VHD イメージをアップロードするようにシステムを設定している。Preparing to upload Azure VHD images を参照してください。
  • Image Builder で Azure VHD イメージを作成している。

    • CLI で、vhd 出力タイプを使用します。
    • GUI で、Azure Disk Image (.vhd) イメージタイプを使用します。

      手順

      1. イメージを Microsoft Azure にプッシュし、そこからインスタンスを作成します。

        $ VHD=25ccb8dd-3872-477f-9e3d-c2970cd4bbaf-disk.vhd
        $ az storage blob upload --account-name $ACCOUNT --container-name $CONTAINER --file $VHD --name $VHD --type page
        ...
      2. Microsoft Azure Blob ストレージへのアップロードが完了したら、そこから Azure イメージを作成します。

        $ az image create --resource-group $GROUP --name $VHD --os-type linux --location eastus --source https://$ACCOUNT.blob.core.windows.net/$CONTAINER/$VHD
         - Running ...

検証

  1. Microsoft Azure ポータル、または以下のようなコマンドを使用して、インスタンスを作成します。

    $ az vm create --resource-group $GROUP --location eastus --name $VHD --image $VHD --admin-username azure-user --generate-ssh-keys
     - Running ...
  2. 秘密鍵を使用して、SSH 経由で、作成されたインスタンスにアクセスします。azure-user としてログインします。

10.6. VMDK イメージのアップロードと vSphere での RHEL 仮想マシンの作成

Image Builder を使用すると、VMware ESXi または vSphere システムクラウドプロバイダーへのアップロードに適したカスタマイズされたイメージを作成できます。

前提条件

  • Image Builder で VMDK イメージを作成している。

    • CLI で、vmdk 出力タイプを使用します。
    • GUI で、VMware Virtual Machine Disk (.vmdk) イメージタイプを使用します。

手順

  1. HTTP 経由でイメージを vSphere にアップロードします。vCenter で Upload Files をクリックします。

    composer vmware upload image

  2. 仮想マシン (VM) を作成するときは、Device Configuration ステップで、デフォルトの New Hard Disk を削除し、ドロップダウンを使用して Existing Hard Disk ディスクイメージを選択します。

    composer vmware existing disk

  3. 作成するディスクの Virtual Device Node として IDE デバイスを使用していることを確認します。デフォルト値の SCSI では、VM が起動できなくなります。

    composer vmware existing ide

10.7. Image Builder を使用して GCP にイメージをアップロードする

Image Builder を使用すると、gce イメージを構築し、ユーザーまたは GCP サービスアカウントの認証情報を提供してから、gce イメージを GCP 環境に直接アップロードできます。

10.7.1. CLI を使用して GCP に gce イメージをアップロードする

gce イメージを GCP にアップロードするための認証情報を含む設定ファイルをセットアップする手順に従います。

前提条件

  • GCP にイメージをアップロードするためのユーザーまたはサービスアカウントの Google 認証情報を持っている。認証情報に関連付けられたアカウントには、少なくとも次の IAM ロールが割り当てられている必要があります。

    • roles/storage.admin - ストレージオブジェクトの作成と削除
    • roles/compute.storageAdmin - VM イメージを Compute Engine にインポートします。
  • 既存の GCP バケットがあります。

手順

  1. テキストエディターを使用して、次の内容で gcp-config.toml 設定ファイルを作成します。

    provider = "gcp"
    
    [settings]
    bucket = "GCP_BUCKET"
    region = "GCP_STORAGE_REGION"
    object = "OBJECT_KEY"
    credentials = "GCP_CREDENTIALS"

    詳細は以下のようになります。

    • GCP_BUCKET は既存のバケットを指します。アップロード中のイメージの中間ストレージオブジェクトを格納するために使用されます。
    • GCP_STORAGE_REGION は、通常の Google ストレージリージョンであると同時に、デュアルリージョンまたはマルチリージョンでもあります。
    • OBJECT_KEY は、中間ストレージオブジェクトの名前です。アップロード前に存在してはならず、アップロードプロセスが完了すると削除されます。オブジェクト名が .tar.gz で終わらない場合、拡張子がオブジェクト名に自動的に追加されます。
    • GCP_CREDENTIALS は、GCP からダウンロードされた認証情報 JSON ファイルの Base64 エンコードスキームです。認証情報によって、GCP がイメージをアップロードするプロジェクトが決まります。

      注記

      GCP での認証に別のメカニズムを使用する場合、gcp-config.toml での GCP_CREDENTIALS の指定はオプションです。GCP で認証するさまざまな方法の詳細については、GCP での認証 をご覧ください。

  2. 追加のイメージ名とクラウドプロバイダープロファイルを使用して設定を作成します。

    $ sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.toml

    注意: イメージビルド、アップロード、およびクラウド登録プロセスは、完了に最大 10 分かかる場合があります。

検証

  • イメージのステータスが FINISHED であることを確認します。

    $ sudo composer-cli compose status

10.7.2. GCP による認証

Image Builder でいくつかの異なる種類の認証情報を使用して、GCP で認証できます。複数の認証情報セットを使用して GCP で認証するように Image Builder 設定が設定されている場合、次の優先順位で認証情報が使用されます。

  1. 設定ファイルで composer-cli コマンドで指定された認証情報。
  2. osbuild-composer ワーカー設定で設定された認証情報。
  3. 次のオプションを使用して認証方法を自動的に見つけようとする、Google GCP SDK ライブラリーからのアプリケーションのデフォルト認証情報:

    1. GOOGLE_APPLICATION_CREDENTIALS 環境変数が設定されている場合、Application Default Credentials は、変数が指すファイルから認証情報を読み込んで使用しようとします。
    2. Application Default Credentials は、コードを実行しているリソースに関連付けられたサービスアカウントを使用して認証を試みます。たとえば、Google Compute Engine VM です。

      注記

      イメージをアップロードする GCP プロジェクトを決定するには、GCP 認証情報を使用する必要があります。したがって、すべてのイメージを同じ GCP プロジェクトにアップロードする場合を除き、composer-cli コマンドを使用して gcp-config.toml 設定ファイルに認証情報を指定する必要があります。

10.7.2.1. composer-cli コマンドで認証情報を指定する

提供されたアップロードターゲット設定 gcp-config.toml で GCP 認証認証情報を指定できます。時間を節約するために、Google アカウント認証情報の JSON ファイルの Base64 エンコードスキームを使用します。

手順

  • 提供されたアップロードターゲット設定 gcp-config.toml で、認証情報を設定します。

    provider = "gcp"
    
    [settings]
    provider = "gcp"
    
    [settings]
    ...
    credentials = "GCP_CREDENTIALS"
  • GOOGLE_APPLICATION_CREDENTIALS 環境変数に保存されているパスを使用して、Google アカウント認証情報ファイルのエンコードされたコンテンツを取得するには、次のコマンドを実行します。

    $ base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"

10.7.2.2. osbuild-composer ワーカー設定で認証情報を指定する

すべてのイメージビルドでグローバルに GCP に使用される GCP 認証認証情報を設定できます。このように、イメージを同じ GCP プロジェクトにインポートする場合、GCP へのすべてのイメージのアップロードに同じ認証情報を使用できます。

手順

  • /etc/osbuild-worker/osbuild-worker.toml ワーカー設定で、次の認証情報の値を設定します。

    [gcp]
    credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"

10.8. GUI イメージビルダーツールを使用して VMDK イメージを vSphere にプッシュする

GUI イメージビルダーツールを使用して VMware イメージを構築し、そのイメージを直接 vSphere インスタンスにプッシュすることで、イメージファイルをダウンロードして手動でプッシュする必要がなくなります。Image Builder を使用して直接 vSphere インスタンスサービスプロバイダーに .vmdk イメージを作成するには、次の手順に従います。

前提条件

手順

  1. 作成したブループリントの Images タブをクリックします。
  2. イメージの作成 をクリックして、カスタマイズしたイメージを作成します。

    イメージタイプウィンドウが開きます。

  3. Image type ウィンドウで、以下を実行します。

    1. ドロップダウンメニューからタイプ (VMware VSphere (.vmdk)) を選択します。
    2. Upload to VMware チェックボックスをチェックして、イメージを vSphere にアップロードします。
    3. 必要に応じて、インスタンス化するイメージのサイズを設定します。最小のデフォルトサイズは 2GB です。
    4. Next をクリックします。
  4. Upload to VMware ウィンドウの Authentication の下に以下の情報を入力します。

    1. ユーザー名: vSphere アカウントのユーザー名。
    2. パスワード: vSphere アカウントのパスワード。
  5. Upload to VMware ウィンドウの Destination の下に以下の情報を入力します。

    1. イメージ名: アップロードするイメージの名前。
    2. ホスト: イメージをアップロードする VMware vSphere の URL。
    3. クラスター: イメージをアップロードするクラスターの名前。
    4. データセンター: イメージをアップロードするデータセンターの名前。
    5. データストア: イメージをアップロードするデータストアの名前。
    6. Next をクリックします。
  6. 確認 ウィンドウで、イメージ作成の詳細を確認し、Finish をクリックします。

    Back をクリックして、誤った情報を変更できます。

    Image Builder は、RHEL vSphere イメージの Compose をキューに追加し、指定した vSphere インスタンスのクラスターにイメージを作成してアップロードします。

    注記

    イメージビルドおよびアップロードプロセスの完了には数分かかります。

    プロセスが完了すると、Image build complete のステータスが表示されます。

検証

イメージステータスのアップロードが正常に完了したら、アップロードしたイメージから仮想マシン (VM) を作成し、ログインできます。これを行うには、以下を行います。

  1. VMware vSphere クライアントにアクセスします。
  2. 指定した vSphere インスタンスのクラスターでイメージを検索します。
  3. アップロードしたイメージから新しい仮想マシンを作成できます。

    1. アップロードしたイメージを選択します。
    2. 選択したイメージを右クリックします。
    3. New Virtual Machine をクリックします。

      New Virtual Machine ウィンドウが開きます。

      New Virtual Machine ウィンドウで、以下の詳細を指定します。

      1. New Virtual Machine を選択します。
      2. VM の名前とフォルダーを選択します。
      3. コンピューターリソースの選択: この操作の宛先コンピューターリソースを選択します
      4. ストレージの選択: たとえば NFS-Node1 を選択します。
      5. 互換性の選択: イメージは BIOS 専用でなければなりません。
      6. ゲストオペレーティングシステムを選択します。たとえば、Linux および Red Hat Fedora (64-bit) を選択します。
      7. ハードウェアのカスタマイズ: 仮想マシンを作成する場合は、右上の Device Configuration ボタンでデフォルトの New Hard Disk を削除し、ドロップダウンを使用して Existing Hard Disk ディスクイメージを選択します。
      8. 準備完了: 詳細を確認し、Finish をクリックしてイメージを作成します。
    4. VMs タブに移動します。

      1. 一覧から、作成した仮想マシンを選択します。
      2. パネルから Start ボタンをクリックします。仮想マシンイメージを読み込み中であることを示す新しいウィンドウが表示されます。
      3. ブループリント用に作成した認証情報を使用してログインします。
      4. ブループリントに追加したパッケージがインストールされていることを確認できます。以下に例を示します。

        $ rpm -qa | grep firefox

10.9. GUI イメージビルダーツールを使用して VHD イメージを Microsoft Azure クラウドにプッシュする

Image Builder を使用して .vhd イメージを作成できます。次に、.vhd イメージを Microsoft Azure クラウドサービスプロバイダーの Blob Storage にプッシュできます。

前提条件

手順

  1. blueprint name については、Images タブをクリックします。
  2. イメージの作成 をクリックして、カスタマイズしたイメージを作成します。

    ポップアップウィンドウが開きます。

    1. "ype ドロップダウンメニューリストから、Azure Disk Image (.vhd) を選択します。
    2. Upload to Azure チェックボックスをチェックして、イメージを Microsoft Azure Cloud にアップロードし、Next をクリックします。
    3. Azure へのアクセスを認証するには、対応するフィールドにストレージアカウントとストレージアクセスキーを入力します。Next をクリックします。

      Microsoft ストレージアカウントの詳細 は、Settings → Access Key menu list で確認できます。

    4. アップロードするイメージファイルに使用する イメージ名 と、イメージのプッシュ先のイメージファイルに使用する Blob のストレージコンテナーを入力します。Next をクリックします。
    5. 指定した情報を確認し、Finish をクリックします。

      必要に応じて、戻る をクリックして、誤った情報を変更できます。

  3. イメージ作成プロセスが開始されると、右上に小さなポップアップが表示され、次のメッセージが表示されます: Image creation has been added to the queue

    イメージプロセスの作成が完了したら、イメージを作成した Blueprint をクリックします。images タブで、作成したイメージの イメージビルドの完了 ステータスを確認できます。

  4. Microsoft Azure Cloud にプッシュしたイメージにアクセスするには、Microsoft Azure Portal にアクセスします。
  5. 検索バーで Images と入力して、Services の下にある最初のエントリーを選択します。Image Dashboard にリダイレクトされます。
  6. Add をクリックします。Create an Image ダッシュボードにリダイレクトされます。

    以下の情報を追加します。

    1. Name: 新しいイメージの名前を選択します。
    2. Resource Group: リソースグループ を選択します。
    3. Location: ストレージアカウントに割り当てられたリージョンと一致する 場所 を選択します。それ以外の場合は、Blob を選択できません。
    4. OS タイプ: オペレーティングシステムのタイプを Linux に設定します。
    5. VM Generation: 仮想マシンの生成は Gen 1 に設定したままにします。
    6. Storage Blob: Storage blob input の右側にある Browse をクリックします。ダイアログを使用して、先ほどアップロードしたイメージを見つけます。

      その他のフィールドはデフォルトのままにしておきます。

  7. 作成 をクリックしてイメージを作成します。イメージが作成されたら、右上隅に Successfully created image というメッセージが表示されます。
  8. Refresh をクリックして、新しく作成したイメージを表示し、開きます。
  9. + Create VM をクリックします。Create a virtual machine ダッシュボードにリダイレクトされます。
  10. Basic タブの Project Details で、SubscriptionResource Group がすでに事前設定されています。

    新しい Resource Group を作成する場合:

    1. Create new をクリックします。

      ポップアップで、リソースグループ名 のコンテナーの作成が求められます。

    2. 名前を入力して OK をクリックします。

      事前に設定された リソースグループ をそのまま使用する場合は、以下を行います。

  11. インスタンスの詳細 で、次のように入力します。

    1. Virtual machine name
    2. Region
    3. Image: 作成したイメージがデフォルトで事前に選択されています。
    4. Size: 必要に応じて仮想マシンのサイズを選択します。

      残りのフィールドはデフォルトのままにします。

  12. Administrator account に、以下の情報を入力します。

    1. username: アカウント管理者の名前。
    2. SSH Public Key source: ドロップダウンメニューから、Generate new key pair を選択します。

      既存のキーペアを使用するか、キーペアーを新規作成します。Image Builder を使用して、既存の公開鍵でイメージにユーザーを追加します。詳細は、SSH 鍵を持つユーザーアカウントの作成 を参照してください。

    3. key pair name: キーペアの名前を挿入します。
  13. 受信ポートのルール で、各フィールドの値を選択します。

    1. Public inbound ports: Allow selected ports
    2. Select inbound ports: デフォルト設定の SSH (22) を使用します。
  14. Review + Create をクリックします。Review + create タブにリダイレクトされ、検証が正常に終了した旨の確認メッセージが表示されます。
  15. 詳細を確認して Create をクリックします。

    オプションで Previous をクリックして、以前に選択したオプションを修正できます。

  16. 新しい鍵ペアを生成する ウィンドウが開きます。Download private key and create resources をクリックします。

    yourKey.pem として鍵ファイルを保存します。

  17. デプロイメントが完了したら、Go to resource をクリックします。
  18. 実際の仮想マシンの詳細を含む新規ウィンドウに、リダイレクトされます。ページの右上にあるパブリック IP アドレスを選択してクリップボードにコピーします。

次に、仮想マシンとの SSH 接続を作成して、仮想マシンに接続します。

  1. 端末を開きます。
  2. プロンプトで、VM への SSH 接続を開きます。IP アドレスは、仮想マシンの IP アドレスに、.pem へのパスは、キーファイルのダウンロード先のパスに置き換えます。

    # ssh -i ./Downloads/yourKey.pem azureuser@10.111.12.123
  3. 接続を続行するには確定する必要があります。続行するには yes と入力します。

上記の作業の結果、Microsoft Azure Storage Blob にプッシュした出力イメージをプロビジョニングする準備が整いました。

10.10. OpenStack への QCOW2 イメージのアップロード

Image Builder ツールを使用すると、OpenStack クラウドデプロイメントにアップロードしてそこでインスタンスを開始するのに適した、カスタマイズされた .qcow2 イメージを作成できます。

+警告: Image Builder を OpenStack イメージタイプで使用して作成する一般的な QCOW2 イメージタイプの出力フォーマットを間違えないでください。これも QCOW2 フォーマットですが、OpenStack に固有の変更がさらに含まれています。

前提条件

  • ブループリントを作成しました。
  • Image Builder を使用して QCOW2 イメージを作成しました。See

手順

  1. QCOW2 イメージの作成を開始します。

    # composer-cli compose start blueprint_name openstack
  2. ビルドの状態を確認します。

    # $ composer-cli compose status

    イメージビルドが完了したら、イメージをダウンロードできます。

  3. QCOW2 イメージをダウンロードします。

    # $ composer-cli compose image UUID
  4. OpenStack ダッシュボードにアクセスし、+Create Image をクリックします。
  5. 左側のメニューで、Admin タブを選択します。

    1. System Panel から Image をクリックします。

      Create An Image ウィザードが開きます。

  6. Create An Image ウィザードで、以下を行います。

    1. イメージの名前を入力します。
    2. Browse をクリックして QCOW2 イメージをアップロードします。
    3. Format ドロップダウンリストから、QCOW2 - QEMU Emulator を選択します。
    4. Create Image をクリックします。

      composer openstack upload image

  7. 左側のメニューで Project タブを選択します。

    1. Compute メニューから Instances を選択します。
    2. Launch Instance ボタンをクリックします。

      インスタンスの Launch Instance が開きます。

    3. Details ページで、インスタンスの名前を入力します。Next をクリックします。
    4. Source ページで、アップロードしたイメージの名前を選択します。Next をクリックします。
    5. Flavor ページで、ニーズに最適なマシンリソースを選択します。Launch をクリックします。

      composer openstack start instance

  8. イメージから任意のメカニズム (CLI または OpenStack Web UI) を使用して、イメージインスタンスを実行できます。秘密鍵を使用して、SSH 経由で、作成されたインスタンスにアクセスします。cloud-user としてログインします。

10.11. カスタマイズされた RHEL イメージを Alibaba にアップロードする準備

カスタマイズされた RHEL イメージを Alibaba Cloud にデプロイするには、まずカスタマイズされたイメージを検証する必要があります。Alibaba Cloud は、イメージを使用する前に特定の要件を満たすようにカスタムイメージを要求するため、イメージが正常に起動するように特別な設定が必要になります。

注記

Image Builder は、Alibaba の要件に準拠するイメージを生成します。ただし、Red Hat は、Alibaba image_check ツール を使用して、イメージのフォーマット準拠を確認することもお勧めします。

前提条件

  • Image Builder を使用して Alibaba イメージを作成しておく必要があります。

手順

  1. Alibaba image_check ツール を使用して、チェックするイメージを含むシステムに接続します。
  2. image_check ツールをダウンロードします。

    $ curl -O http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/73848/cn_zh/1557459863884/image_check
  3. イメージのコンプライアンスツールのファイルパーミッションを変更します。

    # chmod +x image_check
  4. 次のコマンドを実行して、イメージコンプライアンスツールのチェックを起動します。

    # ./image_check

    このツールは、システム設定を検証し、画面に表示されるレポートを生成します。image_check ツールは、イメージのコンプライアンスツールが実行しているフォルダーにこのレポートを保存します。

トラブルシューティング

いずれかの 検出項目 が失敗した場合は、ターミナルの指示に従って修正してください。リンクを参照してください: 検出項目セクション。

関連情報

10.12. カスタマイズされた RHEL イメージを Alibaba にアップロードする

Image Builder を使用して作成したカスタマイズされた AMI イメージを Object Storage Service (OSS) にアップロードできます。

前提条件

手順

  1. OSS コンソール にログインします。
  2. 左側のバケットメニューで、イメージをアップロードするバケットを選択します。
  3. 右上のメニューで、Files タブをクリックします。
  4. アップロード をクリックします。右側のダイアログウィンドウが開きます。以下を設定します。

    • アップロード先 - これを選択すると、現在 のディレクトリーまたは 指定した ディレクトリーにファイルをアップロードします。
    • ファイル ACL - アップロードしたファイルのパーミッションのタイプを選択します。
  5. アップロード をクリックします。
  6. アップロードするイメージを選択します。
  7. Open をクリックします。

その結果、カスタマイズされた AMI イメージが OSS コンソールにアップロードされます。

10.13. イメージの Alibaba へのインポート

Image Builder を使用して作成したカスタマイズされた Alibaba RHEL イメージを Elastic Cloud Console (ECS) にインポートするには、次の手順に従います。

前提条件

手順

  1. ECS コンソール にログインします。

    1. 左側のメニューで、images をクリックします。
    2. 右上にある Import Image をクリックします。ダイアログウィンドウが開きます。
    3. イメージが含まれる正しいリージョンを設定していることを確認します。以下の情報を入力します。

      1. OSS Object Address - OSS Object Address を参照
      2. Image Name
      3. オペレーティングシステム
      4. System Disk Size
      5. システムアーキテクチャー
      6. Platform: Red Hat
    4. 必要に応じて、以下の情報を指定します。

      1. Image Format - アップロードしたイメージの形式に応じて qcow2 または ami
      2. Image Description
      3. Add Images of Data Disks

        アドレスは、OSS 管理コンソールで確認できます。左側のメニューで必要なバケットを選択した後:

  2. Files セクションを選択します。
  3. 適切なイメージの右側にある Details リンクをクリックします。

    画面右側にウィンドウが表示され、イメージの詳細が表示されます。OSS オブジェクトアドレスは URL ボックスにあります。

  4. OK をクリックします。

    注記

    インポートプロセスの時間は、イメージのサイズによって異なります。

カスタマイズされたイメージが ECS コンソールにインポートされます。

10.14. Alibaba を使用してカスタマイズされた RHEL イメージのインスタンスを作成する

Alibaba ECS Console を使用して、カスタマイズされた RHEL イメージのインスタンスを作成できます。

前提条件

  • OSS をアクティベートして、カスタムイメージをアップロードしている。
  • イメージを ECS コンソールに正常にインポートしている。Alibaba へのイメージのインポート を参照してください。

手順

  1. ECS コンソール にログインします。
  2. 左側のメニューで、インスタンス を選択します。
  3. 右上隅にある インスタンスの作成 をクリックします。新しいウィンドウにリダイレクトされます。
  4. 必要な情報をすべて完了します。詳細は、Creating an instance by using the wizard を参照してください。
  5. Create Instance をクリックして、順番を確認します。

    注記

    サブスクリプションによっては、Create Instance ではなく Create Order が表示されます。

その結果、アクティブなインスタンスを Alibaba ECS Console からデプロイする準備が整いました。