付録C 完全なディスクイメージ

メインのオーバークラウドイメージは、フラットパーティションイメージです。これは、パーティション情報またはブートローダーがイメージ自体に含まれていないことを意味します。director は、起動時に別のカーネルと ramdisk を使用し、オーバークラウドイメージをディスクに書き込む際には基本的なパーティションレイアウトを作成しますが、パーティションレイアウト、ブートローダー、および強化されたセキュリティー機能が含まれる完全なディスクイメージを作成することが可能です。

重要

以下のプロセスでは、director のイメージ構築機能を使用します。Red Hat では、本項に記載の指針に従ったイメージ構築のみをサポートしています。これらとは異なる仕様でのカスタムのイメージ構築はサポートされていません。

セキュリティーが強化されたイメージには、セキュリティーが重要な機能となるRed Hat OpenStack Platform のデプロイメントに必要な追加のセキュリティー対策が含まれます。イメージをセキュアにするためには、以下のような推奨事項があります。

  • /tmp ディレクトリーは、別のボリュームまたはパーティションにマウントされ、rwnosuidnodevnoexecrelatime のフラグが付きます。
  • /var/var/log/var/log/audit のディレクトリーは、別のボリュームまたはパーティションにマウントされ、rw および relatime のフラグが付きます。
  • /home ディレクトリーは、別のパーティションまたはボリュームにマウントされ、rwnodevrelatime のフラグが付きます。
  • GRUB_CMDLINE_LINUX の設定に以下の変更を加えます。

    • 監査を有効にするには、audit=1 を追加して、追加のカーネルブートフラグを付けます。
    • nousb を追加して、ブートローダー設定を使用した USB のカーネルサポートを無効にします。
    • crashkernel=auto を設定して、セキュアでないブートフラッグを削除します。
  • セキュアでないモジュール (usb-storagecramfsfreevxfsjffs2hfshfsplussquashfsudfvfat) をブラックリストに登録して、読み込まれないようにします。
  • イメージから、セキュアでないパッケージ (kexec-tools によりインストールされた kdumptelnet) を削除します。
  • セキュリティーに必要な新しい screen パッケージを追加します。

セキュリティー強化されたイメージを構築するには、以下の手順を実行する必要があります。

  1. ベースの Red Hat Enterprise Linux 7 イメージをダウンロードします。
  2. 登録固有の環境変数を設定します。
  3. パーティションスキーマとサイズを変更してイメージをカスタマイズします。
  4. イメージを作成します。
  5. そのイメージをデプロイメントにアップロードします。

以下の項では、これらのタスクを実行する手順について詳しく説明します。

C.1. ベースのクラウドイメージのダウンロード

完全なディスクイメージを構築する前に、 ベースとして使用する Red Hat Enterprise Linux の既存のクラウドイメージをダウンロードする必要があります。Red Hat カスタマーポータルにナビゲートして、ダウンロードする KVM ゲストイメージを選択します。たとえば、Red Hat Enterprise Linux 7.4 用の KVM ゲストイメージは以下のページにあります。

C.2. 環境変数の設定

完全なディスクイメージの構築プロセスとして、director にはベースイメージと、新規クラウドイメージのパッケージを取得するための登録情報が必要です。これらは、Linux の環境変数を使用して定義します。

注記

イメージの構築プロセスにより、イメージは一時的に Red Hat サブスクリプションに登録され、システムがイメージの構築プロセスを完了すると登録を解除します。

セキュリティー強化された完全なイメージを構築するには、Linux の環境変数をお使いの環境と要件に応じて設定します。

DIB_LOCAL_IMAGE
ベースに使用するローカルイメージを設定します。
REG_ACTIVATION_KEY
登録プロセスの一部で代わりにアクティベーションキーを使用します。
REG_AUTO_ATTACH
最も互換性のあるサブスクリプションを自動的にアタッチするかどうかを定義します。
REG_BASE_URL
パッケージをプルするためのコンテンツ配信サーバーのベース URL。カスタマーポータルサブスクリプション管理のデフォルトのプロセスでは https://cdn.redhat.com を使用します。Red Hat Satellite 6 サーバーを使用している場合は、このパラメーターにお使いの Satellite サーバーのベース URL を使用する必要があります。
REG_ENVIRONMENT
1 つの組織内の 1 つの環境に登録します。
REG_METHOD
登録の方法を設定します。Red Hat カスタマーポータルに登録するには portal を使用します。Red Hat Satellite 6 で登録するには、satellite を使用します。
REG_ORG
イメージを登録する組織。
REG_POOL_ID
製品のサブスクリプション情報のプール ID
REG_PASSWORD
イメージを登録するユーザーアカウントのパスワードを指定します。
REG_REPOS

コンマ区切りのリポジトリー名の文字列 (空白なし)。この文字列の各リポジトリーは subscription-manager で有効化されます。セキュリティー強化された完全なディスクイメージには以下のリポジトリーを使用します。

  • rhel-7-server-rpms
  • rhel-7-server-extras-rpms
  • rhel-ha-for-rhel-7-server-rpms
  • rhel-7-server-optional-rpms
  • rhel-7-server-openstack-12-rpms
REG_SERVER_URL
使用するサブスクリプションサービスのホスト名を指定します。Red Hat カスタマーポータルの場合のデフォルトは subscription.rhn.redhat.com です。Red Hat Satellite 6 サーバーを使用する場合は、このパラメーターにお使いの Satellite サーバーのホスト名を使用する必要があります。
REG_USER
イメージを登録するアカウントのユーザー名を指定します。

Red Hat カスタマーポータルにローカルの QCOW2 をイメージ一時的に登録するための環境変数のセットをエクスポートする一連のコマンドの例を以下に示します。

$ export DIB_LOCAL_IMAGE=./rhel-server-7.4-x86_64-kvm.qcow2
$ export REG_METHOD=portal
$ export REG_USER="[your username]"
$ export REG_PASSWORD="[your password]"
$ export REG_REPOS="rhel-7-server-rpms \
    rhel-7-server-extras-rpms \
    rhel-ha-for-rhel-7-server-rpms \
    rhel-7-server-optional-rpms \
    rhel-7-server-openstack-12-rpms"

C.3. ディスクレイアウトのカスタマイズ

デフォルトでは、セキュリティーが強化されたイメージのサイズは 20G で、事前定義されたパーティショニングサイズを使用します。ただし、オーバークラウドのコンテナーイメージを収容するには、パーティショニングレイアウトを若干変更する必要があります。

パーティション以前のサイズ新しいサイズ

/

6G

8G

/tmp

1G

1G

/var

7G

10G

/var/log

5G

5G

/var/log/audit

900M

900M

/home

100M

100M

Total

20G

25G

これにより、イメージサイズが 25G に拡張されます。また、必要に応じて、パーティショニングレイアウトとディスクサイズをさらに変更することも可能です。

パーティショニングレイアウトとディスクサイズを変更するには、以下の手順に従ってください。

  • DIB_BLOCK_DEVICE_CONFIG 環境変数を使用してパーティショニングスキーマを変更します。
  • DIB_IMAGE_SIZE 環境変数を更新して、イメージのグローバルサイズを変更します。

C.3.1. パーティショニングスキーマの変更

パーティショニングスキーマを編集して、パーティショニングサイズを変更したり、新規パーティションの作成や既存のパーティションの削除を行うことができます。新規パーティショニングスキーマは以下の環境変数で定義することができます。

$ export DIB_BLOCK_DEVICE_CONFIG='<yaml_schema_with_partitions>'

以下の YAML 構成は、オーバークラウドのコンテナーイメージをプルするのに十分なスペースを提供する、変更後のパーティショニングレイアウトを示しています。

export DIB_BLOCK_DEVICE_CONFIG='''
- local_loop:
    name: image0
- partitioning:
    base: image0
    label: mbr
    partitions:
      - name: root
        flags: [ boot,primary ]
        size: 8G
        mkfs:
            type: xfs
            label: "img-rootfs"
            mount:
                mount_point: /
                fstab:
                    options: "rw,relatime"
                    fck-passno: 1
      - name: tmp
        size: 1G
        mkfs:
            type: xfs
            mount:
                mount_point: /tmp
                fstab:
                    options: "rw,nosuid,nodev,noexec,relatime"
      - name: var
        size: 10G
        mkfs:
            type: xfs
            mount:
                mount_point: /var
                fstab:
                    options: "rw,relatime"
      - name: log
        size: 5G
        mkfs:
            type: xfs
            mount:
                mount_point: /var/log
                fstab:
                    options: "rw,relatime"
      - name: audit
        size: 900M
        mkfs:
            type: xfs
            mount:
                mount_point: /var/log/audit
                fstab:
                    options: "rw,relatime"
      - name: home
        size: 100M
        mkfs:
            type: xfs
            mount:
                mount_point: /home
                fstab:
                    options: "rw,nodev,relatime"
'''

サンプルの YAML コンテンツをイメージのパーティションスキーマのベースとして使用します。パーティションサイズとレイアウトを必要に応じて変更します。

注記

パーティションサイズはデプロイメント後には変更できないので、正しいパーティションサイズを定義してください。

C.3.2. イメージサイズの変更

変更後のパーティショニングスキーマの合計は、デフォルトのディスクサイズ (20G) を超える可能性があります。そのような場合には、イメージサイズを変更する必要がある場合があります。イメージサイズを変更するには、イメージの作成に使用した設定ファイルを編集します。

/usr/share/openstack-tripleo-common/image-yaml/overcloud-hardened-images.yaml のコピーを作成します。

# cp /usr/share/openstack-tripleo-common/image-yaml/overcloud-hardened-images.yaml \
/home/stack/overcloud-hardened-images-custom.yaml

設定ファイルで DIB_IMAGE_SIZE を編集して、必要に応じて値を調整します。

...

environment:
DIB_PYTHON_VERSION: '2'
DIB_MODPROBE_BLACKLIST: 'usb-storage cramfs freevxfs jffs2 hfs hfsplus squashfs udf vfat bluetooth'
DIB_BOOTLOADER_DEFAULT_CMDLINE: 'nofb nomodeset vga=normal console=tty0 console=ttyS0,115200 audit=1 nousb'
DIB_IMAGE_SIZE: '25' 1
COMPRESS_IMAGE: '1'
1
この値は、新しいディスクサイズの合計に応じて調整してください。

このファイルを保存します。

重要

director がオーバークラウドをデプロイする際には、オーバークラウドイメージの RAW バージョンを作成します。これは、アンダークラウドに、その RAW イメージを収容するのに必要な空き容量がなければならないことを意味します。たとえば、セキュリティー強化されたイメージのサイズを 40G に増やした場合には、アンダークラウドのハードディスクに 40G の空き容量が必要となります。

C.4. セキュリティー強化された完全なディスクイメージの作成

環境変数を設定してイメージをカスタマイズした後には、openstack overcloud image build コマンドを使用してイメージを作成します。

# openstack overcloud image build \
--image-name overcloud-hardened-full \
--config-file /home/stack/overcloud-hardened-images-custom.yaml \ 1
--config-file /usr/share/openstack-tripleo-common/image-yaml/overcloud-hardened-images-rhel7.yaml
1
これは、「イメージサイズの変更」の新規ディスクサイズが含まれたカスタムの設定ファイルです。異なるカスタムディスクサイズを 使用していない 場合には、代わりに元の /usr/share/openstack-tripleo-common/image-yaml/overcloud-hardened-images.yaml ファイルを使用してください。

これにより、overcloud-hardened-full.qcow2 という名前のイメージが作成され、必要なセキュリティー機能がすべて含まれます。

C.5. セキュリティー強化された完全なディスクイメージのアップロード

OpenStack Image (glance) サービスにイメージをアップロードして、Red Hat OpenStack Platform director から使用を開始します。セキュリティー強化されたイメージをアップロードするには、以下の手順を実行してください。

  1. 新規作成されたイメージの名前を変更し、イメージディレクトリーに移動します。

    # mv overcloud-hardened-full.qcow2 ~/images/overcloud-full.qcow2
  2. オーバークラウドの古いイメージをすべて削除します。

    # openstack image delete overcloud-full
    # openstack image delete overcloud-full-initrd
    # openstack image delete overcloud-full-vmlinuz
  3. 新規オーバークラウドイメージをアップロードします。

    # openstack overcloud image upload --image-path /home/stack/images --whole-disk

既存のイメージをセキュリティー強化されたイメージに置き換える場合は、--update-existing フラグを使用します。これにより、元の overcloud-full イメージは、自分で作成した、セキュリティー強化された新しいイメージに置き換えられます。