付録D 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 を参照してください。
D.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 インストールガイド』 を参照してください。
カスタムのイメージを作成する前に、以下のパッケージをインストールします。
libvirt
、qemu-kvm
およびグラフィカルツールをインストールします。[root@host]# yum install virt-manager virt-viewer libvirt qemu-kvm
以下のコマンドラインツールをインストールします。
[root@host]# yum install virt-install libguestfs-tools-c
以下の手順では、libvirt
環境をホストするワークステーションで、[root@host]#
プロンプトを伴うコマンドはすべて入力します。
D.2. Red Hat Enterprise Linux 7 イメージの作成
このセクションを使用して、Red Hat Enterprise Linux 7 の ISO ファイルを使って QCOW2 形式のイメージを作成します。
-
Web ブラウザーを使って、Red Hat Enterprise Linux バイナリー ISO ファイルをテンポラリーの場所にダウンロードします。たとえば、
Downloads
ディレクトリーなどにダウンロードします。 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/
virtbr0 が仮想ブリッジであることを確認します。
[root@host]# ip a
libvirtd
を開始します。[root@host]# systemctl start libvirtd
/var/lib/libvirt/images/
ディレクトリーに移動します。[root@host]# cd /var/lib/libvirt/images/
QEMU イメージの準備
[root@host]# qemu-img create -f qcow2 rhel7.qcow2 8G
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
Red Hat Enterprise Linux インストールウィザードの手順を実行します。
-
インストールソースについては、Red Hat Satellite のリポジトリーに HTTP リンクを追加します。例:
satellite.example.com/pub/export/RHEL7/content/dist/rhel/server/7/7Server/x86_64/os/
- インストールに使用するデバイスのタイプについては、Auto-detected installation media を選択します。
- インストール先のタイプについては、Local Standard Disks を選択します。
- その他のストレージオプションについては、Automatically configure partitioning を選択します。
- ソフトウェアの選択については、Minimal Install を選択します。
- ネットワークインターフェースを ON に設定し、システムの開始時にインターフェースが起動することを確認します。
- ホスト名を入力し、Apply をクリックします。
-
root
パスワードを入力します。
-
インストールソースについては、Red Hat Satellite のリポジトリーに HTTP リンクを追加します。例:
- インストールの完了後、インスタンスを再起動して root ユーザーとしてログインします。
ネットワークインターフェースが起動し、IP アドレスが割り当てられていることを確認します。
# ip a
ホスト名が正しいことを確認します。
# hostname
/etc/NetworkManager/conf.d/XX-cloud-image.conf
ファイルを作成します。このファイルの XX は、優先順位を示す 2 桁の番号になります。ファイルに以下のコンテンツを追加します。[main] dns=none
- ホスト登録の設定 へ進みます。
D.3. Red Hat Enterprise Linux 6 イメージの作成
このセクションを使用して、Red Hat Enterprise Linux 6 の ISO ファイルを使って QCOW2 形式のイメージを作成します。
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
仮想マシンを以下のように設定します。
- インストーラーの初期起動メニューで、Install or upgrade an existing system のオプションを選択します。
- 適切な 言語 および キーボード オプションを選択します。
- インストールに使用するデバイスタイプを尋ねるプロンプトが表示されたら、基本ストレージデバイス を選択します。
-
デバイスの
ホスト名
を選択します。デフォルトのホスト名はlocalhost.localdomain
です。 - root パスワードを設定します。
- ディスク上の空き容量に応じて、インストールタイプを選択します。
- 基本サーバー のインストールを選択します。これには SSH サーバーが含まれます。
-
インスタンスを再起動して、
root
ユーザーとしてログインします。 /etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを編集して、以下の値のみが記載されている状態にします。TYPE=Ethernet DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no
サービスネットワークを再起動します。
# service network restart
- ホスト登録の設定 へ進みます。
D.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
ホストを登録するための設定:
- Satellite Server または Capsule Server の完全修飾ドメイン名 (FQDN) をメモしておきます (例: server.example.com)。
- ホストで、root ユーザーとしてターミナルに接続します。
ホストを登録する Satellite Server または Capsule Server からコンシューマー RPM をインストールします。コンシューマー RPM は、ホストのコンテンツソースのロケーションを更新し、ホストが、Red Hat Satellite に指定したコンテンツソースからコンテンツをダウンロードできるようにします。
# rpm -Uvh http://server.example.com/pub/katello-ca-consumer-latest.noarch.rpm
D.5. ホストの登録
前提条件
-
ホストに対して、適切なコンテンツビューおよび環境に関連しているアクティベーションキーが存在していることを確認する。詳細は、『コンテンツ管理ガイド』の「アクティベーションキーの管理」を参照してください。アクティベーションキーでは、デフォルトで
auto-attach
機能が有効になっています。この機能は、一般的にハイパーバイザーとして使用されるホストで使用されます。 subscription-manager
ユーティリティーのバージョンが 1.10 以上であることを確認する。パッケージは標準の Red Hat Enterprise Linux リポジトリーで利用できます。- Red Hat Enterprise Linux Workstation で、ルートユーザーとしてターミナルに接続します。
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 リポジトリーに設定されている必要があります。
- Red Hat Satellite で、ホスト > コンテンツホスト を選択します。
- 変更が必要なホストの名前を選択します。
- コンテンツホストのコンテンツ セクションで、リリースバージョン の右側にある編集アイコンをクリックします。
- リリースバージョン のドロップダウンメニューで、"6.3" を選択します。
- 保存をクリックします。
D.6. Katello エージェントのインストール
以下の手順を使用して、Satellite 6 に登録されているホストに Katello エージェントをインストールします。katello-agent
パッケージは、goferd service
を提供する gofer パッケージによって異なります。Red Hat Satellite Server または Capsule Server が、コンテンツホストに適用できるエラータに関する情報を提供できるように、このサービスを有効にしておく必要があります。
前提条件
Satellite Tools
リポジトリーは必要なパッケージを提供するため、これを有効にし、Red Hat Satellite Server に同期させてホストで利用できるようにする必要がある。
Katello エージェントをインストールするには、以下を実行します。
以下のコマンドを使って
katello-agent
RPM パッケージをインストールします。# yum install katello-agent
goferd が実行していることを確認します。
# systemctl start goferd
D.7. Puppet エージェントのインストール
本セクションを使用し、ホストに Puppet エージェントをインストールして設定します。Puppet エージェントを適切にインストールして設定している場合は、ホスト > すべてのホスト に移動して、Red Hat Satellite Server に表示されるすべてのホストの一覧を表示します。
以下のコマンドを使用して Puppet エージェントの RPM パッケージをインストールします。
# yum install puppet
起動時に開始する Puppet エージェントを設定します。
Red Hat Enterprise Linux 6 の場合:
# chkconfig puppet on
Red Hat Enterprise Linux 7 の場合:
# systemctl enable puppet
D.8. Red Hat Enterprise Linux 7 イメージの完了
システムを更新します。
# yum update
cloud-init
パッケージをインストールします。# yum install cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
設定ファイルを開きます。# vi /etc/cloud/cloud.cfg
cloud_init_modules
のタイトルの下に、以下を追加します。- resolv-conf
resolv-conf
オプションは、インスタンスの初回起動時にresolv.conf
を自動的に設定します。このファイルには、nameservers
、domain
、その他のオプションなどのインスタンスに関連した情報が記載されています。/etc/sysconfig/network
ファイルを開きます。# vi /etc/sysconfig/network
以下の行を追加し、EC2 メタデータサービスへのアクセスで問題が発生するのを回避します。
NOZEROCONF=yes
仮想マシンの登録を解除して、作成されるイメージをベースにクローン作成されるインスタンスすべてに同じサブスクリプション情報が含まれないようにします。
# subscription-manager repos --disable=* # subscription-manager unregister
インスタンスの電源をオフにします。
# poweroff
Red Hat Enterprise Linux Workstation で、ルートユーザーとしてターミナルに接続し、
/var/lib/libvirt/images/
ディレクトリーに移動します。[root@host]# cd /var/lib/libvirt/images/
virt-sysprep
コマンドでイメージのリセットおよびクリーニングをして、問題なくインスタンスの作成に使用できるようにします。[root@host]# virt-sysprep -d rhel7
virt-sparsify
コマンドを使用してイメージのサイズを縮小します。このコマンドにより、ディスクイメージ内の空き容量は、ホスト内の空き容量に戻ります。[root@host]# virt-sparsify --compress rhel7.qcow2 rhel7-cloud.qcow2
これにより、コマンドを実行する場所に新しい
rhel7-cloud.qcow2
ファイルが作成されます。
D.9. Red Hat Enterprise Linux 6 イメージの完了
システムを更新します。
# yum update
cloud-init
パッケージをインストールします。# yum install cloud-utils-growpart cloud-init
/etc/cloud/cloud.cfg
設定ファイルを編集して、cloud_init_modules
の下に以下を追加します。- resolv-conf
resolv-conf
オプションは、インスタンスの初回起動時にresolv.conf
設定ファイルを自動的に設定します。このファイルには、nameservers
、domain
、その他のオプションなどのインスタンスに関連した情報が記載されています。ネットワークの問題が発生するのを防ぐために、以下のように
/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 アドレスが割り当てられません)。/etc/sysconfig/network
に以下の行を追加し、EC2 メタデータサービスへのアクセスで問題が発生するのを回避します。NOZEROCONF=yes
仮想マシンの登録を解除して、作成されるイメージをベースにクローン作成されるインスタンスすべてに同じサブスクリプション情報が含まれないようにします。
# subscription-manager repos --disable=* # subscription-manager unregister # yum clean all
インスタンスの電源をオフにします。
# poweroff
Red Hat Enterprise Linux Workstation でルートとしてログインし、
virt-sysprep
コマンドを使用してイメージのリセットとクリーニングをし、問題なくインスタンスの作成に使用できるようにします。[root@host]# virt-sysprep -d rhel6
virt-sparsify
コマンドを使用してイメージのサイズを縮小します。このコマンドにより、ディスクイメージ内の空き容量は、ホスト内の空き容量に戻ります。[root@host]# virt-sparsify --compress rhel6.qcow2 rhel6-cloud.qcow2
これにより、コマンドを実行する場所に新しい
rhel6-cloud.qcow2
ファイルが作成されます。注記インスタンスに適用されているフレーバーのディスクスペースに応じて、イメージをベースとするインスタンスのパーティションを手動でリサイズする必要があります。
D.10. 次のステップ
- Satellite とプロビジョニングするすべてのイメージで、この手順を繰り返します。
- 後で使用できるように、保存場所にイメージを移動します。