付録C Red Hat Satellite 向けクラウドイメージの構築

このセクションを使用して、Red Hat Satellite にイメージを構築して登録します。

事前に設定済みの Red Hat Enterprise Linux KVM ゲスト QCOW2 イメージを使用することができます。

これらのイメージには cloud-init が含まれます。適切に機能させるには、ec2 互換のメタデータサービスを使用して SSH キーをプロビジョニングする必要があります。

注記

KVM ゲストイメージでは、以下の点に注意してください。

  • KVM ゲストイメージでは root アカウントが無効になっていますが、cloud-user という名前の特別なユーザーに sudo アクセスが許可されています。
  • このイメージには root パスワードは設定されていません。

root パスワードは、/etc/shadow で 2 番目のフィールドに !! と記載することによりロックされます。

Red Hat Enterprise Linux のカスタムイメージを作成する場合は、Creating a Red Hat Enterprise Linux 7 Image および Creating a Red Hat Enterprise Linux 6 Image を参照してください。

C.1. Red Hat Enterprise Linux のカスタムイメージの作成

前提条件

  • Linux ホストマシンを使用して、イメージを作成する。この例では、Red Hat Enterprise Linux 7 Workstation を使用します。
  • ワークステーションで virt-manager を使用して、この手順を実行する。リモートサーバーでイメージを作成した場合、virt-manager を使用してワークステーションからサーバーに接続します。
  • Red Hat Enterprise Linux 7 または 6 の ISO ファイル (Red Hat Enterprise Linux 7.4 Binary DVD または Red Hat Enterprise Linux 6.9 Binary DVD を参照)。

Red Hat Enterprise Linux Workstation のインストールに関する詳細は、『Red Hat Enterprise Linux 7 インストールガイド』を参照してください。

カスタムのイメージを作成する前に、以下のパッケージをインストールします。

  • libvirtqemu-kvm およびグラフィカルツールをインストールします。

    [root@host]# yum install virt-manager virt-viewer libvirt qemu-kvm
  • 以下のコマンドラインツールをインストールします。

    [root@host]# yum install virt-install libguestfs-tools-c
注記

以下の手順では、libvirt 環境をホストするワークステーションで、[root@host]# プロンプトを伴うコマンドはすべて入力します。

C.2. Red Hat Enterprise Linux 7 イメージの作成

このセクションを使用して、Red Hat Enterprise Linux 7 の ISO ファイルを使って QCOW2 形式のイメージを作成します。

  1. Web ブラウザーを使って、Red Hat Enterprise Linux バイナリー ISO ファイルをテンポラリーの場所にダウンロードします。たとえば、Downloads ディレクトリーなどにダウンロードします。
  2. Red Hat Enterprise Linux バイナリー ISO ファイルを /var/lib/libvirt/images/ ディレクトリーにコピーします。

    [root@host]# cp ~/home/user/Downloads/rhel-server-7.4-x86_64-dvd.iso /var/lib/libvirt/images/
  3. virtbr0 が仮想ブリッジであることを確認します。

    [root@host]# ip a
  4. libvirtd を開始します。

    [root@host]# systemctl start libvirtd
  5. /var/lib/libvirt/images/ ディレクトリーに移動します。

    [root@host]# cd /var/lib/libvirt/images/
  6. QEMU イメージの準備

    [root@host]# qemu-img create -f qcow2 rhel7.qcow2 8G
  7. virt-install を使用してインストールを開始します。以下の例はガイドとして使用します。

    [root@host]# virt-install --virt-type qemu --name rhel7 --ram 2048 \
    --cdrom rhel-server-7.4-x86_64-dvd.iso \
    --disk rhel7.qcow2,format=qcow2 \
    --network=bridge:virbr0 --graphics vnc,listen=0.0.0.0 \
    --noautoconsole --os-type=linux --os-variant=rhel7
    注記

    GUI ユーザーは、インスタンスが自動的に起動しない場合には、virt-manager コマンドを入力して、コンソールを確認します。

    [root@host]# virt-manager
  8. Red Hat Enterprise Linux インストールウィザードの手順を実行します。

    1. インストールソースについては、Red Hat Satellite のリポジトリーに HTTP リンクを追加します。例: satellite.example.com/pub/export/RHEL7/content/dist/rhel/server/7/7Server/x86_64/os/
    2. インストールに使用するデバイスのタイプについては、Auto-detected installation media を選択します。
    3. インストール先のタイプについては、Local Standard Disks を選択します。
    4. その他のストレージオプションについては、Automatically configure partitioning を選択します。
    5. ソフトウェアの選択については、Minimal Install を選択します。
    6. ネットワークインターフェースを ON に設定し、システムの開始時にインターフェースが起動することを確認します。
    7. ホスト名を入力し、Apply をクリックします。
    8. root パスワードを入力します。
  9. インストールの完了後、インスタンスを再起動して root ユーザーとしてログインします。
  10. ネットワークインターフェースが起動し、IP アドレスが割り当てられていることを確認します。

    # ip a
  11. ホスト名が正しいことを確認します。

    # hostname
  12. /etc/NetworkManager/conf.d/XX-cloud-image.conf ファイルを作成します。このファイルの XX は、優先順位を示す 2 桁の番号になります。ファイルに以下のコンテンツを追加します。

    [main]
    dns=none
  13. ホスト登録の設定 へ進みます。

C.3. Red Hat Enterprise Linux 6 イメージの作成

このセクションを使用して、Red Hat Enterprise Linux 6 の ISO ファイルを使って QCOW2 形式のイメージを作成します。

  1. virt-install でインストールを開始します。

    [root@host]# qemu-img create -f qcow2 rhel6.qcow2 4G
    [root@host]# virt-install --connect=qemu:///system --network=bridge:virbr0 \
    --name=rhel6 --os-type linux --os-variant rhel6 \
    --disk path=rhel6.qcow2,format=qcow2,size=10,cache=none \
    --ram 4096 --vcpus=2 --check-cpu --accelerate \
    --hvm --cdrom=rhel-server-6.8-x86_64-dvd.iso

    このコマンドによりインスタンスが起動し、インストールプロセスが開始します。

    注記

    インスタンスが自動的に起動しない場合には、virt-viewer コマンドを入力して、コンソールを確認します。

    [root@host]# virt-viewer rhel6
  2. 仮想マシンを以下のように設定します。

    1. インストーラーの初期起動メニューで、Install or upgrade an existing system のオプションを選択します。
    2. 適切な 言語 および キーボード オプションを選択します。
    3. インストールに使用するデバイスタイプを尋ねるプロンプトが表示されたら、基本ストレージデバイス を選択します。
    4. デバイスの ホスト名 を選択します。デフォルトのホスト名は localhost.localdomain です。
    5. root パスワードを設定します。
    6. ディスク上の空き容量に応じて、インストールタイプを選択します。
    7. 基本サーバー のインストールを選択します。これには SSH サーバーが含まれます。
  3. インスタンスを再起動して、root ユーザーとしてログインします。
  4. /etc/sysconfig/network-scripts/ifcfg-eth0 ファイルを編集して、以下の値のみが記載されている状態にします。

    TYPE=Ethernet
    DEVICE=eth0
    ONBOOT=yes
    BOOTPROTO=dhcp
    NM_CONTROLLED=no
  5. サービスネットワークを再起動します。

    # service network restart
  6. ホスト登録の設定 へ進みます。

C.4. ホスト登録の設定

Red Hat Enterprise Linux 仮想マシンは、デフォルトでカスタマーポータルの Subscription Management に登録されます。それぞれの仮想マシンの設定を更新して、適切な Satellite Server または Capsule Server から更新を受け取れるようにする必要があります。

前提条件

  • ホストは、以下の Red Hat Enterprise Linux バージョンを使用している必要がある。

    • 6.4 以上
    • 7.0 以上
  • Red Hat Enterprise Linux のすべてのアーキテクチャーがサポートされる (i386、x86_64、s390x、ppc_64)。
  • Satellite Server、任意の Capsule Server、およびホストで時刻同期ツールが有効になっており、実行していることを確認する。

    • Red Hat Enterprise Linux 6 の場合:

      # chkconfig ntpd on; service ntpd start
    • Red Hat Enterprise Linux 7 の場合:

      # systemctl enable chronyd; systemctl start chronyd
  • デーモン rhsmcertd が有効になっており、ホストで実行されていることを確認する。

    • Red Hat Enterprise Linux 6 の場合:

      # chkconfig rhsmcertd on; service rhsmcertd start
    • Red Hat Enterprise Linux 7 の場合:

      # systemctl start rhsmcertd

ホストを登録するための設定:

  1. Satellite Server または Capsule Server の完全修飾ドメイン名 (FQDN) をメモしておきます (例: server.example.com)。
  2. ホストで、root ユーザーとしてターミナルに接続します。
  3. ホストを登録する Satellite Server または Capsule Server からコンシューマー RPM をインストールします。コンシューマー RPM は、ホストのコンテンツソースのロケーションを更新し、ホストが、Red Hat Satellite に指定したコンテンツソースからコンテンツをダウンロードできるようにします。

    # rpm -Uvh http://server.example.com/pub/katello-ca-consumer-latest.noarch.rpm

C.5. ホストの登録

前提条件

  • ホストに対して、適切なコンテンツビューおよび環境に関連しているアクティベーションキーが存在していることを確認する。詳細は、『コンテンツ管理ガイド』の「アクティベーションキーの管理」を参照してください。アクティベーションキーでは、デフォルトで auto-attach 機能が有効になっています。この機能は、一般的にハイパーバイザーとして使用されるホストで使用されます。
  • subscription-manager ユーティリティーのバージョンが 1.10 以上であることを確認する。パッケージは標準の Red Hat Enterprise Linux リポジトリーで利用できます。

    1. Red Hat Enterprise Linux Workstation で、ルートユーザーとしてターミナルに接続します。
    2. Red Hat Subscription Manager を使ってホストを登録します。

      # subscription-manager register --org="My_Organization" --activationkey="MyKey"
注記

アクティベーションキーで定義したコンテンツビューとライフサイクル環境を上書きするには、--environment オプションを使用します。たとえば、「開発」ライフサイクル環境のコンテンツビュー「MyView」にホストを登録するには、以下を実行します。

# subscription-manager register --org="My_Organization" \
--environment=Development/MyView \
--activationkey="MyKey"
注記

Red Hat Enterprise Linux 6.3 ホストの場合、リリースバージョンはデフォルトで Red Hat Enterprise Linux 6 Server になり、これが 6.3 リポジトリーに設定されている必要があります。

  1. Red Hat Satellite で、ホスト > コンテンツホスト を選択します。
  2. 変更が必要なホストの名前を選択します。
  3. コンテンツホストのコンテンツ セクションで、リリースバージョン の右側にある編集アイコンをクリックします。
  4. リリースバージョン のドロップダウンメニューで、"6.3" を選択します。
  5. 保存をクリックします。

C.6. Katello エージェントのインストール

以下の手順を使用して、Satellite 6 に登録されているホストに Katello エージェントをインストールします。katello-agent パッケージは、goferd service を提供する gofer パッケージによって異なります。Red Hat Satellite Server または Capsule Server が、コンテンツホストに適用できるエラータに関する情報を提供できるように、このサービスを有効にしておく必要があります。

注記

Katello エージェントは非推奨で、今後の Satellite のバージョンで削除予定です。リモート実行機能を使用するワークロードを移行して、 クライアントをリモートで更新します。詳細は、『ホストの管理ガイド』の「Goferd および Katello エージェントなしでのホスト管理」を参照してください。

前提条件

Satellite Tools 6.7 リポジトリーは、必要なパッケージを提供するため、有効にして Satellite Server と同期し、ホストに公開する必要があります。 Satellite Tools 6.7 の有効化に関する情報は、『ホストの管理』の「Katello エージェントのインストール」を参照してください。

Katello エージェントをインストールするには、以下を実行します。

  1. 以下のコマンドを使って katello-agent RPM パッケージをインストールします。

    # yum install katello-agent
  2. goferd が実行していることを確認します。

    # systemctl start goferd

C.7. Puppet エージェントのインストール

本セクションを使用し、ホストに Puppet エージェントをインストールして設定します。Puppet エージェントを適切にインストールして設定している場合は、ホスト > すべてのホスト に移動して、Red Hat Satellite Server に表示されるすべてのホストの一覧を表示します。

  1. 以下のコマンドを使用して Puppet エージェントの RPM パッケージをインストールします。

    # yum install puppet
  2. 起動時に開始する Puppet エージェントを設定します。

    Red Hat Enterprise Linux 6 の場合:

    # chkconfig puppet on

    Red Hat Enterprise Linux 7 の場合:

    # systemctl enable puppet

C.8. Red Hat Enterprise Linux 7 イメージの完了

  1. システムを更新します。

    # {package-update}
  2. cloud-init パッケージをインストールします。

    # yum install cloud-utils-growpart cloud-init
  3. /etc/cloud/cloud.cfg 設定ファイルを開きます。

    # vi /etc/cloud/cloud.cfg
  4. cloud_init_modules のタイトルの下に、以下を追加します。

    - resolv-conf

    resolv-conf オプションは、インスタンスの初回起動時に resolv.conf を自動的に設定します。このファイルには、nameserversdomain、その他のオプションなどのインスタンスに関連した情報が記載されています。

  5. /etc/sysconfig/network ファイルを開きます。

    # vi /etc/sysconfig/network
  6. 以下の行を追加し、EC2 メタデータサービスへのアクセスで問題が発生するのを回避します。

    NOZEROCONF=yes
  7. 仮想マシンの登録を解除して、作成されるイメージをベースにクローン作成されるインスタンスすべてに同じサブスクリプション情報が含まれないようにします。

    # subscription-manager repos --disable=*
    # subscription-manager unregister
  8. インスタンスの電源をオフにします。

    # poweroff
  9. Red Hat Enterprise Linux Workstation で、ルートユーザーとしてターミナルに接続し、/var/lib/libvirt/images/ ディレクトリーに移動します。

    [root@host]# cd /var/lib/libvirt/images/
  10. virt-sysprep コマンドでイメージのリセットおよびクリーニングをして、問題なくインスタンスの作成に使用できるようにします。

    [root@host]# virt-sysprep -d rhel7
  11. virt-sparsify コマンドを使用してイメージのサイズを縮小します。このコマンドにより、ディスクイメージ内の空き容量は、ホスト内の空き容量に戻ります。

    [root@host]# virt-sparsify --compress rhel7.qcow2 rhel7-cloud.qcow2

    これにより、コマンドを実行する場所に新しい rhel7-cloud.qcow2 ファイルが作成されます。

C.9. Red Hat Enterprise Linux 6 イメージの完了

  1. システムを更新します。

    # {package-update}
  2. cloud-init パッケージをインストールします。

    # yum install cloud-utils-growpart cloud-init
  3. /etc/cloud/cloud.cfg 設定ファイルを編集して、cloud_init_modules の下に以下を追加します。

    - resolv-conf

    resolv-conf オプションは、インスタンスの初回起動時に resolv.conf 設定ファイルを自動的に設定します。このファイルには、nameserversdomain、その他のオプションなどのインスタンスに関連した情報が記載されています。

  4. ネットワークの問題が発生するのを防ぐために、以下のように /etc/udev/rules.d/75-persistent-net-generator.rules ファイルを作成します。

    # echo "#" > /etc/udev/rules.d/75-persistent-net-generator.rules

    これにより、/etc/udev/rules.d/70-persistent-net.rules ファイルが作成されるのを防ぎます。/etc/udev/rules.d/70-persistent-net.rules が作成されてしまうと、スナップショットからのブート時にネットワークが適切に機能しなくなる可能性があります (ネットワークインターフェースが「eth0」ではなく「eth1」として作成され、IP アドレスが割り当てられません)。

  5. /etc/sysconfig/network に以下の行を追加し、EC2 メタデータサービスへのアクセスで問題が発生するのを回避します。

    NOZEROCONF=yes
  6. 仮想マシンの登録を解除して、作成されるイメージをベースにクローン作成されるインスタンスすべてに同じサブスクリプション情報が含まれないようにします。

    # subscription-manager repos --disable=*
    # subscription-manager unregister
    # yum clean all
  7. インスタンスの電源をオフにします。

    # poweroff
  8. Red Hat Enterprise Linux Workstation でルートとしてログインし、virt-sysprep コマンドを使用してイメージのリセットとクリーニングをし、問題なくインスタンスの作成に使用できるようにします。

    [root@host]# virt-sysprep -d rhel6
  9. virt-sparsify コマンドを使用してイメージのサイズを縮小します。このコマンドにより、ディスクイメージ内の空き容量は、ホスト内の空き容量に戻ります。

    [root@host]# virt-sparsify --compress rhel6.qcow2 rhel6-cloud.qcow2

    これにより、コマンドを実行する場所に新しい rhel6-cloud.qcow2 ファイルが作成されます。

    注記

    インスタンスに適用されているフレーバーのディスクスペースに応じて、イメージをベースとするインスタンスのパーティションを手動でリサイズする必要があります。

C.10. 次のステップ

  • Satellite とプロビジョニングするすべてのイメージで、この手順を繰り返します。
  • 後で使用できるように、保存場所にイメージを移動します。