パッケージを使用してSwarmのインストールと構成を行う

Helix Swarmには、2つのディストリビューションパッケージフォーマットがあります。1つは、Ubuntuシステム用のDebian (.deb)パッケージで、もう1つは、CentOS and RedHat Enterprise Linux (RHEL)用のRPM閉じた RPMパッケージマネージャ。Red Hat Enterprise Linux、Fedora Project、CentOS ProjectといったLinuxディストリビューションのインストール、更新、ソフトウェアパッケージの削除を管理するためのツールおよびパッケージフォーマットです。 (.rpm)パッケージです。

パッケージを管理するツールでは各パッケージの依存関係が考慮されるため、ディストリビューションパッケージを使用すると、ソフトウェアのインストール、更新、削除を 簡単に行うことができます。

重要

Swarmでは、P4AUTHを使用するように設定されているHelixサーバはサポートされていません。詳しくは、『Helix Coreサーバ管理者ガイド』の「集中認証サーバ(P4AUTH)」を参照してください。

注意

Swarmパッケージは、Ubuntu 18.04 LTS、Ubuntu 20.04 LTS、CentOS/RHEL 7、CentOS/RHEL 8で使用することができます。

  • CentOS: 最新リリースを使用することをお勧めします。このリリースのSwarmに対応する最新リリースは、7.9と8.3です。

  • RHEL: 動作が安定している最新リリースを使用することをお勧めします。このリリースのSwarmに対応する最新リリースは、7.9と8.2です。

Swarmパッケージはその他の対応ディストリビューションパッケージ上でも機能しますが、テストは行っていません。

注意
  • Helix Coreサーバ」という擁護は、Helixサーバ マシン(P4D)、プロキシ、ブローカ、レプリカ、エッジサーバ、コミットサーバを指す場合があります。 説明を簡単にするため、「Helixサーバ 」という用語は、Helix Coreサーバマシンのすべての構成を表す目的で使用するものとします。
  • Swarmは、Helixサーバ(P4D)とコミットサーバに接続することができます。
  • 複数のHelixサーバ (P4D)に接続できるようにSwarmを設定する方法については、「複数のHelixサーバインスタンス」を参照してください。

    コミットエッジアーキテクチャ用に設定されているHelixサーバに接続するようにSwarmを設定する方法については、「コミットエッジの展開」を参照してください。

  • Swarmを、Helixブローカ、Helixプロキシ、Helixエッジサーバ、転送レプリカ、読み取り専用レプリカサーバに接続しないでください。

インストール

重要
  • Swarmをインストールする前に、ランタイム依存関係を確認する必要があります。詳細については、「ランタイム依存関係」を参照してください。

  • Swarmをアップグレードする前に、PHPの要件を確認してください。詳細については、「PHP」」を参照してください。

  • Swarmをインストールする前に、Helixサーバの要件を確認してください。詳細については、「Helix Coreサーバの要件」を参照してください。
  1. SwarmをホストするサーバとHelix Coreサーバをホストするサーバ上で、Perforceパッケージのリポジトリを構成します。

    重要

    Helix Coreサーバをホストするサーバでパッケージを使用できない場合は(Windowsが稼働しているサーバなど)、この手順をスキップしてください。

    rootユーザとして、以下に示す各OSディストリビューションで操作を実行します。

  2. SwarmをホストするサーバとHelix Coreサーバをホストするサーバで、Perforceパッケージの署名キーをインポートします。

    重要

    Helixサーバをホストするサーバでパッケージを使用できない場合は(Windowsが稼働しているサーバなど)、この手順をスキップしてください。

    以下に示す各OSディストリビューションで操作を実行します。

    署名キーの妥当性を確認する方法については、https://www.perforce.com/perforce-packagesを参照してください。

  3. SwarmをホストするサーバにメインのSwarmパッケージをインストールします。

    以下に示す各OSディストリビューションで操作を実行します。

  4. Helix CoreサーバをホストするサーバにSwarmのトリガパッケージをインストールします。

    このパッケージのインストール先となるサーバ(Helix Coreサーバをホストしているサーバ)は、Swarmをホストしているサーバの場合もあれば、ネットワーク上に存在する別のサーバの場合もあります。

    重要

    Helixサーバをホストするサーバでパッケージを使用できない場合は(Windowsが稼働しているサーバなど)、適切なSwarmトリガスクリプトを/opt/perforce/swarm/p4-bin/scriptsからコピーして、Helixサーバをホストするサーバに保存する必要があります。swarm-trigger.plは、LinuxシステムとWindowsシステムの両方で使用することができます。コピーが完了したら、トリガスクリプトを構成する必要があります。詳細については、「Swarm用のHelix Coreサーバの構成」を参照してください。

    以下に示す各OSディストリビューションで操作を実行します。

    重要

    このパッケージをインストールすると、構成ファイルが/opt/perforce/etc/swarm-trigger.conf にインストールされますが、この構成ファイルを編集する必要があります。このファイルの設定方法については、「Swarm用のHelix Coreサーバの構成」を参照してください。

  5. 任意指定: SwarmをホストするサーバにSwarmオプションパッケージをインストールします。

    この手順は必須ではありませんが、このオプションパッケージをインストールすると、ImageMagickモジュールとLibreOffice Swarmモジュールで必要な依存関係がインストールされます。これらのモジュールを使用すると、各種の画像や社内文書のプレビューを表示することができます。

    以下に示す各OSディストリビューションで操作を実行します。

  6. インストール後の設定手順を実行します。

インストール後の設定

重要

CentOS/RHELの場合のみ:

  • Swarm 2019.1~2020.1: これらのバージョンのSwarmでは、CentOS/RHEL 7用のSCLリポジトリのPHPパッケージが使用されていました。これは、CentOS/RHELの標準バージョンよりも新しいバージョンのPHPにアクセスできるようにするためです。この場合、Apache用のhttpd24-httpdパッケージを使用する必要がありました。必要なパッケージは、すべて/opt/rhにインストールされていました。

    Swarm 2020.2: このバージョンのSwarmでは、CentOS/RHEL 7と8用のRemiリポジトリが使用されます。これにより、標準のファイルシステム構造にPHP7.4がインストールされます。そのため、Apache用の旧バージョンのhttpd24-httpdが必要なくなり、標準システムバージョンのApacheが再度使用されることになりました。

    バージョン2019.1から2020.1までのSwarmでは、以下の場所にSCL Apacheサイト構成ファイルがインストールされていました。

    /opt/rh/httpd24/root/etc/httpd/conf.d/perforce-swarm-site.conf

    この構成ファイルが存在する状態でSwarmをバージョン2020.2にアップグレードすると、この構成ファイルが/etc/httpd/conf.d/perforce-swarm-site.confディレクトリにコピーされます(このディレクトリ内にファイルが存在しない場合)。また、このファイルが上書きされ、参照先が/var/log/httpd24から/var/log/httpdに変更されます。

    Swarm用のサイト構成ファイルが/etc/httpdディレクトリ内に既に存在する場合、構成ファイルのコピー操作と上書き操作は実行されません。

    アップグレードが完了すると、httpd24-httpdが無効になります。

  • Apacheサーバの起動時にApache HTTPサーバのLinuxテストページが表示されないようにするには、/etc/httpd/conf.d/ディレクトリのwelcome.confファイルの内容をコメント化します。

  • Apacheサーバの起動時に、Swarmの構成情報の代わりにApache HTTPサーバのサンプル構成情報が読み込まれないようにするため、/etc/httpd/conf.d/ディレクトリ内のautoindex.confファイルの名前をz-autoindex.confなどに変更してください。この処理が必要になる理由は、/etc/httpd/conf.d/ディレクトリ内で最初に見つかった構成ファイル(アルファベット順)がApacheによって実行されないようにする必要があるためです。実行する必要があるのは、perforce-swarm-site.confファイルです。

helix-swarmパッケージをインストールしたら、追加の設定を行う必要があります。以下の手順を実行します。

  1. Swarmをホストするサーバで、Swarm設定スクリプトを使用してSwarmのセットアップを行います。

    重要

    HelixサーバHelix認証サービス用に設定されている場合は、Helixサーバへの接続の確立時にパスワードへのフォールバックを許可するよう、Helixサーバを一時的に構成する必要があります。Helixサーバで以下のコマンドを実行して、パスワードへのフォールバックを有効にします。

    p4 configure set auth.sso.allow.passwd=1

    注意

    Swarm設定スクリプトは、いくつかの方法で使用することができます。ここでは、対話式インストールによる最も単純な設定方法について説明します。以下のコマンドを実行すると、オプションを確認することができます。

    sudo /opt/perforce/swarm/sbin/configure-swarm.sh -h

    以下のコマンドを使用して、対話式インストールを実行します。

    sudo /opt/perforce/swarm/sbin/configure-swarm.sh

    設定スクリプトにより、以下のサマリ情報が表示されます。

    ------------------------------------------------------------
    configure-swarm.sh: Thu Aug 23 11:29:49 PDT 2018: commencing configuration of Swarm
    Summary of arguments passed:
    Interactive? [yes]
    Force? [no]
    P4PORT [(not specified)]
    Swarm user [(not specified, will suggest swarm)]
    Swarm password [(not specified)]
    Email host [(not specified)]
    Swarm host [(not specified, will suggest myhost)]
    Swarm port [80]
    Swarm base URL [(default (empty))]
    Create Swarm user? [no]
    Super user [(not specified)] * not needed
    Super password [(not specified)] * not needed
  2. 構成スクリプトの情報を指定します。

    サマリ情報の下に、以下の情報を指定するためのプロンプトが表示されます。

    1. フォーム内のP4PORTの値を指定します: my-helix-core-server:1666

      No P4PORT specified

      Swarm requires a connection to a Helix Core Server. Please supply the P4PORT to connect to.

      Helix Core Server address (P4PORT):

      Helixサーバのホスト名とポートを指定します。P4PORTの値が指定されている場合は、その値がデフォルト値として使用されます。設定スクリプトにより、ホストに接続できるかどうかが検証されます。

      -response: [myp4host:1666]
      
      Checking P4PORT [myp4host:1666]...
      -P4 command line to use: [/opt/perforce/bin/p4 -p myp4host:1666]
      Attempting connection to [myp4host:1666]...
      -connection successful:
      Server address: myp4host:1666
      Server version: P4D/LINUX26X86_64/2017.2/1622831 (2017/10/24)
      Server license: 10000 users (support ends 2019/05/16)
      Server license-ip: 192.168.0.1
      重要

      コミットエッジアーキテクチャを使用してHelix Coreサーバを展開した場合は、Swarmのポート値がコミットサーバを指していることを確認してください。

      詳細については、『Helix Coreサーバ管理者ガイド』の「コミットエッジ」の章を参照してください。

    2. Helix Coreサーバで、adminレベルの権限を持つ標準ユーザのユーザIDとパスワードを指定します。

      Checking Swarm user credentials...
      No Swarm user specified
      Swarm requires a Helix user account with 'admin' rights.
      Please provide a username and password for this account.
      If this account does not have 'admin' rights, it will
      be set for this user.
      Helix username for the Swarm user [swarm]:

      ユーザIDを入力します。デフォルト値は「swarm」です。

      注意

      Helixサーバのユーザアカウントにsuper権限が設定されている場合、別のユーザが作成したレビューがコミットされると、superユーザはそのレビューをクリーンアップすることができます。詳細については、「レビューのクリーンアップ」を参照してください。

      -response: [swarm]

      Helix password or login ticket for the Swarm user (typing hidden):

      ユーザIDに対応するログインチケット(パスワード)を入力します。

      重要

      HelixサーバHelix認証サービス用に設定されている場合は、Swarmユーザに対して長期間のログインチケットを使用する必要があります。

      注意

      別のシェルで以下のコマンドを実行すると、ログインチケットを取得することができます。

      $ p4 -p myp4host:1666 -u userid login -p

      1年未満で期限切れになるログインチケットを入力すると、警告が表示されます。

      Checking Swarm user credentials...
      -checking if user [swarm] exists in [myp4host:1666]...
      -user exists
      Obtaining Helix login ticket for [swarm] in [myp4host:1666]...
      -login ticket obtained
      Checking user [swarm]'s ticket against [myp4host:1666]...
      -login ticket is good
      Checking user [swarm] has at least access level [admin]...
      -user has maximum access level [admin]
      -user meets minimum access level [admin]
    3. Swarm UI のホスト名を指定します。

      Swarm needs a distinct hostname that users can enter into their browsers to
      access Swarm. Ideally, this is a fully-qualified domain name, e.g.
      'swarm.company.com', but it can be just a hostname, e.g. 'swarm'.

      Whatever hostname you provide should be Swarm-specific and not shared with
      any other web service on this host.

      Note that the hostname you specify typically requires configuration in your
      network's DNS service. If you are merely testing Swarm, you can add a
      hostname->IP mapping entry to your computer's hosts configuration.

      Hostname for this Swarm server [myhost]:
      注意

      現在のホスト名がデフォルト値になります。この時点ではDNS設定はまだ存在していないため、指定したホスト名が実際に機能するかどうかについて、設定スクリプトで検証されることはありません。

    4. メールリレーホストを指定します。

      Swarm requires an mail relay host to send email notifications.

      Mail relay host (e.g.: mx.yourdomain.com):
      注意

      指定したメールリレーホストが実際にSMTP接続を許可するかどうかについて、設定スクリプトで検証されることはありません。

      これらの情報を指定すると、設定スクリプトによって以下の手順が実行されます(インストールされているPHPとApacheのバージョンにより、一部の手順が異なる場合があります)。

      Configuring Cron...
      `/opt/perforce/etc/swarm-cron-hosts.conf.new' -> `/opt/perforce/etc/swarm-cron-hosts.conf'
      -updated cron configuration file with supplied Swarm host
      Configuring Swarm installation...
      -composed new Swarm config file contents
      `/opt/perforce/swarm/data/config.php.new' -> `/opt/perforce/swarm/data/config.php'
      -wrote new Swarm config file to reflect new configuration
      -identified Apache user:group: [www-data:www-data]
      -setting permissions on the Swarm data directory...
      -ensured file permissions are set properly
      Configuring Apache...
      -identified Swarm virtual host config file: [/etc/apache2/sites-available/perforce-swarm-site.conf]
      -identified Apache log directory: [/var/log/apache2]
      -updated the vhost file to set Apache log directory
      -updated the vhost file to reflect Swarm host
      -checking Apache modules...
      Enabling module rewrite.
      Module php7 already enabled
      To activate the new configuration, you need to run:
        service apache2 restart
      -proper Apache modules are enabled
      -enabling Swarm Apache site...
      Enabling site perforce-swarm-site.conf.
      To activate the new configuration, you need to run:
        service apache2 reload
      -Swarm Apache site enabled
      -restarting Apache...
      -Apache restarted
      configure-swarm.sh: Thu Aug 23 11:31:36 PDT 2018: completed configuration of Helix Swarm
      
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      ::
      ::  Swarm is now configured and available at:
      ::
      ::      http://myhost/
      ::
      ::  You may login as the Swarm user [swarm] using the password
      ::  you specified.
      ::
      ::  Please ensure you install the following package on the server
      ::  hosting your Helix Core Server.
      ::
      ::      helix-swarm-triggers
      ::
      ::  (If your Helix Core Server is hosted on an OS and
      ::  platform that is not compatible with the above package, you can
      ::  also install the trigger script manually.)
      ::
      ::  You will need to configure the triggers, as covered in the Swarm
      ::  documentation:
      ::
      ::  http://www.perforce.com/perforce/doc.current/manuals/swarm/setup.perforce.html
      ::
      ::  Documentation for optional post-install configuration, such as
      ::  configuring Swarm to use HTTPS, operate in a sub-folder, or on a
      ::  custom port, is available:
      ::
      ::  https://www.perforce.com/perforce/doc.current/manuals/swarm/setup.post.html
      ::
      ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      注意

      他のWebサービスを提供しないホストにSwarmをインストールした場合は、Apacheのデフォルトのサイト設定を無効にすることをお勧めします。デフォルト設定を無効にすることにより、SwarmをホストするWebサーバにアクセスするためのホスト名でどのような値を指定しても、Swarmが表示されるようになります。

      Apacheのデフォルトのサイト設定を無効にすると、既存のWebサービスやコンテンツも無効になる可能性があることに注意してください。

      Ubuntuホスト上で以下のコマンドを実行するだけで、Apacheのデフォルトサイト設定を無効にすることができます。次のコマンドを実行します。

      $ sudo a2dissite 000-default

      CentOSホストまたは非標準のApacheインストール環境の場合、Apache構成を手動で変更する必要があります。手動で変更を行うには、Apache構成を詳しく理解している必要があります。詳細については、https://httpd.apache.org/docs/2.4/configuring.htmlを参照してください。

  3. CentOS/RHELの場合のみ: Swarmに対して、CentOS/RHEL上のSELinuxを構成します。詳細については、CentOS/RHEL上のSELinuxの構成」を参照してください。

  4. これで、Swarmの基本的な構成が完了しました。

    重要

    HelixサーバHelix認証サービス用に設定されている場合は、すべてのユーザにIDプロバイダ(IdP)を使用した認証を強制するには、パスワードへのフォールバックを無効にします。Helixサーバでパスワードへのフォールバックを無効にするには、以下のコマンドを実行します。

    p4 configure set auth.sso.allow.passwd=0

  5. トリガトークンを確立します。詳しくは、「トリガトークンを確立する」を参照してください。

CentOS/RHEL上のSELinuxの構成

Swarmでは、CentOS/RHEL 7とCentOS/RHEL 8のSELinuxがサポートされています。SELinuxは、Linuxディストリビューションのセキュリティを強化する高度なアクセス制御メカニズムです。

SELinuxは、以下の示す3つのモードのいずれかで動作します。

  • enforcing: このモードの場合、定義されているセキュリティポリシーと一致しない操作がブロックされ、ログに記録されます。これが、SELinuxのデフォルトモードです。
  • permissive: このモードの場合、定義されているセキュリティポリシーと一致しない操作がログに記録されますが、ブロックされることはありません。
  • disabled: このモードの場合、SELinuxがオフになり、操作がブロックされることもログに記録されることもありません。

SELinuxとSwarmを正しく連携させるには、以下の設定手順に従い、SELinuxを有効にする必要があります。

注意

SELinuxの設定を行う前に、Helix Swarmパッケージのインストール手順とインストール後の設定手順を実行する必要があります。

SELinuxをenforcingモードに設定する

rootユーザとして、以下のコマンドを実行します。

  1. semanage構成ツールが含まれているパッケージをインストールします。このツールを使用してSELinuxが構成されます。
  2. 以下に示す各OSディストリビューションで操作を実行します。

    • CentOS/RHEL 7: policycoreutils-pythonパッケージをインストールします。
    • root $ yum install policycoreutils-python

    • CentOS/RHEL 8: policycoreutils-python-utilsパッケージをインストールします。
    • root $ yum install policycoreutils-python-utils

  3. 以下のコマンドを実行して、SELinuxの現在のモードを確認します。
  4. root $ getenforce

  5. SELinuxの現在のモード(enforcingpermissive、またはdisabled)が表示されます。
    1. モードが正しく設定されていない場合は、viエディタなどを使用して/etc/selinux/configファイルを編集します。
    2. root $ vi /etc/selinux/config

    3. 上記のconfigファイルで、SELinux=enforcing に設定します。
    4. configファイルを保存します。
    5. サーバを再起動して、SELinuxのモードを変更します。
  6. httpdプロセスによる/opt/perforce/swarmの内容の読み取りと書き込みを許可します。
  7. root $ semanage fcontext -a -t httpd_sys_rw_content_t "/opt/perforce/swarm(/.*)?"
    root $ restorecon -R /opt/perforce/swarm
  8. httpdプロセスがP4DやRedisなどのネットワークサービスに接続できるようにします。
  9. root $ setsebool -P httpd_can_network_connect 1

  10. p4-bin内のファイルをhttpdプロセスで実行できるようにします。
  11. root $ semanage fcontext -a -t httpd_sys_script_exec_t '/opt/perforce/swarm/p4-bin(/.*)?'
    root $ restorecon -R -v /opt/perforce/swarm/p4-bin			
  12. Redisの実行に関する制約事項を削除し、systemdで起動できるようにします。
  13. root $ semanage fcontext -a -t bin_t /opt/perforce/swarm/sbin/redis-server-swarm
    root $ restorecon -v /opt/perforce/swarm/sbin/redis-server-swarm		

  14. 以下のコマンドを実行して、サーバを再起動します。
  15. root $ systemctl restart httpd

  16. Swarmにログインできるかどうかを確認します。
  17. 任意: ファイルシステムのラベルを変更します。ラベルを変更する前に、以下の注意事項を確認してください。
  18. 重要

    ファイルシステムのラベル変更処理には、時間がかかる場合があります。必要な場合にのみ実行することをお勧めします。時間がかかるかどうかは、SELinuxの設定内容によって異なります。Perforceは、ラベルの変更処理にかかる時間ついてアドバイスすることはできません。

    root $ touch /.autorelabel

  19. サーバを再起動します。
  20. Swarmにログインできるかどうかを確認します。
  21. これで、SELinuxがSwarm用に設定されました。
注意

Swarmにログインできない場合は、設定が正しくないことが原因で、SELinuxによってSwarmがブロックされている可能性があります。その場合は、SELinuxの設定に関するトラブルシューティングを実行して、問題の原因を調べる必要があります。

以下のコマンドを実行して、setroubleshootパッケージをインストールしてください。このパッケージには、SELinuxのトラブルシューティングで使用されるsealert が含まれています。

root $ yum install setroubleshoot

sealert を使用すると、audit.logのコンテンツを解釈することができます。以下のコマンドを実行します。

root $ sealert -a /var/log/audit/audit.log

エラーメッセージ: 以下のようなエラーメッセージが表示された場合は、仮想マシン(VM)上でCentOS/RHELが稼働している可能性があります。

root $ SELinux is preventing /usr/sbin/ldconfig from write access on the directory etc.

その場合は、以下のコマンドを実行してVMにopen-vm-toolsをインストールし、VMを再起動してください。

root $ yum install open-vm-tools

SELinuxのpermissiveモードまたはdisabledモードを設定する

rootユーザとして、以下のコマンドを実行します。

  1. 以下のコマンドを実行して、SELinuxの現在のモードを確認します。
  2. root $ getenforce

  3. SELinuxの現在のモード(enforcingpermissive、またはdisabled)が表示されます。
    1. モードが正しく設定されていない場合は、viエディタなどを使用して/etc/selinux/configファイルを編集します。
    2. root $ vi /etc/selinux/config

    3. 上記のconfigファイルで、SELinux=permissive またはdisabled に設定します。
    4. configファイルを保存します。
    5. サーバを再起動して、SELinuxのモードを変更します。
  4. Swarmにログインできるかどうかを確認します。
  5. これで、SELinuxがSwarm用に設定されました。

アップグレード

詳しくは、「Swarmパッケージのインストール環境のアップグレード」を参照してください。

アンインストール

  1. SwarmのトリガをHelixサーバから削除します。
  2. HelixサーバをホストするサーバからSwarmのトリガスクリプトを削除します。

    重要

    Helixサーバをホストするサーバでパッケージを使用できないなどの理由で(Windowsの場合など)トリガスクリプトを手動でインストールした場合は、トリガスクリプトを手動で削除する必要があります。

    以下に示すOSディストリビューションで操作を実行します。以下の例では、同じサーバにすべてのパッケージがインストールされていることが前提となっています。