まだ手動で実行ファイルをクリックして ArcGIS Enterprise をデプロイしていますか?そのプロセスを自動化できたら素晴らしいと思いませんか? Amazon Cloud Development Kit (CDK)、Amazon Web Services (AWS) Systems Manager、および Esri の PowerShell Desired State Configuration (DSC) ライブラリを組み合わせることで、ArcGIS Enterprise のデプロイメントを次のレベルに引き上げることができます!インフラストラクチャをコードとして利用してデプロイを自動化することで、ArcGIS Enterprise のデプロイメントを効率的で一貫性があり、シンプルにします。<\/P>
インフラストラクチャをコードとして保存することは、IT 部門にとって不可欠な作業となっています。システム管理者は、一貫したアーキテクチャを迅速かつ繰り返し可能な方法でデプロイでき、デプロイおよび構成時のユーザーによるエラーのリスクを低減できます。このブログでは、インフラストラクチャをコードとして使用し、AWS インフラストラクチャをデプロイし、そのインフラストラクチャ上に ArcGIS Enterprise をインストールおよび構成する方法について説明します。このブログでは、Amazon の System Manager Run Commands を使用してインスタンスの準備と ArcGIS Enterprise のデプロイを行い、マシンにログインする必要がありません!<\/P>
現在、Esri は AWS デプロイメントの自動化を可能にする CloudFormation テンプレートと CloudBuilder アプリケーションを提供しています。これらのツールのデプロイパターンは利用可能なアーキテクチャの面でやや堅牢です。このブログで示すアプローチはより柔軟なアーキテクチャを可能にし、また arcgis_cdk GitHub リポジトリ経由でコードへのアクセスも提供します。<\/P>
ブログは以下の2つのセクションに分かれています:<\/P>
- AWS CDK を使ったインフラストラクチャのデプロイ; および<\/LI>
- AWS Systems Manager と PowerShell DSC を使った ArcGIS Enterprise のデプロイ<\/LI><\/UL>
リポジトリ内の詳細な手順へのリンクに従って進めることを推奨します。 <\/P>
CDK を使ったインフラストラクチャのデプロイ:<\/STRONG><\/P>CDK は任意の言語でプログラムし、その言語でインフラストラクチャをデプロイできます。arcgis_cdk は CDK を使って Python でインフラストラクチャを定義しています。これは Esri が AWS 内で ArcGIS Enterprise に対して組織が使用すると見ている一般的なアーキテクチャパターンで設計されています。アーキテクチャは階層型(コンポーネントが個別マシンに分割)で高可用性構成と単一インスタンススタックがあります。前提条件、デプロイ手順、構成パラメータ、および利用可能なアーキテクチャの完全な内訳はリポジトリ内にあります。高レベル構成オプションの論理図は以下をご覧ください。<\/P>
<\/span><\/P>注: 構成パラメータによりユーザーは高可用性パターンを選択できます。このパラメータが true の場合、上記図の薄い色部分(高可用性)が含まれます。false の場合はフルカラーコンポーネントのみ(高可用性なし)が含まれます。<\/EM><\/P>このデプロイメントを試みる場合は、この時点で リポジトリから CDK 環境設定の初期手順に従うことをお勧めします。<\/P>arcgis_cdk がデプロイされたら AWS アカウント内で以下のインフラストラクチャが作成されていることを確認してください: <\/P>複数のパブリック/プライベートサブネットを持つ新しい VPC が作成されている<\/LI>プライベートサブネットにインスタンスが追加されている(アーキテクチャ構成による数)<\/LI>特定トラフィックのみ許可するセキュリティグループが作成されている<\/LI>2つのターゲットグループ、パスベースルーティングルール付きリスナー、および ACM 証明書が付与されたアプリケーションロードバランサーが作成されている<\/LI>Route53 パブリックゾーンがロードバランサーへのレコードセットマッピングに使用されている<\/LI>Route53 プライベートホステッドゾーンが作成され、それぞれの EC2 インスタンス内部 IP アドレスへレコードセットがマッピングされている<\/LI><\/UL>AWS インフラストラクチャが整いましたので、ArcGIS Enterprise のインストール準備ができました!<\/P>Systems Manager と PowerShell DSC を使った ArcGIS Enterprise のデプロイ:<\/STRONG><\/P>AWS System Manager はクラウドインフラストラクチャの可視化と制御を可能にする AWS サービスです。このデプロイメントでは AWS System Manager Run Commands を使用します。Run Commands は EC2 インスタンスにログインせずにコード実行が可能です。既存の Run Command ドキュメントは前述の CDK 演習から展開されたインスタンス上で PowerShell を実行します。Run Commands はシステム準備と PowerShell DSC スクリプト呼び出し両方に使用されます。また代替として arcgis_cdk リポジトリ内 PowerShell ファイルから Run Command ドキュメントを作成することも可能です。<\/P>マシン準備<\/EM><\/P>ArcGIS Enterprise のインストール、ライセンス付与、および構成前に PowerShell DSC スクリプト用にインスタンス準備が必要です。この準備には以下が含まれます:<\/P>CDK により作成された S3 バケットから Esri ソフトウェアとライセンスをダウンロード<\/LI>各マシン上でサービスアカウント設定<\/LI>サイトが HA の場合ファイル共有設定<\/LI>各サーバーで Windows Remote Management 準備 <\/LI><\/UL>詳細な手順と準備用サンプルスクリプトはリポジトリまたは本投稿添付コード 「EC2InstancePrep.ps1」 にあります。またコマンド実行前の Run Command から PowerShell スクリプトのスクリーンショットもキャプチャしました。<\/P>
<\/span><\/P>これでマシンは ArcGIS Enterprise インストール準備完了です。次は PowerShell DSC を使った ArcGIS Enterprise デプロイです!<\/P>ArcGIS Enterprise PowerShell DSC:<\/EM><\/P>Esri の PowerShell DSC は ArcGIS Enterprise の インストール, ライセンス付与, および 構成 に使用されます。Amazon CDK によるインフラ展開後、Amazon Systems Manager による EC2 インスタンス準備完了後、PowerShell DSC を使って ArcGIS Enterprise をデプロイする準備が整います。これは Systems Manager からも実行可能であり、オーケストレーション用 EC2 インスタンスからも実行できます。<\/P>
<\/span><\/P>PowerShell DSC による ArcGIS Enterprise のインストール、ライセンス付与、および構成には時間がかかることがあります。高可用性展開では4時間以上かかることも一般的ですが、高可用性なし展開では通常2時間以内に完了します。<\/P>AWS System Manager の構成オプションとして出力ログを S3 に送信する設定があります。これによりログを確認してデプロイ進捗状況を把握できます。この処理完了後には動作する基本的な ArcGIS Enterprise デプロイメントが完成します! <\/P>まとめ<\/STRONG><\/P>本投稿では Amazon CDK を使った AWS インフラ展開と Amazon Systems Manager を使った ArcGIS Enterprise の準備およびデプロイという形で Infrastructure as Code を取り扱いました。この例では Windows AMI と PowerShell DSC を使用しましたが、Linux AMI と Chef を使うよう拡張も可能です。最も慣れている言語と OS を選択し、このソリューションを拡張することをお勧めします。GitHub リポジトリはオープンなので、ご自身でコードを分岐させたり既存コードを強化したりできます。本ブログで活用したツール群の力によって、ご自身が慣れているプログラミング言語で必要なアーキテクチャへ自由自在に ArcGIS Enterprise を展開できます。<\/P> <\/P> <\/P> <\/P> <\/P> <\/P> <\/P> <\/P> <\/P> <\/P>