第3章 Puppet のアップグレード

Red Hat Satellite 6.3 はデフォルトで Puppet 3 を使用しますが、Puppet 4 にアップグレードすることもできます。Satellite 6.4 では Puppet 5 だけがサポートされます。Puppet 5 へのマイグレーションパスは、Puppet 4 から Puppet 5 へのマイグレーションだけがサポートされます。したがって、バージョン 4 以前の Puppet を使用している場合は、Puppet 4 にアップグレードしてから Satellite 6.4 にアップグレードする必要があります。Satellite 6.3 には、Puppet 4 へのアップグレードパスが含まれているため、Satellite 6.3 で Puppet 4 を行ってから次のステップに進むことを Red Hat は推奨しています。本章では、Puppet 4 へのアップグレードプロセスを説明します。

3.1. アップグレードパス

Puppet をアップグレードする前に、Puppet モジュールが Puppet 4 と互換性があるのを確認してから、Puppet モジュールを変更します。たとえば、Puppet エージェントを実行した後に、クライアントに空白の設定があると、Puppet モジュールのアップデートが指定されます。

Red Hat Satellite と Capsule を、同時に Puppet 4 にアップグレードする必要はありません。Puppet モジュールのアップグレードおよびテストに伴い、Capsules をアップグレードすることができます。もしくは、新しい Capsule をインストールして、テストをしてからホストを移動することもできます。Satellite web UI、Hammer CLI、または bootstrap スクリプトを使用して、Puppet 3 Capsule から Puppet 4 Capsule へホストを移動できます。

また、アップグレードした Puppet モジュールの最終テストに使用するために、既存の Capsule のクローンを作成することが推奨されます。リポジトリーのサイズによっては、既存の Capsule のクローンを作成するのに時間がかかります。

完全に機能させるには、ホストに Puppet 4 エージェントを使用する必要がありますが、Capsule を Puppet 4 にアップグレードしてから、ホストを Puppet 4 エージェントにアップデートする必要があります。

ホストのプロビジョニング時に、Puppet 3 エージェントの代わりに Puppet 4 エージェントをインストールするように Satellite を設定できます。キックスタートのテンプレートファイルに enable-puppet4 パラメーターを追加します。true に設定すると、プロビジョニングテンプレートが Puppet 4 エージェントをインストールして、/etc/puppetlabs/puppet/puppet.conf を設定します。パラメーターを定義しないと、Puppet 3 エージェントがインストールされます。

ホストで強制的に Puppet 4 を使用するには、ホストグループレベルで enable-puppet4 パラメーターを作成し、値を true に設定します。

3.2. Puppet モジュールのテスト

アップグレードを行う前に、以下のガイドラインに沿って Puppet モジュールをテストします。

  1. Puppet モジュールは、最初に、Satellite に接続していないワークステーションでテストします。
  2. puppet parser validate コマンドを実行して、コマンドの構文を確認します。
  3. Puppet 3 を実行している Satellite Capsule で、将来のパーサーを使用するように設定し、再度テストします。この機能を有効にするには、--puppet-server-parser future オプションで Satellite インストーラーを実行します。

Puppet 3.8 における将来のパーサーは、Puppet 4.0 で使用している Puppet 言語と同一の機能を有効にします。それを有効にしたあと、/var/log/puppet/ ログでエラーを確認します。エラーを見つけたら修正して、再度テストします。将来のパーサーの情報は「Puppet 3.8 Reference Manual」を参照してください。

3.3. アップグレードの実行

ここでは、Satellite または Capsule を Puppet 4 にアップグレードする方法を説明します。新規にインストールする場合は『Red Hat Satellite インストールガイド』を参照してください。

作業を行う前に

  • Satellite 6.3 へのアップグレードが完了したことを確認します。
  • Puppet モジュールを確認して、必要に応じて Puppet 4 にアップグレードします。
  • バージョン 4 ではなく、最新の Puppet 3 エージェントにアップグレードするシステムにすべてのホストを接続していることを確認します。ホストを Puppet 4 エージェントにアップグレードしてから、Capsule をアップグレードしてください。Satellite Tools リポジトリーは Puppet パッケージを提供します。詳細は「Satellite クライアントのアップグレード」を参照してください。
  • システムのバックアップ、またはスナップショットを作成します。詳細は『Red Hat Satellite の管理』「Satellite Server および Capsule Server のバックアップと復元」を作成します。

Satellite または Capsule の Puppet 4 へのアップデート

  1. Puppet 4 リポジトリーを有効にします。

    1. Satellite で、以下のコマンドを使用します。

      # subscription-manager repos \
      --enable=rhel-7-server-satellite-6.3-puppet4-rpms
    2. Capsule で、以下のコマンドを使用します。

      # subscription-manager repos \
      --enable=rhel-7-server-satellite-capsule-6.3-puppet4-rpms
  2. Puppet をアップグレードします。

    # satellite-installer --upgrade-puppet

ホストの Puppet 4 へのアップグレード

ホストをアップグレードする Puppet リポジトリーは、Red Hat リリースまたはプラットフォームによって異なります。アーキテクチャーによって異なる場合もあります。

  • Puppet 4 リポジトリーは、デスクトップ、サーバー、およびワークステーションから以下を取得します。

    rhel-X-platform-satellite-tools-6.3-puppet4-rpms

    ここで、X は使用してるメジャーリリースのバージョンで、platformdesktopserver、または workstation になります。

  • Puppet 4 リポジトリーは、選択したアーキテクチャーから以下を取得します。

    rhel-X-for-architecture-satellite-tools-6.3-puppet4-rpms

    ここで、X はメジャーリリースのバージョン、architecture はたとえば armpowerhpc-node、または system-z になります。リポジトリーの中には、延長サポートが含まれているサブスクリプション向けのものもあります。たとえば、延長アップデートサポート (EUS) の場合は、アーキテクチャーの後に eus と続きます。

    延長サポートの種類については、Red Hat ナレッジベースの記事「Red Hat Enterprise Linux のサポートポリシーについてよく利用されるナレッジ」を参照してください。

  1. コンテンツホストで、Puppet 4 RPM リポジトリーを検索します。

    # subscription-manager repos |grep puppet4
  2. 以下のように、ホストに適切な Puppet 4 リポジトリーを有効にします。

    # subscription-manager repos \
    --enable=rhel-7-server-satellite-tools-6.3-puppet4-rpms
  3. すべてのパッケージをアップデートします。

    # yum update
  4. Red Hat Bugzilla 1517624 が解決するまでは、以下を実行してください。

    # cp -rp /var/lib/puppet/ssl /etc/puppetlabs/puppet/
    # cp /etc/puppet/puppet.conf.rpmsave /etc/puppetlabs/puppet/puppet.conf
    # sed -i 's|/var/lib/puppet|/opt/puppetlabs/puppet/cache|' /etc/puppetlabs/puppet/puppet.conf
    # sed -i 's|/var/log/puppet|/var/log/puppetlabs/puppet|' /etc/puppetlabs/puppet/puppet.conf
    # sed -i 's|/var/run/puppet|/var/run/puppetlabs|' /etc/puppetlabs/puppet/puppet.conf
    # sed -i 's|$vardir/ssl|/etc/puppetlabs/puppet/ssl|' /etc/puppetlabs/puppet/puppet.conf