Helix Swarm管理者ガイド (2020.1)

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

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

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

重要

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

注意

Swarmパッケージは、Ubuntu 16.04 LTS、Ubuntu 18.04 LTS、CentOS/RHEL 6、CentOS/RHEL 7で使用することができます。 Red Hatベースのディストリビューションパッケージの場合、これらのプラットフォームの最新サポート対象バージョンを使用することをお勧めします。 2020年7月時点での最新サポート対象バージョンは、CentOS/RHEL 6.10、CentOS 7.8、RHEL 7.6、RHEL 7.7、RHEL 7.8です。

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オプションパッケージをインストールします。

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

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

  6. CentOS/RHEL 6の場合の推奨事項: /etc/php.iniファイルの[Pcre]セクションに記述されている以下のパラメータの値を次のように変更してください。 この変更により、非常に長いコメントも表示できるようになります。

    • pcre.backtrack_limit = 1000000
    • pcre.recursion_limit = 10000
  7. インストール後の設定に記載されている手順を実行します。

インストール後の設定

重要

CentOS/RHELのみ:

  • Apache 2.4をSCLパッケージまたはRHSCLパッケージからインストールすると、Apacheの設定ファイルは、通常のインストール場所の/etcではなく/opt/rh/httpd24/root/etcにインストールされます。 つまり、通常のservicesystemctlapachectlコマンドを実行すると、正しくないサーバをコントロールすることになります。 Swarmが使用するApacheのバージョンを制御するには、以下のいずれかの操作を実行します。

    • CentOS/RHEL 6でSystem Vスクリプトを使用する場合: service httpd24-httpd restart
    • CentOS/RHEL 7でsystemdスクリプトを使用する場合: systemctl restart httpd24-httpd

    apachectlコマンドは引き続き存在しますが、/opt/rh/httpd24環境で実行する必要があります。 そのため、上記のいずれかのコマンドを代わりに使用することをお勧めします。

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

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

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

    重要

    HelixサーバHelix認証サービスまたはHelix SAML用に設定されている場合は、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認証サービスまたはHelix SAML用に設定されている場合は、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 7上のSELinuxをSwarm用に構成します。構成方法については、CentOS 7上のSELinuxの構成を参照してください。

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

    重要

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

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

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

CentOS 7上のSELinuxの構成

Swarmでは、CentOS 7上でSELinuxを使用することができます。 SELinuxは、Linuxディストリビューションのセキュリティを強化する高度なアクセス制御メカニズムです。

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

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

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

注意

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

CentOS 7上のSELinuxをenforcingモードに設定する

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

  1. 以下のコマンドを実行して、 policycoreutils-pythonパッケージをインストールします。このパッケージには、SELinuxの設定で使用されるsemanageが含まれています。
  2. root $ yum install policycoreutils-python

  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. 以下のコマンドを実行して、/opt/perforce/swarmディレクトリのコンテキストを定義し、このディレクトリ内のファイルのコンテキストをhttpd_sys_rw_content_tに設定します。
  7. root $ semanage fcontext -a -t httpd_sys_rw_content_t "/opt/perforce/swarm(/.*)?"
    root $ restorecon -R /opt/perforce/swarm
  8. 以下のコマンドを実行して、SELinuxのブール値をhttpd_can_network_connect 1に設定します。これにより、Swarmからp4dなどのサービスに接続できるようになります。
  9. root $ setsebool -P httpd_can_network_connect 1

  10. 以下のコマンドを実行して、/opt/perforce/swarm/p4-binディレクトリのコンテキストを定義し、このディレクトリ内のファイルのコンテキストをhttpd_sys_script_exec_tに設定します。
  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. 以下のコマンドを実行して、サーバを再起動します。
  13. root $ systemctl restart httpd24-httpd

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

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

    root $ touch /.autorelabel

  17. サーバを再起動します。
  18. Swarmにログインできるかどうかを確認します。
  19. これで、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 7が稼働している可能性があります。

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

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