第3章 Satellite 5 から 6 への移行

本章では、ブートストラップスクリプトを使用して、以前の Satellite 5 から Satellite 6 へクライアントを移行し、移行プロセスの完了後に以前の Satellite インスタンスをリタイアさせる方法を説明します。

移行に使用するブートストラップスクリプトでは、コンテンツ登録、製品の証明書、および Puppet の設定を行います。ブートストラップスクリプトには、どこ (RHN、Satellite 5、SAM、RHSM) に登録されていても、または登録されていない場合でも、Red Hat Enterprise Linux システムを Satellite 6 にサブスクライブするという利点があります。

ブートストラップスクリプトでは、以下のことができます。

  • Satellite 5 から Satellite 6 にクライアントを移行する
  • Satellite 6 インスタンスのクライアントを、別のインスタンスに移行する
  • 新規 Red Hat Enterprise Linux システムを Satellite 6 に登録する

3.1. 前提条件

  • s390 システムに Satellite 5.8 を実行している場合は、x86_64 アーキテクチャーシステムに未使用の Satellite 6 をビルドする必要があります。Satellite 6 は、s390 システムでは実行できません。
  • 完全に機能する、最新の Satellite 6 で開始するようにしてください。
  • 移行プロセスを開始する前に、Satellite 6 インスタンスを、必要な Red Hat コンテンツと同期させる必要があります。
  • ホストにアクティベーションキーを設定しておきます。アクティベーションキーの設定方法は『コンテンツ管理ガイド』の「アクティベーションキーの管理」を参照してください。
  • 任意で、環境に適したホストコレクションを設定します。ホストコレクションの作成方法は『ホストの管理』の「ホストコレクションの設定」を参照してください。

3.2. 移行のワークフロー

ワークフローには、以下の手順が含まれます。

  1. クライアントへのブートストラップスクリプトのインストール
  2. Red Hat Enterprise Linux System の移行

    1. クライアントシステムでブートストラップスクリプトを実行
    2. 管理者として Web UI で Puppet 証明書を承認
    3. クライアントシステムで移行プロセスを完了したことを確認

3.3. 移行の実行

Satellite 6 では、ブートストラップスクリプトを使用して、以前の Satellite 5 インスタンスから既存のクライアントを移行します。

ブートストラップスクリプトは、コンテンツの登録、製品の証明書、および Puppet 設定を処理します。

3.3.1. ブートストラップスクリプトのインストール

ブートストラップスクリプトのパッケージである katello-client-bootstrap は、デフォルトで Satellite Server のベースシステムにインストールされ、スクリプトは /var/www/html/pub/ ディレクトリーにインストールされ、クライアントで使用できるようになります。これには、以下の形式の URL からアクセスできます。

satellite.example.com/pub/bootstrap.py

このスクリプトには readme ファイルがあります。Satellite CLI でこのファイルを表示するには、以下のコマンドを実行します。

$ less /usr/share/doc/katello-client-bootstrap-version/README.md

ブートストラップのクライアントへのインストール

スクリプトが必要になるのは一度だけで、さらには root ユーザー向けのものなので、これを /root に保存して使用後に削除します。root として、以下のようにクライアントにブートストラップスクリプトをインストールします。

  1. root ディレクトリーにいることを確認します。

    # cd
  2. スクリプトをダウンロードします。

    # curl -O http://satellite.example.com/pub/bootstrap.py

    これにより、スクリプトが現行ディレクトリーにインストールされます。

  3. スクリプトを実行可能にします。

    # chmod +x bootstrap.py
  4. スクリプトが実行できることを確認するには、以下のように使用ステートメントを表示します。

    # ./bootstrap.py -h
  5. 移行プロセスが完了したら、スクリプトを削除できます。

    # cd
    # rm bootstrap.py

3.3.2. Red Hat Enterprise Linux 6 システムの移行

Red Hat Enterprise Linux 6 システムの移行

  1. ご使用の環境に適した値を使用して、以下のようにブートストラップコマンドを出力します。

    --server オプションの場合は、Satellite Server または Capsule Server の FQDN 名を指定します。--location--organization、および --hostgroup の場合は、オプションへの引数として、ラベルではなく引用符で囲まれた名前を使用します。

    # bootstrap.py --login=admin \
    --server satellite6.example.com \
    --location="Example Location" \
    --organization="Example Organization" \
    --hostgroup="Example Host Group" \
    --activationkey=activation_key

    スクリプトは、--login オプションを使用して入力した Satellite ユーザー名に対応するパスワードの入力を求めるプロンプトを出します。

  2. スクリプトが実行し、進捗の通知が stdout に送信されます。以下のような出力で、Puppet 証明書の承認を求めるプロンプトを出しているのを確認します。

    [NOTIFICATION], [2016-04-26 10:16:00], [Visit the UI and approve this certificate via Infrastructure->Capsules]
    [NOTIFICATION], [2016-04-26 10:16:00], [if auto-signing is disabled]
    [RUNNING], [2016-04-26 10:16:00], [/usr/bin/puppet agent --test --noop --tags no_such_tag --waitforcert 10]
  3. クライアントは、管理者が Puppet 証明書を承認するまで待機します。以下のように Puppet 証明書に署名します。

    1. Web UI で、インフラストラクチャー > Capsules に移動します。
    2. --server オプションで指定した FQDN に対応する Capsule 名の右側にある 証明書 を選択します。
    3. アクション コラムで、署名 を選択して、クライアントの Puppet 証明書を承認します。
    4. クライアントに戻り、残りのブートストラップ処理が完了するのを確認します。
  4. Web UI で ホスト > すべてのホスト に移動して、そのクライアントが、適切なホストグループに接続していることを確認します。

ブートストラップスクリプトの使用方法は『ホストの管理』の「ブートストラップスクリプトを使用したホストの Red Hat Satellite への登録」を参照してください。

3.4. 使用しなくなった Satellite 5 Server のリタイア

本セクションでは、Red Hat Satellite 5 Server から新しい Satellite 6 Server に完全に移行し、必要なくなった以前の Satellite 5 Server をリタイアする方法を説明します。Satellite 5 から新しい RHSM システムに移行した場合は「新しい Satellite 6 へのサブスクリプションの移行」に進んでください。

Satellite 5 を新規の RHSM システムに移行していない場合は、『コンテンツ管理ガイド』の「サブスクリプションの管理」の説明に従ってマニフェストを新規作成し、新しい Satellite 6 に追加します。オプションで、以下の Python スクリプトを実行して、以前の Satellite のプロファイルを RHN から削除します。

#!/usr/bin/env python

import getpass
import os
import sys
import libxml2
import xmlrpclib
from optparse import OptionParser

DEFAULT_SERVERFQDN="xmlrpc.rhn.redhat.com"
parser = OptionParser()
parser.add_option("-l", "--login", dest="login", help="Login user for RHN Satellite/Hosted", metavar="LOGIN")
parser.add_option("-p", "--password", dest="password", help="Password for specified user. Will prompt if omitted", metavar="PASSWORD")
parser.add_option("-s", "--server", dest="serverfqdn", help="FQDN of satellite server - omit https:// (default: %s)" % DEFAULT_SERVERFQDN, metavar="SERVERFQDN", default=DEFAULT_SERVERFQDN)
(options, args) = parser.parse_args()

if not options.login:
    print "Must specify login option.  See usage:"
    parser.print_help()
    print "\nExample usage: ./decommissionServer.py -l admin -p password"
    sys.exit(1)
else:
    login = options.login
    password = options.password
    serverfqdn = options.serverfqdn

if not password: password = getpass.getpass("%s's password:" % login)

SATELLITE_URL = "https://%s/rpc/api" % serverfqdn
SATELLITE_LOGIN = login
SATELLITE_PASSWORD = password
SYSTEMID_FILE = "/etc/sysconfig/rhn/systemid"

# Check For root
# Have to be root to open the SYSTEMID_FILE which is chmod'd 0600
if os.getuid() != 0:
    print "This script requires root-level access to run."
    sys.exit(1)

# Log into Satellite and get an authentication token
client = xmlrpclib.Server(SATELLITE_URL, verbose=0)
key = client.auth.login(SATELLITE_LOGIN, SATELLITE_PASSWORD)

# Parse /etc/sysconfig/rhn/systemid to ge the system ID
# Use the systemid and delete the systems RHN profile
parsed_file = libxml2.parseDoc(file(SYSTEMID_FILE).read())
systemid = parsed_file.xpathEval('string(//member[* ="system_id"]/value/string)').split('-')[1]
print systemid
try:
    client.system.deleteSystems(key,int(systemid))
    print "The system with SystemID " + systemid + " was successfully deleted"
except xmlrpclib.Fault, e:
    print "XMLRPC fault \n\t%s" % e

# Logout of Satellite
client.auth.logout(key)

3.4.1. 新しい Satellite 6 へのサブスクリプションの移行

本セクションは、使用していた Satellite 5 Server から新しい Satellite 6 Server へサブスクリプションを移行する方法を説明します。

  1. 新しいサブスクリプションを設定します。

    1. カスタマーポータル にログインし、サブスクリプション に移動します。
    2. インベントリー に移動して Satellite 組織 をクリックします。
    3. 移行する Satellite 5 Server の名前の左側にあるチェックボックスを選択し、選択した項目を削除 をクリックします。警告ボックスが表示されるので 削除 をクリックしてユニットを削除します。
    4. 新しい Satellite 6 Server の名前をクリックし、移行サブスクリプション名の左側にあるチェックボックスを選択します。選択項目の削除 をクリックします。警告ボックスが表示されるので、削除 をクリックしてサブスクリプションを削除します。
    5. サブスクリプションのアタッチ をクリックし、適切な Satellite サブスクリプションを選択し、選択項目のアタッチ をクリックします。
    6. 新しい Satellite 6 Server で以下のコマンドを実行し、サブスクリプションマネージャーを更新します。

      # subscription-manager refresh
  2. 新しい Satellite 6 Server でリポジトリーを有効にします。

    1. 移行する Satellite 5 Server で、以下のコマンドを使用して、有効にしたチャンネルを表示します。

      # spacewalk-channel -l
    2. 新しい Satellite 6 Server で、以下のコマンドを使用して、組織で有効になっているリポジトリーを一覧表示します。

      # hammer product list --organization "organization_name"
    3. 新しい Satellite 6 Server で、必要なリポジトリーがすべて有効になるように設定します。

      Web UI をご利用の場合

      Content → Red Hat Repositories に移動して、有効にするリポジトリーを選択します。

      CLI をご利用の場合

      名前または ID 番号を使用してリポジトリーを有効にします。任意で、リリース番号とベースアーキテクチャーを追加できます。

      # hammer repository-set enable \
      --product "product_name" \
      --name "repository_name" \
      --organization "org_name" \
      --releasever "" \
      --basearch "x86_64"