PowerShell DSC for ArcGIS の紹介

アイキャッチ画像 (ArcGIS Enterprise)

Microsoft PowerShell Desired State Configuration (DSC) を使用して ArcGIS Enterprise の配置を自動化するツールがEsriより提供されています。

PowerShell DSC for ArcGIS モジュールを使用して、ArcGIS Enterprise 配置のインストール、アンインストール、アップグレードを自動化できます。また、このモジュールを使用して、既存の配置への増分的なソフトウェアの追加も自動化できます。

PowerShell DSC for ArcGIS は 2024 年 10 月時点で国内未サポートの情報となりますので、ご注意ください。

PowerShell DSC for ArcGIS にて ArcGIS Enterprise を配置する流れは以下の通りです。

  • PowerShell DSC for ArcGIS を配置するインスタンスにインストール
  • PowerShell DSC for ArcGIS 配置用の定義ファイルを準備
  • PowerShell DSC for ArcGIS の実行

PowerShell DSC for ArcGIS を配置するインスタンスにインストール

Github のサイトより最新の PowerShell DSC for ArcGIS をダウンロードしてください。

また本ブログでは、異なる3つのインスタンスに Portal for ArcGIS、ArcGIS Server、ArcGIS Datastore の配置を行うことを想定しています。

各インスタンスに PowerShell DSC for ArcGIS のインストールを行います。

PowerShell DSC for ArcGIS をダウンロードして、C:\deploy に解凍した状態にしておきます。バージョンは、2024年10月時点で最新は4.3.0となります。

以下の Prereqs.bat を用意します。ツールのインストール先は、”C:\Program Files\WindowsPowerShell\Modules\ArcGIS” になります。 管理者権限でコマンドプロンプトを起動し、以下の Prereqs.bat を実行し、ツールを各インスタンスにインストールします。

@echo off

if "%1"=="-h" (
  echo The script installs ArcGIS W=Enterprise on the machine using ArcGIS Setups from Fileshare
  echo Usage: Prereqs.bat [build #] 
  echo With no parameters the script uses the latest setups from Fileshare.
  exit /b
)

set DSC_RESOURCE="C:\deploy\arcgis-powershell-dsc-release-v4.3.0\Modules\ArcGIS"
set DSC_RESOURCE_TARGET="C:\Program Files\WindowsPowerShell\Modules\ArcGIS"


if not exist %DSC_RESOURCE_TARGET% (
  echo Target path not found.
  md %DSC_RESOURCE_TARGET% 
)

xcopy %DSC_RESOURCE% %DSC_RESOURCE_TARGET% /E /Y

PowerShell.exe -Command "& Set-ExecutionPolicy RemoteSigned -Force;winrm quickconfig -quiet; "


PowerShell DSC for ArcGIS 配置用の定義ファイルを準備

以下のような PowerShell DSC for ArcGIS 配置用の定義ファイル( C:\deploy\arcgis-powershell-dsc-release-v4.3.0\work\BaseDeploy_sample.json )を準備します。

ここでは、異なる3つのインスタンスに Portal for ArcGIS、ArcGIS Server、ArcGIS Datastore の配置を行うことを想定しています。

また、ArcGIS Enteprise のインストーラーを各インスタンスの C:\workspace 以下にコピーしておきます。

名前解決のできる ds.esrij.home、pl.esrij.home、svr.esrij.home のマシンに対して、ArcGIS Datastore、Portal for ArcGIS、 ArcGIS Server のモジュールをそれぞれインストールします。ArcGIS Datastore は、リレーショナルとタイルキャッシュをインストールします。また、ArcGIS WebAdapter は利用せず、Iaas のロードバランサーを利用することを想定しています。

{
    "AllNodes": [
        {
            "NodeName": "ds.esrij.home",
            "DataStoreTypes": [
                "Relational",
                "TileCache"
            ],
            "Role": [
                "DataStore"
            ]
        },
        {
            "NodeName": "pl.esrij.home",
            "Role": [
                "Portal"
            ]
        },
        {
            "NodeName": "svr.esrij.home",
            "Role": [
                "Server"
            ]
        }
    ],
    "ConfigData": {
        "Version": "11.1",
        "ServerContext": "arcgis",
        "PortalContext": "arcgis",
        "ServerRole": "GeneralPurposeServer",
        "Credentials": {
            "ServiceAccount": {
                "Password": "[Windows OS Password]",
                "UserName": "[Windows OS User]",
                "IsDomainAccount": false,
                "IsMSAAccount": false
            }
        },
        "Server": {
            "LicenseFilePath": "C:\\workspace\\ArcGISGISServerStandard_ArcGISServer_1469175.ecp",
            "Installer": {
                "Path": "C:\\workspace\\ArcGIS_Server_Windows_111_185208.exe",
                "PatchesDir": "C:\\workspace\\patch",
                "InstallDir": "C:\\Program Files\\ArcGIS\\Server",
                "InstallDirPython": "C:\\Python3"
            },
            "ServerDirectoriesRootLocation": "C:\\arcgisserver\\directories",
            "ConfigStoreLocation": "C:\\arcgisserver\\config-store",
            "ExternalLoadBalancer": "svresrij.egihs.io",
            "PrimarySiteAdmin": {
                "UserName": "siteadmin",
                "Password": "[ArcGIS Server Password]"
            }
        },
        "Portal": {
            "LicenseFilePath": "C:\\workspace\\ArcGIS_Enterprise_Portal_111_415862_20230426.json",
            "PortalLicenseUserTypeId": "creatorUT",
            "Installer": {
                "Path": "C:\\workspace\\Portal_for_ArcGIS_Windows_111_185219.exe",
                "PatchesDir": "C:\\workspace\\patch",
                "WebStylesPath": "C:\\workspace\\Portal_for_ArcGIS_Web_Styles_Windows_111_185220.exe",
                "InstallDir": "C:\\Program Files\\ArcGIS\\Portal",
                "ContentDir": "C:\\arcgisportal"
            },
            "ContentDirectoryLocation":"C:\\arcgisportal\\content",
            "EnableAutomaticAccountCreation": true,
            "ExternalLoadBalancer": "plesrij.egihs.io",
            "DefaultRoleForUser": "account_publisher",
            "DefaultUserLicenseTypeIdForUser": "creatorUT",
            "PortalAdministrator": {
                "UserName": "[Portal Admin User Name]",
                "Email": "[Email Address]",
                "Password": "[Portal Admin User Password]",
                "SecurityQuestionIndex": 1,
                "SecurityAnswer": "[Security Answer]"
            }
        },
        "DataStore": {
            "ContentDirectoryLocation": "C:\\arcgisdatastore",
            "EnableFailoverOnPrimaryStop": false,
            "Installer": {
                "Path": "C:\\workspace\\ArcGIS_DataStore_Windows_111_185221.exe",
                "PatchesDir": "C:\\workspace\\patch",
                "InstallDir": "C:\\Program Files\\ArcGIS\\DataStore"
            }
        }
    }
}

PowerShell DSC for ArcGIS の実行

配置用の Windows マシンから、Windows Powershell を管理者権限で起動し、以下の Powershell を実行します。

例)

$trust_servers="ds.esrij.home,svr.esrij.home,pl.esrij.home"
$config_file="C:\deploy\arcgis-powershell-dsc-release-v4.3.0\work\BaseDeploy_sample.json"
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $trust_servers

Invoke-ArcGISConfiguration -ConfigurationParametersFile $config_file -Mode InstallLicenseConfigure  -Credential [Windows OS User]
#デバッグモードでの実行時は以下
#Invoke-ArcGISConfiguration -ConfigurationParametersFile $config_file -Mode InstallLicenseConfigure  -Credential [Windows OS User]-MappedDriveOverrideFlag $True -DebugSwitch

補足

PowerShell DSC for ArcGIS は英語環境での実行を想定して作成されています。日本語環境で実行するには以下の対処が必要となります。

  • Modules\ArcGIS\Modules\ArcGIS.Common\ArcGIS.Common.psm1

Invoke-ArcGISWebRequest 関数にて、エンコーディングを明示的にセットします。(約380行目以降)

        $UrlWithQueryString += $HttpBody
        $wc = New-Object System.Net.WebClient
<span class="red">        $wc.Encoding = [System.Text.Encoding]::UTF8</span>
        if($Referer) {
            $wc.Headers.Add('Referer', $Referer)
        }
        $res = $wc.DownloadString($UrlWithQueryString)
        $wc.Dispose()

• Modules\ArcGIS\DSCResources\ArcGIS_Portal\ArcGIS_Portal.psm1

 日本語に対応させるため、以下の対応を行います。

585 行目をコメントアウトします。

585 – 586 行目の間に以下を追加します。(※変更箇所は、2024年10月時点での情報となります。)

if(($SiteCreatedCheckResponse.messages -icontains "ポータル サイトが初期化されていません。新しいサイトを作成して、再試行してください。") -or ($SiteCreatedCheckResponse.messages -icontains "The portal site has not been initialized. Please create a new site and try again.")){

ArcGIS Managed Cloud Service でも実際に PowerShell DSC for ArcGIS を利用した ArcGIS Enterprise の配置を行っております。PowerShell DSC for ArcGIS により、安定した ArcGIS Enterprise の導入を実現できます。

参考

フォローする