HULFT10 for Container Services (EC2) 環境構築してみた

## はじめに
こんにちは。すぎもんです:smile:

先日の、[HULFT10 for Container Services （コンテナ版HULFT）の環境構築をしてみた](https://qiita.com/sugimon/items/e589e654f7bb38825550)の記事では開発者版の環境構築を書かせていただきました。バージョンが10.1.0となり、改めて環境構築の機会があったので前記事をベースに書き足してみました。今回はより設定をスムーズに実施できるよう、実際の値を補足しています。AWS試用環境を取得し、補足の値を入れて設定していくだけでも構築ができる形にしました。
併せて以下の記事を追加しました。
* [HULFT10 for Container Services AWSインスタンスの停止について （環境構築）](https://qiita.com/sugimon/items/0cabf046058421452fbb)
インスタンスを停止すると待機コストを削減できます。
* [HULFT10 for Container Services アンインストールについて （環境構築）](https://qiita.com/sugimon/items/66e2312e753445d9d258)
試しに構築した環境は簡単に削除できます。

## 今回やること

HULFT10 for Container Servicesの「環境構築」をしていきます。今回の新たなHULFTは、AWSのMarketplaceから利用するということで、そこら辺の確認もしていきます。

　　①AWS MarketplaceからHULFT10 for Container Servicesをサブスクライブ
　　②関連するAWSリソース設定
　　③HULFT10 for Container Servicesの管理画面からログイン

:::note
本記事で環境構築したのは【10.1.0】です。AWSの設定画面など画面詳細が異なる場合がある点、ご留意ください。
:::

## HULFT10 for Container Servicesの環境構成

HULFT10 for Container Servicesの環境は、[**AWS CloudFormation**](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html)を利用して構築をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/8eb988db-19c2-ca1e-70b3-177f23808050.png)

コンテナを管理する（コントロールプレーン）は「[**AWS ECS**](https://aws.amazon.com/jp/ecs/)」というフルマネージドサービス、コンテナが稼働する環境（データプレーン）は「**EC2**」という環境構成になっています。

## HULFT10 for Container Servicesの環境構築手順
HULFT10 for Container Servicesの環境は、大きく4つの設定プロセスを実施することで簡単に構築できます。
![HULFT10環境構成.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/539246fc-a777-e09a-0e23-42d3a83a0eb4.png)



:::note info
**HULFT10 for Container Servicesの環境構築ステップ**
**★① 事前準備・設定**
　　・HULFT 10 for Container Servicesの導入に必要な情報の確認及び決定。
　　　（AWSの各種サービスの設定もあります）
**★② Cloud Formation 1**
　　・AWSのMarketplaceからのHULFT 10 for Container Servicesのサブスクライブ。
　　・Cloud Formation 1の実行。
**★③ EFS導入VPC設定**
　　・Cloud Formation 1 で作成したVPCとの接続設定。
**★④ Cloud Formation 2**
　　・Cloud Formation 2 の実行とHULFT管理画面へのログイン。
:::

[**オンラインマニュアル**](https://www.hulft.com/help/ja-jp/HULFT-V10/index.htm)と[**製品サイトのダウンロード資料**](https://www.hulft.com/software/hulft-10/doc_dl_reg)を参考にして、上記4つの設定プロセスを進めてみます。

:::note info
環境構築にあたり、HULFT10利用料とは別にAWS利用料が発生します。
また、本記事では有料のドメインを取得し環境構築を実施しています。
待機時のAWS利用料削減、環境の削除方法は冒頭の別途記事を併せて参照ください。
:::

## ①事前準備・設定
HULFT10 for Container ServicesをAWS Marketplaceからサブスクライブするには、事前準備が必要です。
（※下図の赤字部分が、事前に用意して置くべきものです）
![簡易_事前準備設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/1e3e2d9a-2840-e26b-8832-b85ba8f774ac.png)

[**製品サイトのダウンロード資料**](https://www.hulft.com/software/hulft-10/doc_dl_reg)や、[**公式マニュアル**](https://www.hulft.com/help/ja-jp/HULFT-V10/index.htm)内の「**スタートアップガイド**」-「**AWS Marketplaceからの環境構築**」-「**1.1.2 事前準備**」に記載された内容を参考にします。

:::note warn
**HULFT10 for Container Services** をサブスクライブすると、Cloud Formationの設定に移ります。**CloudFormationの実行には、パラメータを設定する必要があります。**
:::

:::note info
公式のスタートアップガイドから、パラメータとして必要な値をメモできるcsvファイル([**CloudFormation_parameters.csv**](https://www.hulft.com/help/ja-jp/HULFT-V10pre/CONT-SUG/Content/Resources/SampleFile/CloudFormation_parameters.csv ) )をダウンロードできます。
:::

**★CloudFormation1実行に必要なパラメータはこちら**
![取得対象パラメータ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a50abc94-e9d3-ce20-42be-38ddab540d5a.png)

:::note warn
サブスクライブする前に必要な事前準備を行うことで、環境構築がスムーズです！
:::

また、Cloud Formationのパラメータではありませんが、下記情報も「EFS導入済みVPCの設定」で利用するのでメモしておきます。

* EFS導入VPCの設定で作成したサブネット
* EFS導入VPCのインスタンス作成で選択したセキュリティグループ

### ①-2 事前準備の補足（設定例：_pptcは識別子）
* EFS導入VPCの作成：HULFT10_EFS導入VPC_pptc
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/bb10a630-2160-d4d6-2193-9baa309d0319.png)

* サブネットの作成（EFS導入VPC）：HULFT10_EFS導入VPC_subnet_pptc
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f9843066-568c-ce4e-b3a6-cdbb343bb518.png)

* セキュリティグループの作成（EFS導入VPC）：HULFT10_EFS_VPC_SG_pptc
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/488e45f9-cf65-e4e7-17de-d61fe1bc2410.png)

* キーペア作成：pptc
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/384a13cb-3015-d5b2-5d1e-aaa62f8b8512.png)

* インスタンスの作成（EFS導入VPC）：HULFT10_EFS_pptc
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/57f68737-2100-4e5d-946e-2b7bf9982324.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/426711fb-0c3b-011f-e2b4-18d60bb7142d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3b66fac6-de08-6f3b-e97f-3d9eea73c965.png)

* エンドポイントの作成（EFS導入VPC）：HULFT10_EFS_endpoint_pptc
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c716c1d7-deae-979d-d337-b00b12a0eac8.png)

* ファイルシステムの作成とネットワーク設定（EFS導入VPC）：HULFT10_efs_pptc
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b31d9aa4-d338-ed02-24e2-6b5d7f16b47a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/102a2d6b-6d43-332e-13c2-5c5eb59c1e2b.png)
ファイルシステム→ネットワーク→管理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/c396da16-731f-0808-9c71-3272945d878a.png)
* ドメイン登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/218da3c7-1018-5bc6-c4f2-2ea08a53cf79.png)
* CloudFormation実行ロールの作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/db989a4a-ec72-af24-25c0-69ff5210bf94.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f0bbc90d-2765-a0f9-fce2-c31d814fae0f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7f5fd553-10c3-fc9a-6666-8759e722b4c5.png)

## ②Cloud Formation Template 1の実行
HULFT10 for Container ServicesをAWS Marketplaceからサブスクライブした後に、Cloud Formation1を実行します。（※下図の赤字部分が、Cloud Formation1で設定されるAWSリソースです。）
![簡易_CloudFormation1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/2bae0648-d024-4a6f-3d7d-b9d6cba2f5fc.png)

#### ■HULFT10のサブスクライブ

:::note 
MarketPlace画面は変化しますが内容に変わりはありません。
:::

AWS Markecplace から「**HULFT10 for Container Services**」をサブスクライブします。
![Marketplace_Subscriptions.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e8b8170a-b9a0-e1ed-6d06-447a4a88030e.png)

![HULJT10選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/5a9ba486-c61c-9105-a264-f7d85c2740e4.png)

「**HULFT10 for Container Services**」 をクリックして以下のように進めます

**「Product Overview」 ⇒ 「Subscribe to this software」 ⇒ 「Configure this software 」⇒「Launch this software 」**

![Deployment_Template.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/09c7db35-af4a-c0a9-34fa-2253b7567b1f.png)

:::note warn
**振り返り　　環境構築手順**は下記の通り。まずはCloud Formation1の実行です。
* Cloud Formation Template 1の実行
* EFS導入VPCの設定
* Cloud Formation Template 2の実行
:::


#### ■Cloud Formation Template1の実行
Cloud Formation Template 1をクリックすると「スタック作成」の画面に遷移します。
Cloud Formationを利用する際、関連リソースは **「スタック」** と呼ばれる単一のユニットで管理されるためです。

設定パラメータは下記の通りです。（※前述したパラメータシートを使いました。）
![CFr1_設定パラメータ一覧.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/815b5dca-c870-cebe-089e-f1e496a94ca9.png)

→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
スタックの作成は、4つのステップで作成します。

**★ステップ１：スタックの作成**

下記を選択します。
　〇テンプレートの準備：テンプレートの準備完了
　〇テンプレートソース：Amazon S3 URL

**★ステップ２：スタックの詳細の指定**

スタック名とパラメータを指定します。

　〇スタック名：HULFT10-Cfm1（任意の名前）
　〇パラメータ：**事前準備・設定**で確認、取得している値を設定します
 
![CFrm1_詳細.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/225d6298-d4b4-8f19-3af5-6b05191b80b3.png)

::: note info
スタック名の末尾の「１」はCloudFormation1の略称で付与しています。
後の工程で、CloudFormation2と判別できるようにしました。
:::

<!-- イメージ
！[CFｍ１詳細](CFｍ１詳細.PNG)
-->

**★ステップ３：スタックオプションの設定**

タグとアクセス許可の設定を行います

　〇タグの追加：キー［Name]、値［CFm1（任意）］
　〇アクセス許可：**事前準備・設定**で作成したCloudFormation用の実行ロール

**★ステップ４：レビューHULFT10-CFm1（ステップ１で指定したスタック名）**

ステップ1～３の設定内容を確認します。
問題なければ、下記のようにチェックを入れて［送信］をクリックします。
 （間違えて設定している箇所は、設定しているステップに戻って修正します。）

### ②-1 補足（スタック設定例）：HULFT10-CF1-pptc
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a8a15ec2-96e9-4293-6f0d-043ebd3918bf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/85eae94d-9081-c9c3-c125-2cbf5f171f87.png)

→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→

スタックの作成が始まります。10分ほど待ちます。
スタック名で指定したスタックのステータスが「**CREATE_COMPLETE**」で成功です。
![CFm1_CREATE_COMPLETE.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/10008adb-e0be-2022-7277-08cf1e8e326d.png)

<!-- イメージ
![CFm1_成功](CFm1_CREATE_COMPLETE.PNG)
-->
::: note info
このスタックの出力タブの情報（**VPCPeeringConnectionEFS**）を次のEFS導入VPCの設定で使用するので控えておいてください。
:::

:::note warn
「**ROLLBACK_COMPLETE**」となっている場合は、エラーメッセージを確認し、対処が必要です。万が一、Cloud Formationの再実行をしたい場合は、ロールバックされたスタックを削除した後に、再度「CloudFormation Template1」を実行して、スタックを再作成します。
:::


## ③EFS導入VPCの設定
EFSが導入されている既存VPC側のリソースからECSが稼働している新規VPCにアクセスできるように、ルートテーブル及びセキュリティグループの設定を行います。（下図の赤字部分）

![簡易_EFS導入VPC設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/24332e21-761e-2ef9-9389-04b8244c2e94.png)
<!-- イメージ
![簡易_EFS](簡易_EFS導入VPC設定.PNG)
-->

#### ■ルートテーブルの設定
以下の手順でEFSが導入されているVPCのサブネットが使用しているルートテーブルの設定を行います。

① 事前準備で作成したサブネット（※EFS導入VPCの設定で作成したサブネット）の「ルートテーブル」タブのから［ルート編集]を押下

② [ルートを編集]画面で下記の通り、ルートを追加
　〇送信先　　：　02VpcCIDRで指定の値（新規作成したVPCのCIDR）
　〇ターゲット：　ピアリング接続を選択しスタックのVPCPeeringConnectionEFSの出力値
 
③ ［変更を保存］を押下
![サブネット設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/674b2b44-9565-652f-acc1-e7d1adecb7b9.png)

以上で、EFSが導入されているVPCのサブネットが使用しているルートテーブルの設定は完了です。

:::note warn
CIDRは、「/24」にすることでサブネットに256個のIPアドレスが割り当てられるため判別しやすいのでおススメです。「192.168.4.0/24」だと、配下が「192.168.4.1～192.168.4.254」になりますね。
:::

#### ■セキュリティグループの設定
以下の手順でEFSが導入されているVPCのネットワーク設定のセキュリティグループのインバウンドルールの設定を行います。

①事前準備で選択したセキュリティグループ（EFS導入VPCのインスタンス作成で選択したセキュリティグループ）のセキュリティグループＩＤを選択
②［インバウンドルールを編集］を押下
③ルールを追加
　〇タイプ　：　すべてのトラフィック
　〇ソース　：　カスタムを選択し02VpcCIDRで指定の値（新規作成したVPCのCIDR）
 
④［ルールを保存］を押下
![セキュリティグループ設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/cd2ecb6f-e5a5-48e3-497b-1f218cccb0c3.png)

以上で、EFSが導入されているVPCのネットワーク設定のセキュリティグループのインバウンドルールの設定は完了です。

## ③-1 補足（設定例）
* EFS導入VPCのルートテーブルの設定：HULFT10_EFS導入VPC_subnet_pptcを選択してルートを編集
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7cc6a752-0996-5f5f-1c06-c79026041533.png)
* EFS導入VPCのセキュリティグループの設定：HULFT10_EFS_VPC_SG_pptcを選択して編集
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7fd61e01-225e-c5d2-df83-95ab95cb758d.png)


## ④Cloud Formation Template 2の実行
大きな4つの設定プロセスの中の最後です。Cloud Formation2を実行することで、HULFT10 for Container Servicesをデプロイします。（赤字の部分）
![簡易_CloudFormation2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6f3e2f49-bf2d-170f-acd7-6edf554e43d0.png)

#### ■CloudFormation Template2

:::note warn
「Cloud Formation Template1の実行」と「EFS導入VPCの設定」の後に、Cloud Formation Template2を実行します。
:::

設定パラメータは下記の通りです。
![CFr2_設定パラメータ一覧.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a0643ae8-fe23-45f6-56d6-15c31c1245db.png)

作成工程は、CloudFormation Template1と同様です。

**★ステップ１：スタックの作成**
下記の通りに選択し、[次へ]をクリック
　〇前提条件-テンプレートの準備：テンプレートの準備完了
　〇テンプレートの指定：Amazon S3 URL

:::note info
※CloudFormation Template1と指定内容は同様
:::

**★ステップ２：スタックの詳細の指定**
スタック名とパラメータを指定します。

　〇スタック名　　：　HULFT10-Cfm2
　〇パラメータ　　：　事前準備・設定で確認、取得している値を設定します
 
 ![CFrm2_詳細.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/9d632dfe-5897-8655-79dc-75d6b1cad760.png)

::: note info
スタック名「HULFT10-Cfm2」は、前工程でCloud Formation1で作成したスタック「HULFT10-Cfm1」に併せて命名しています。
:::

<!-- イメージ
![](CFrm2_詳細.PNG)
-->

**★ステップ３：スタックオプションの設定**
タグとアクセス許可の設定を行います
　〇タグの追加　　：　キー［Name]、値［CFm2（任意）］
　〇アクセス許可　：　事前準備・設定で作成したCloudFormation用の実行ロール

:::note info
「アクセス許可」はCloudFormation Template1と同様の指定内容です。
:::

## ④-2 補足（設定例）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/112f9acb-dfff-dc52-bcb0-9b8b39460817.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e90dae62-48c9-0088-cb26-8ae1e2a7b2a5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/27108bf2-45ed-e50a-bafe-b05e2d35f331.png)

**★ステップ４：レビューHULFT10-CFm2（ステップ１で指定したスタック名）**
ステップ1～３の設定内容を確認後、チェックボックスをチェックして［送信］を押下します。問題が無ければ、30分ほどで実行が完了します。

CloudFormation Template1と同様に、スタックのステータスが「**CREATE_COMPLETE**」になっていれば、成功です。

:::note info
このスタックの出力タブの下記の情報を「HULFT管理画面の起動とログイン」で使用するので控えておいてください。
* **ControlURL**　HULFT管理画面のアクセスURL
* **ControlRootPassword** 「root」ユーザのパスワード取得で使用
:::

#### ■HULFT管理画面の起動とログイン
HULFT管理画面にログインするためのrootユーザのパスワードを取得します。
1. AWS Secrets Managerのシークレット名を確認する(ControllRootPasswordの出力値）
2. AWS Secrets Managerのシークレットを選択する（上記と名前が一致）
3. rootのパスワードを取得する（シークレットの値）
![パスワード取得.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7c27518b-74cd-f11f-47e5-eefae9679e3e.png)

スタック（CFm2）のControURLにアクセスするとHULFT管理画面のログイン画面が表示されるので、以下を入力し、ログインを押下します。
　〇ユーザID　　：　root
　〇パスワード　：　AWS Secrets Managerのシークレットから取得した値
![ログイン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/a21f49dd-d2c8-1741-c44b-a3a624d04859.png)


ここまでが、今回実施した内容です。無事、管理画面にログインできました:ok_hand:


## 最後に

いかがでしたでしょうか。まずはHULFT10 for Container Servicesの環境構築をしてみました。

HULFT10 for Container Servicesの環境構築は、AWS CloudFormationによる効率的なリソース設定により、簡単でシンプルな手順で進められました。事前準備・設定で決めるべきこと、確認することを正しく行うことで、問題なく進められると思います。

AWSの操作に慣れていない場合は、ちょっとした手順で迷ってしまったりすることがあるかもしれませんが、[**オンラインマニュアル**](https://www.hulft.com/help/ja-jp/HULFT-V10/index.htm)や[**公式サイトのダウンロード資料**](https://www.hulft.com/software/hulft-10/doc_dl_reg)をベースに比較的簡単に進められると思います。

HULFT10 for Container Servicesですが、これまでのHULFTとは全く違いますね。機能ではどんな違いがあるのか・・・それはまた触ってみて、記事を書いてみようと思います。

このブログでは、今後も様々なTopics記事や接続検証等、皆さんの役に立つような記事を投稿していきたいと思います！
ここまで読んでいただきありがとうございました。それでは、また！