プロビジョニングツールを使用して、JupyterおよびNotebookExecutionサービスに必要な設定を行います。

プロビジョニングツールであるNINotebookUserSetupCmd.exeは以下の操作を実行します。
  • ユーザアカウントを作成または更新します。
  • 必要なすべての権限を適用します。
  • 見つからないサブディレクトリのJupyterプロファイルディレクトリ構造を再作成します。
    メモ たとえば、ProgramData\National Instruments\Skyline\JupyterHub\profileディレクトリ階層にディレクトリがない可能性があります。

NIPMインストーラは、プロビジョニングツールを自動的に実行します。パスワードのローテーション、修復後の機能の確認、プロファイルディレクトリの復元を行うには、ツールを手動で実行します。

プロビジョニングツールは、以下の許可権限と拒否権限をSystemLinkNotebooksグループに適用します。

表 13. プロビジョニングツールの権限を許可
パス 権限_
%ProgramData%\National Instruments\Skyline\JupyterHub Jupyterプロファイルディレクトリおよびランタイムファイルに対する権限を変更します。
%ProgramFiles%\National Instruments\Shared\Skyline\Python バージョンサブフォルダを含むすべてのコンテンツを読み取り、実行します。たとえば、プロビジョニングツールは3.8\サブフォルダで動作します。書き込み権限がないため、pip installコマンドはブロックされます。
表 14. プロビジョニングツールの権利を拒否
パス 権限_
%ProgramFiles%\National Instruments\Shared\Web Server フルコントロール
%ProgramData%\National Instruments\Skyline\Config フルコントロール
%ProgramData%\National Instruments\Skyline\HttpConfigurations フルコントロール
%ProgramData%\National Instruments\Skyline\Install フルコントロール
%ProgramData%\National Instruments\Skyline\KeyValueDatabase フルコントロール
%ProgramData%\National Instruments\Skyline\Logs フルコントロール
%ProgramData%\National Instruments\Skyline\NoSqlDatabase フルコントロール
%ProgramData%\National Instruments\Skyline\PostgreSQLDatabase フルコントロール
%ProgramData%\National Instruments\Skyline\Python フルコントロール
%ProgramData%\National Instruments\Skyline\RabbitMQ フルコントロール
%ProgramData%\National Instruments\Skyline\SkylineConfigurations フルコントロール
%ProgramData%\National Instruments\SystemLink TDM Index フルコントロール
%ProgramData%\National Instruments\TDM Server フルコントロール
%ProgramData%\National Instruments\Skyline\Data 書き込み。このパスは、Usersメンバーシップからの読み取りおよび実行権限を保持します。
%ProgramData%\National Instruments\Skyline\JupyterHub\profile\AppData\Roaming\Python 書き込み。このパスはpip install --userコマンドをブロックします。

サービスディレクトリの拒否ルールは、アカウントがUsersグループから継承する読み取りアクセスを無効にします。これらのディレクトリには、ConfigLogsが含まれます。デフォルトでは、Usersグループには、ほとんどの%ProgramData%ディレクトリに対する読み取りおよび実行アクセス権があります。

%ProgramData%\National Instruments\Skyline\JupyterHub\profile\AppData\Roaming\Pythonの書き込み拒否ルールは、JupyterHubから継承された「変更」権利を無効にします。ルールは冪等であり、SystemLinkNotebooksグループを対象としています。これらのルールは他のアカウントには影響しません。

プロビジョニングツールを実行するための構文

プロビジョニングツールを実行するには、以下の構文を使用する必要があります。

メモ この構文を使用するには、管理者権限でプロビジョニングツールを実行します。
NINotebookUserSetupCmd.exe --username <name> --service <jupyterhub|notebookexecution> [options]

Required:
  --username    <name>                         Windows local account name to create or update
  --service     <jupyterhub|notebookexecution> Target service for credential storage

Optional:
  --password      <pwd>    Use a specific password (default: auto-generate 32 chars)
  --hide-from-login        Hide the account from the Windows login screen

プロビジョニングツールの一般的なPowerShell操作

目的に応じて、プロビジョニングツールで以下のPowerShell操作を使用します。

表 15. 一般的なプロビジョニングの目標
目的 PowerShell操作
両方のアカウントを作成または更新する
メモ この操作はインストーラと同様に機能します。
$exe = "$env:ProgramFiles\National Instruments\Shared\Skyline\NINotebookUserSetupCmd.exe"

& $exe --username SystemLinkJupyterHub --service jupyterhub        --hide-from-login
& $exe --username SystemLinkNotebookEx --service notebookexecution --hide-from-login
メモ プロビジョニングツールがユーザを作成できない場合は、--username引数で別のユーザ名を使用してください。SystemLinkでは、最大20文字のユーザ名を使用できます。
JupyterHubユーザのパスワードを回転
& $exe --username SystemLinkJupyterHub --service jupyterhub --password "<user-provided-password>"
メモ パスワードをローテーションした後、SystemLinkサービスを再起動する必要があります。SystemLinkサーバ構成アプリケーションからシステムの再起動をトリガします。
NotebookExecutionサービスの自動生成パスワードを使用します。
メモ この操作は、パスワードを暗号化してサービス構成に保存します。
& $exe --username SystemLinkNotebookEx --service notebookexecution

プロビジョニング失敗のトラブルシューティング

プロビジョニングツールが失敗すると、プロビジョニングされたアカウントに依存するサービスは正しく開始されません。

  • NotebookExecution―SystemLinkサーバ構成アプリケーションでエラー状態で障害を表示します。
  • JupyterHub―エラーが発生したサービスの下の障害をリストします。ユーザインタフェースのエラーメッセージは通常汎用的で、エラーをプロビジョニングの失敗として識別しません。

エラーの正確な原因を特定するには、次の場所にあるプロビジョニングログファイルを参照してください: %ProgramData%\National Instruments\Skyline\Logs\notebookUserSetup.log

プロビジョニングツールは、特定の障害を説明する[FATAL]ラインをログします。たとえば、この行はアカウント名の競合やアクセスエラーを表します。

プロビジョニングツールを手動で実行して、PowerShellから直接出力を表示することもできます。

$exe = "$env:ProgramFiles\National Instruments\Shared\Skyline\NINotebookUserSetupCmd.exe"
& $exe --username SystemLinkJupyterHub --service jupyterhub --hide-from-login
Write-Host "Exit code: $LASTEXITCODE"

エラーに応じて、以下の手順に従ってください。

表 16. 一般的なプロビジョニングエラーの解決策
エラー 解決法
見つからないプロファイルディレクトリがあります

Jupyterプロファイルディレクトリ内にサブディレクトリがない場合、カーネルが起動しない可能性があります。または、カーネルがFileNotFoundErrorを返す場合があります。サブディレクトリの例には、AppDataipythonjupyterなどがあります。これらのサブディレクトリは、手動削除またはインストールの失敗後に見つからない可能性があります。

もう1つの現象は、Notebookが実行しているように見えても、出力が生成されないというものです。この問題は、カーネルがprofile\jupyter\runtimeの下のJUPYTER_RUNTIME_DIRに接続ファイルを書き込むことができない場合に発生する可能性があります。カーネルプロセスは開始しますが、フロントエンドはカーネルに接続できません。したがって、システムはセル出力を提供しません。

この問題を解決するには、両方のサービスの管理者としてPowershellでプロビジョニングツールを再実行します。

$exe = "$env:ProgramFiles\National Instruments\Shared\Skyline\NINotebookUserSetupCmd.exe"
& $exe --username SystemLinkJupyterHub --service jupyterhub        --hide-from-login
& $exe --username SystemLinkNotebookEx --service notebookexecution --hide-from-login

ツールを再度実行すると、ストラクチャが再作成され、ACLが再適用されます。

Notebookが起動しない

Notebookセッションは、プロビジョニングログにエラーがなくても開始できない可能性があります。最も一般的な原因は、JupyterHub構成ファイルのSystemLinkJupyterHubアカウント資格情報です。これらの資格情報は、実際のWindowsアカウントのパスワードと同期していない可能性があります。新しい資格情報を自動生成するには、--passwordを指定せずにプロビジョニングツールを再実行します。その後、すべてのサービスを再起動する必要があります。

JupyterHubのログに資格情報の問題が表示されていない場合でも、一般的な生成エラーでセッションが失敗する可能性があります。特権モードをオプトアウトし、サービスを再起動する必要があります。Notebookが正常に起動した場合、アクセス制限によりエラーが発生しています。見つからない権限を特定するには、変更箇所の表を参照してください。

Notebookは、セルの実行後はデータにアクセスできません。

Notebookセルは、ファイルパスの読み取りまたは書き込み時にPermissionError例外またはAccess is denied例外を返す場合があります。例外がある場合、SystemLinkNotebooksグループにはそのディレクトリへのアクセス権がありません。アクセスを許可するには、「最小権限モードで権限を緩和する」を参照してください。

Notebookの内部からパスの現在の権限を確認するには、Powershellで次のコマンドを実行します。

import subprocess
result = subprocess.run(["icacls", r"C:\path\to\directory"], capture_output=True, text=True)
print(result.stdout)