このセクションの内容

はじめに

License Server には、次の 2 つのディストリビューションがあります。

どちらのディストリビューションにも、User Administration モジュール (pstsec) が含まれます。このモジュールを使用して Parasoft アプリケーションおよびライセンスへのアクセスを管理できます。

ホストの要件

License Server のホスト マシンは、以下のハードウェア要件を満たす必要があります。

セルフデプロイ形式のディストリビューションにはその他の要件はありません。

Web アーカイブ デプロイメントの要件

.war ディストリビューションをデプロイするには、以下の要件を満たす必要があります。

IP アドレスの形式

IPv4 および IPv6 アドレスがサポートされています。

License Server の構成

License Server のディストリビューションには、app ディレクトリと data ディレクトリがあります。この構成により、Docker などのコンテナー化されたシステムに License Server をデプロイする際の信頼性が高まります。  

セルフデプロイ形式の License Server のインストール

  1. インストール パッケージを任意の場所に展開します。<LS_INSTALL>/app ディレクトリには、JRE、Tomcat、サーバー起動スクリプトおよび停止スクリプトがあります。
  2. License Server を起動するには、管理者として startLS スクリプトを実行します。License Server はインストール パッケージ付属の Tomcat サーバーで実行されます。
  3. ブラウザーを開いて以下のいずれかの URL で License Server インターフェイスにアクセスします。
  4. デフォルトのユーザー名およびパスワード (admin/admin) を使用して License Server にログインします。ログイン後、デフォルトを変更することを推奨します。

License Server を停止するには、license-server ディレクトリにある stopLS スクリプトを実行します。

License Server Windows サービスのインストール

上記のとおりセルフデプロイ形式の License Server ディストリビューションをインストールするのに加えて、License Server の Windows サービスをインストールできます。

  1. 上記のセルフデプロイ形式の License Server ディストリビューションをインストールしたときに作成される <LS_INSTALL>/app ディレクトリに移動します。
  2. 管理者として installLSService スクリプトを実行します。

すると、<LS_INSTALL>/app ディレクトリに Windows Service Manager が使用する実行モジュールが作成され、ParasoftLicenseServerService という 新しい Windows サービスが構成されます。サービスの表示名は Parasoft License Server Service で、スタートアップの種類は「自動」です。その後、サービスが起動されます。

サービスを削除するには、<LS_INSTALL>/app ディレクトリにある uninstallLSService スクリプトを管理者として実行します。

カスタム Tomcat サーバーに License Server をデプロイする

Parasoft License Server は、Java 11 でテストおよび保証されています。Parasoft License Server をデプロイするには、カスタム Tomcat サーバーが Java 11 で実行されている必要があります。

ディストリビューション アーカイブを展開し、licenseserver.war および pstsec.war ファイルを <TOMCAT>/webapps ディレクトリにコピーします。Tomcat を開始するとアプリケーションがデプロイされます。

https://<host>:8443/licenseserver の License Server にアクセスし、デフォルトのユーザー名とパスワード (admin/admin) でログインします。ログイン後、デフォルトを変更することを推奨します。

https://<host>:8443/pstsec の User Administration にアクセスし、デフォルトのユーザー名とパスワード (admin/admin) でログインします。ログイン後、デフォルトを変更することを推奨します。

Tomcat コネクターの maxHttpHeaderSize 属性のデフォルト値が適切ではない場合があります。maxHttpHeaderSize に少なくとも 16384 (16 KB) を設定することを推奨します。

Docker への Licenser Server のデプロイ

Parasoft は、顧客の利便性のため、Docker Hub で公式の Docker イメージを公開しています。詳細なインストール手順は readme に記載されています。https://hub.docker.com/r/parasoft/lss を参照してください。

Kubernetes での Licenser Server のデプロイ

Kubernetes に Licenser Server をデプロイするには、次の手順を実行します。

このバージョンでは、Kubernetes に複数の Licenser Server をデプロイすることはサポートされていません。サポートは、単一ノードの Kubernetes クラスターで動作する License Server の単一インスタンスに限定されます。

要件

まず、Kubernetes クラスターが必要です。クラスターを開始したら、Licenser Server ポッドおよび関連リソースが必要とする名前空間、サービス アカウント、パーミッションを作成します。このために使用する yaml ファイルの例を以下に示します。

apiVersion: v1
kind: Namespace
metadata:
  name: parasoft-namespace
---
# Stable access for clients to license server
kind: Service
apiVersion: v1
metadata:
  name: parasoft-service
  namespace: parasoft-namespace
spec:
  selector:
    tag: parasoft-service
  ports:
    - name: https
      port: 443
      protocol: TCP
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: parasoft-account
  namespace: parasoft-namespace
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: parasoft-namespace-role
  namespace: parasoft-namespace
rules:
- apiGroups:
  - "*"
  resources:
  - "*"
  verbs:
  - "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: parasoft-namespace-bind
  namespace: parasoft-namespace
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: parasoft-namespace-role
subjects:
- kind: ServiceAccount
  name: parasoft-account
  namespace: parasoft-namespace

Licenser Server 環境を作成する前に、yaml ファイルを使用して必要な名前空間、サービス アカウント、パーミッションを作成します。

kubectl create -f parasoft-permissions.yaml

コンソールに以下のように表示されるはずです。

namespace/parasoft-namespace created
service/parasoft-service created
serviceaccount/parasoft-account created
role.rbac.authorization.k8s.io/parasoft-namespace-role created
rolebinding.rbac.authorization.k8s.io/parasoft-namespace-bind created

提供された設定に定義されている parasoft-namespace 名前空間は必須であり、parasoft-permissions.yaml を文書化されているとおりに使用することを推奨します。License Server Pod が使用するサービス アカウントは parasoft-namespace 名前空間へのアクセスを必要とします。そのため、提供された権限設定で定義されたリソースに対して異なる名前を持つカスタムの権限設定を作成する場合は、parasoft-namespace という名前の名前空間も作成する必要があります。この名前空間の要件が満たされていない場合、Licenser Server はインストールされているライセンスを無効として扱います。

カスタム キーストア

カスタム キーストアをセットアップするには、".keystore" および "server.xml" ファイル用のコンフィギュレーション マップを作成する必要があります。次のコマンドは、カスタム ".keystore" および "server.xml" ファイル用のファイル マッピングが記述された "keystore-cfgmap" というコンフィギュレーション マップを作成します。この例では、各ファイル マッピングにキーが割り当てられています。.keystore ファイル用の keystore と server.xml ファイル用の server-config です。ファイル マッピングごとにキーを割り当てることは必須ではありませんが、ファイル名をキーにしたくない場合は、このようにすると便利です。 

~$ kubectl create configmap keystore-cfgmap --from-file=keystore=/path/to/.keystore --from-file=server-config=/path/to/server.xml configmap/keystore-cfgmap created

License Server 環境の作成

License Server 環境を作成するには、まず、シークレット (任意)、ボリューム、ポッド、サービス (任意) を定義した yaml ファイルが必要です。シークレットは、リポジトリから License Server イメージを取得するために使用されます。ポッドは、データを永続化するボリュームとコンテナーの正常性を確認する liveness プローブを備えた License Server コンテナーをセットアップします。サービスは、ノードでポートを割り当て、ポッド内のポートにマッピングすることで、外部クライアントから License Server にアクセスできるようにします。下記は yaml ファイルのサンプル parasoft-lss.yaml です。このサンプルは NFS ボリュームを使用しますが、これは必須ではありません。ニーズに合わせたボリューム タイプを使用できます。

apiVersion: v1
kind: Pod
metadata:
  name: lss
  namespace: parasoft-namespace
  labels:
    app: LSS
spec:
  volumes:
    - name: lss-data
      nfs:
        server: NFS_SERVER_HOST
        path: /lss/
# Uncomment section below if you are setting up a custom keystore; you will also need to uncomment out the associated volumeMounts below
#   - name: keystore-cfgmap-volume
#     configMap:
#       name: keystore-cfgmap
  containers:
    - name: lss-server
      image: LSS_DOCKER_IMAGE
# To inject JVM arguments into the container, specify the "env" property as in the example below, which injects LSS_JAVA_OPTS
#     env:
#       - name: LSS_JAVA_OPTS
#         value: "-Dparasoft.use.license.v2=true"
      imagePullPolicy: Always
      ports:
        - containerPort: 8080
          name: "http-server"
        - containerPort: 8443
          name: "https-server"
      volumeMounts:
        - mountPath: "/usr/local/parasoft/license-server/data"
          name: lss-data
# Uncomment section below if you are setting up a custom keystore. Note that updates made to these files will not be reflected inside the container once it's been deployed; you will need to restart the container for it to contain any updates. 
#       - name: keystore-cfgmap-volume 
#         mountPath: "/usr/local/parasoft/license-server/tomcat/conf/.keystore" 
#         subPath: keystore 
#       - name: keystore-cfgmap-volume 
#         mountPath: "/usr/local/parasoft/license-server/tomcat/conf/server.xml" 
#         subPath: server-config 
# To prevent liveness probe failures on environments with low or overly taxed RAM/CPU, we recommend increasing the timeout seconds
      livenessProbe:
        exec:
          command:
          - healthcheck.sh
        initialDelaySeconds: 120
        periodSeconds: 60
        timeoutSeconds: 30
        failureThreshold: 5
  restartPolicy: Always
  serviceAccountName: parasoft-account
  imagePullSecrets:
    - name: YOUR_SECRET
---
apiVersion: v1
kind: Service
metadata:
  name: lss
  namespace: parasoft-namespace
spec:
  type: NodePort
  selector:
    app: LSS
  ports:
    - port: 8080
      name: PORT_NAME_1
      nodePort: XXXXX
    - port: 8443
      name: PORT_NAME_2
      nodePort: XXXXX
 
# SERVICE CONFIG NOTES:
# 'name' can be whatever you want
# 'nodePort' must be between 30000-32768
# 'spec.selector' must match 'metadata.labels' in pod config

yaml ファイルを使用した LSS 環境の作成

kubectl create -f parasoft-lss.yaml

Web ブラウザで UI にアクセスするには、サービス定義で割り当てたノード ポートをアドレスとして使用します (たとえば、NODE_HOST:NODE_PORT など)。

コンテナーに JVM 引数をインジェクトし、そのステータスを検証したい場合、次のコマンドを実行します。

kubectl exec <POD_NAME> -c <CONTAINER_NAME> -- printenv

カスタム トラストストア

Kubernetes 環境でのカスタム トラストストアの使用は、上で説明したカスタム キーストアの使用に似ています。カスタム キーストアを使用するために手順を適宜調整します。トラストストアの場所は /usr/local/parasoft/license-server/jre/lib/security/cacerts であることに注意してください。

HASP キーのサポート

異なるマシンに Parasoft ソフトウェアをインストールし、USB HASP キーを使用して License Server に接続する際にマシン ID を提示できます。USB ドングルは、License Server に一定のマシン ID を提示するため、Parasoft に新しいライセンスを請求せずにハードウェアの他の部分を変えることができます。詳細は Parasoft 製品担当者にお問い合わせください。 

Windows での HASP キーの有効化

  1. <LS_INSTALL>/app ディレクトリにある stopLS.bat スクリプトを実行して Tomcat Server を停止します。
  2. stopLS.bat ファイルをエディターで開き、JAVA_OPTS 設定に -DuseExternalLock=true 引数を追加します。

    set JAVA_OPTS=%JAVA_OPTS% -DuseExternalLock=true 
  3. <LS_INSTALL>/app ディレクトリにある startLS.bat スクリプトを実行して Tomcat Server を起動します。

USB HASP キーを削除すると、マシン ID は本来の ID に戻ります。結果として、License Server からライセンスを取得できなくなります。

Linux での HASP キーの有効化

  1. <LS_INSTALL>/app ディレクトリにある stopLS.sh スクリプトを実行して Tomcat Server を停止します。
  2. stopLS.sh ファイルをエディターで開き、JAVA_OPTS 設定に -DuseExternalLock=true 引数を追加します。

    export JAVA_OPTS=%JAVA_OPTS% -DuseExternalLock=true 
  3. デフォルトでは、USB デバイスは権限 66* を持ちますが、USB HASP キーは権限 666 を必要とします。Linux 上で USB デバイスに対応する udev.rules ファイルを探し、MODE="0666" を使用するよう usb_device エントリを変更します。 たとえば Ubuntu 18.04 では、/lib/udev/rules.d/ ディレクトリにある 50-udev-default.rules ファイルに設定があります。 
  4. 次のコマンドを実行します。

    udevadm control --reload-rules 
  5. マシンに USB HASP キーを挿入します。USB HASP キーがすでに挿入されている場合、root ユーザーで次のコマンドを実行し、プログラム的にキーを挿入します。

    udevadm trigger 
  6. <LS_INSTALL>/app ディレクトリにある startLS.sh スクリプトを実行して Tomcat Server を起動します。 

USB HASP キーを削除すると、マシン ID は本来の ID に戻ります。結果として、License Server からライセンスを取得できなくなります。