Exastro IT Automation の Setting samples(VMware版)を導入してみた

#はじめに

Exastro IT Automation Setting samplesにVMwareモデルが追加されていたので使ってみました。

# VMwareモデルイメージ
AnsibleとTerraformを使ってVMware環境にNWを含めた下記環境が構築されるみたいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/95f4826f-b2fe-d6e9-91a0-eda3aab27553.png)

#VMware環境について
VMware環境内にシステム構築するためvSphere、NSX Manager、NSX Edgeが必要になります。
今回は既存の環境にvSphere、NSX Manager、NSX Edge導入された環境がありましたので
その環境を使用しました。
詳細に関しては [Setting samples VMware Model 導入手順](https://exastro-suite.github.io/SettingSamples-VMware/setting-samples-vmware-install_ja.pdf) Ⅱ-1. 導入準備を参照してみて下さい。

###NSX-Tの簡易図
今回試したNSX-T環境の簡易図になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/bb02b409-e353-e9a3-3bc8-36c07b917233.png)

#導入までの流れ
項目を書き出してみると結構ありますね・・・

##準備/導入編
1. ITAのインストール
1. Setting samplesのインポート
1. VMware環境にテンプレートを作成
1. VMware環境にインターネット接続可能なネットワークの準備
1. Terraform Cloud Agentの準備

##仕込編
1. インターフェイス情報(Terraform)
1. Organizations管理
1. Workspaces管理
1. Workspaces設定(Terraform Cloud)
1. 基本コンソール設定
1. NSX-Tの機器情報登録
1. vSphereの機器情報登録
1. Web01サーバ作成情報登録
1. Web02サーバ作成情報登録
1. AP01サーバ作成情報登録
1. DB01サーバ作成情報登録
1. 踏み台サーバ作成情報登録
1. 踏み台サーバ接続情報登録
1. 踏み台サーバDNS_PROXY設定登録

##実行編
1. VMwareモデルの実行
1. 実行結果の確認



# 準備/導入編
## 1. ITAのインストール
[Exastro IT Automation クイックスタート (ver1.8.0)](https://qiita.com/y-masaya3210/items/68920237c03e5d4f4776)を参考にITA ver1.8.1をVMware環境に接続できる環境にサーバを構築しインストールしました。

## 2. Setting samplesのインポート
汎用的なシステムモデルを構築することができるSetting sampleのパッケージをITAにインポートします。

### 2.1 Setting samplesのダウンロード
[GitHubリリースページ](https://github.com/exastro-suite/SettingSamples-VMware/releases)からパッケージファイルをダウンロードします。
ダウンロードするファイル名は「cloud-system-template-vmware-1.0.0-exastro-1.8.1.kym」です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/44ef6275-a748-6f78-f07d-beedd78250d0.png)


### 2.2 Setting samplesのインポート
1. ITAにログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/cdb506fa-fdbe-8e68-0b99-632182d34c5d.png)

1. 「エクスポート／インポート」＞「メニューインポート」を選択、「ファイルを選択」でダウンロードしたパッケージファイルを開き、アップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1770057/13623d6e-fc39-3cc1-3f3d-6f507ab26b29.png)

1. ファイルのアップロードが完了したらすべてのメニューを選択して、画面最下部の「インポート」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1770057/eb1c5e22-57f5-9f3b-0b52-7157ff8b54e8.png)

1. 「エクスポート/インポート管理」＞「フィルタ」を押下し、インポートが完了しているか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/51a947b5-0f7a-b9b9-e0e4-e1f1843f0df2.png)

## 3. VMware環境にテンプレートを作成
VMwareモデルでは利用者が用意したテンプレートを使用し、各VMが自動構築されます。
### テンプレート作成方法
1. Exastro IT Automationの「Ansible共通」-「ファイル管理」メニューに登録されている「id_rsa.pub」をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/0a680277-6c3a-9163-f304-3afcbbd41f00.png)


1. CentOS7のテンプレートを作成します。
 テンプレート化の手順はVMware公式のドキュメント[vSphere Client でのテンプレートの作成](https://docs.vmware.com/jp/VMware-vSphere/6.0/com.vmware.vsphere.hostclient.doc/GUID-40BC4243-E4FA-4A46-8C8B-F50D92C186ED.html)などを参照して作成しました。
またテンプレートに配置するSSHの公開鍵(id_rsa.pub)はQiita記事の[SSHの公開鍵認証設定をする](https://qiita.com/jinnai73/items/f1822f2e4d567847e215)を参考にしました。


## 4.VMware環境にインターネット接続可能なネットワークの準備
構築された各VMは、踏み台サーバ経由でyumのパッケージをインストールするため、事前に外部接続できるネットワークをVMware環境に設定するか管理者より払い出しを受けて下さい。
私は管理者よりネットワークアダプター名とIPアドレスを払い出してもらいました。
ご自身で設定する場合は外部ネットワークの設定方法はVMwareの公式サイトを参照して下さい。
[vmware docs](https://docs.vmware.com/jp/VMware-vSphere/6.7/com.vmware.vsphere.networking.doc/GUID-35B40B0B-0C13-43B2-BC85-18C9C91BE2D4.html)

## 5.Terraform Cloud Agentの準備
Terraform Cloud Agentを使うことでオンプレミスのVMware基盤にプロビジョニングすることが出来ます。
Terraform Cloud Agentは無償版では使えないTerraform Cloud for Businessの有償機能のため
個人での利用は難しいかもしれません。
有償機能が30日無料で利用できるFree Trialの記事もありましたので
公式ページなどを確認してみて下さい。
今回はTerraform Cloud for Businessの既存環境があり
Terraform Cloud Agentをインストールするだけでした。
[HashiCorp公式](https://www.hashicorp.com/products/terraform/pricing)
[Terraform Cloud Free Trial 記事](https://www.hashicorp.com/blog/announcing-free-trials-for-hashicorp-terraform-cloud-paid-offerings)

Terraform Cloud Agentのサポートにはx86_64ビットのLinuxオペレーティングシステムと
Dockerコンテナ2種類あり今回はLinuxオペレーティングシステム版を使用しました。
インストール要件や手順はTerraformの公式サイトを参照してインストール設定しました。
[Terraform Cloud Agentインストール手順](https://www.terraform.io/docs/cloud/agents/index.html)

#仕込編

## 1. インターフェイス情報(Terraform)
ITAにTerraform cloudの接続情報を登録します。

1. 「Terraform」メニューグループ＞「インターフェイス情報」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1. 「User Token」に事前準備で作成したTerraform Cloudのユーザトークンを入力する。

※Proxy設定に関しては必要であれば入力する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/47b52532-e0fc-33b8-9932-77effe3efc75.png)

## 2. Organizations管理
ITAにTerraform cloudの接続ユーザが所属するOrganizations(アカウントが所属している組織)を登録します。

1. 「Terraform」メニューグループ＞「Organizations管理」をクリックする。
1. 「OrganizationID=250001」の更新ボタンをクリックする。
1. 「Organization Name」と「Email address」に既存のOrganizations名とメールアドレスを入力し更新ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/a3cc14ee-7070-55c4-2d4a-515e3ae3b5a8.png)

今回は既存のOrganizations名とメールアドレスを入力しましたがITAから新規にOrganizationsを作成することも可能です。

1. 作成方法は新規Organizations名とメールアドレスを入力し更新する。
1. 連携状態チェックボタンをクリックする。
1. 登録ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/66f1b0f4-333a-52df-d87c-8acaa33e0751.png)

## 3. Workspaces管理
ITAにNSX-T構築とVM構築時のTerraform実行状態を保存する場所を登録します。
### 3.1 NSX-T用Workspaces登録
1. 「Terraform」メニューグループ＞「Workspaces管理」をクリックする。
1. 「Workspace ID=250001」の更新ボタンをクリックする。
1. 「Organization」を「2. Organizations管理」で登録したOrganizations名を設定し「Workspace Name」既存のWorkspace Nameを入力し更新ボタンをクリックしました。<br>
今回は既存のWorkspaces名を入力しましたが、Organizationsを新規に登録した手順で新規のWorkspacesを作成することも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/ddc15b49-e57d-969c-71cd-5ddff3199cff.png)

### 3.2 vSphere用Workspaces作成
1. 「Terraform」メニューグループ＞「Workspaces管理」をクリックする。
1. 「Workspace ID=250002」の更新ボタンをクリックする。
1. 「Organization」を「2. Organizations管理」で登録したOrganizations名を設定し「Workspace Name」既存のWorkspace Nameを入力し更新ボタンをクリックしました。<br>
今回は既存のWorkspaces名を入力しましたが、Organizationsを新規に登録した手順で新規のWorkspacesを作成することも可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/91cfd384-3c86-63ff-8c27-2a6305a27346.png)

## 4. Workspaces設定(Terraform Cloud)
Terraform上の各Workspacesに今回使用するTerraform Cloud Agentを設定します。
### 4.1 NSX-T用WorkspacesにAgentの設定
1. Terraform Cloudにアクセスします。
1. 「3.1 NSX-T用Workspaces作成」で設定した「Workspaces名」-「Settings」-「General」をクリックする。
1. 「Execution Mode」の設定を「Agent」と「Agent pool」を設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/b038076d-e821-dc5b-3caa-2dacbf238998.png)

### 4.2 vSphere用WorkspacesにAgentの設定
1. Terraform Cloudにアクセスします。
1. 「3.2 vSphere用Workspaces作成」で設定した「Workspaces名」-「Settings」-「General」をクリックする。
1. 「Execution Mode」の設定を「Agent」と「Agent pool」を設定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/b80e4dc1-8aaa-848e-f525-702cf04c6a03.png)


## 5. 基本コンソール設定
Terraformで作成される踏み台サーバ(VM)に設定する外部通信可能なIPアドレスを登録します。

1. 「基本コンソール」メニューグループ> 「機器一覧」をクリックする。
1. 「管理システム項番=250002」の更新ボタンをクリックする。
1. 「IPアドレス」に事前準備で用意したインターネット接続可能なネットワークのIPアドレスを入力する。
1. 更新ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/b9b17605-116c-f5c8-9148-75627e587c57.png)

## 6. NSX-Tの機器情報登録
NSX-Tの接続情報や既存設定を登録します。

1. 「NSX-T(入力用)」メニューグループ >「NSX-T設定」をクリックする。
1. 「ID=250001」の更新ボタンをクリックする。
1.  NSX-Tマネージャー名：接続するNSX-TのIPアドレスを入力する。
1.  NSX-Tログインユーザ名：接続するNSX-Tのログインユーザ名を入力する。
1.  NSX-Tログインパスワード：接続するNSX-Tのパスワードを入力する。
1.  オーバレイトランスポートゾーン名：エッジクラスタに接続されるオーバレイトランスポートゾーンを入力する。
1.  edgeクラスタ名：仮想ネットワークの作成先となるエッジクラスタを入力する。
1.  edgeノード01名：エッジクラスタに含まれる1つ目のエッジノード名を入力する。
1.  edgeノード02名：エッジクラスタに含まれる2つ目のエッジノード名を入力する。
1.  踏み台サーバIPアドレス：変更不要<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/c29d3201-b229-11d2-77d4-17d655cfe593.png)

## 7. vSphereの機器情報登録
vSphereの接続情報やVM構築先を登録します。

1. 「VM作成(入力用)」メニューグループ >「vSphere設定」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1. vSphereホスト名／IPアドレス：接続するvCenterのIPアドレスを入力する。
1. vSphereログインユーザ：接続するvCenterのログインユーザ名を入力する。	
1. vSphereログインパスワード：接続するvCenterのログインパスワードを入力する。
1. データセンター名：仮想マシン作成先データセンター名を入力する。
1. データストア名：仮想マシン作成先のデータストア名を入力する。
1. クラスタ名：仮想マシン作成先のクラスタ名を入力する。
1. 更新ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/ac85b7ae-ae7f-6425-325f-74e7dbecdb0f.png)


## 8. Web01サーバ作成情報登録
Terraformで作成されるWeb01サーバのスペック等を登録します。

1. 「VM作成(入力用)」メニューグループ >「Web01サーバ設定」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1.  Web01用テンプレート名：事前に作成したテンプレート名入力する。
1.  Web01サーバ名：任意のサーバ名を入力する。今回はそのまま。
1.  CPU：作成する仮想マシンのCPUの値を入力する。今回はそのまま。
1.  メモリ：作成する仮想マシンのメモリの値を入力する。今回はそのまま。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/c3f31693-93d4-370f-12bf-47b3955d1635.png)

## 9. Web02サーバ作成情報登録
Terraformで作成されるWeb02サーバのスペック等を登録します。

1. 「VM作成(入力用)」メニューグループ >「Web02サーバ設定」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1.  Web02用テンプレート名：事前に作成したテンプレート名入力する。
1.  Web02サーバ名：任意のサーバ名を入力する。今回はそのまま。
1.  CPU：作成する仮想マシンのCPUの値を入力する。今回はそのまま。
1.  メモリ：作成する仮想マシンのメモリの値を入力する。今回はそのまま。
1. 更新ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/560de431-60d8-4a03-48af-567129317114.png)

## 10. AP01サーバ作成情報登録
Terraformで作成されるAP01サーバのスペック等を登録します。

1. 「VM作成(入力用)」メニューグループ >「AP01サーバ設定」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1.  AP01用テンプレート名：事前に作成したテンプレート名入力する。
1.  AP01サーバ名：任意のサーバ名を入力する。今回はそのまま。
1.  CPU：作成する仮想マシンのCPUの値を入力する。今回はそのまま。
1.  メモリ：作成する仮想マシンのメモリの値を入力する。今回はそのまま。
1. 更新ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/662252c0-190f-2816-afe8-24161d60b640.png)

## 11. DB01サーバ作成情報登録
Terraformで作成されるDB01サーバのスペック等を登録します。

1. 「VM作成(入力用)」メニューグループ >「DB01サーバ設定」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1.  DB01用テンプレート名：事前に作成したテンプレート名入力する。
1.  DB01サーバ名：任意のサーバ名を入力する。今回はそのまま。
1.  CPU：作成する仮想マシンのCPUの値を入力する。今回はそのまま。
1.  メモリ：作成する仮想マシンのメモリの値を入力する。今回はそのまま。
1. 更新ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/ede31928-9565-1ed5-6330-fe31d759857d.png)

## 12. 踏み台サーバ作成情報登録
Terraformで作成される踏み台サーバのスペック等を登録します。

1. 「VM作成(入力用)」メニューグループ >「踏み台サーバ設定」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1. 踏み台サーバ用テンプレート名：事前に作成したテンプレート名入力する。
1. 踏み台サーバ名：任意のサーバ名を入力する。今回はそのまま。
1. CPU：作成する仮想マシンのCPUの値を入力する。今回はそのまま。
1. メモリ：作成する仮想マシンのメモリの値を入力する。今回はそのまま。
1. 外部接続用ネットワークアダプター名：事前準備で用意した外部接続用ネットワークアダプター名を入力する。
1. 外部接続IPアドレス：変更不要<br>
1. 外部接続用サブネットマスク：事前準備で用意した外部接続用サブネットマスクを入力する。
1. 外部接続用ゲートウェイ：事前準備で用意した外部接続用ゲートウェイを入力する。
1. 更新ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/b635b9ef-1e77-0b73-cd8c-c2002d763fba.png)

## 13. 踏み台サーバ接続情報登録
Terraformで作成される踏み台サーバへの接続が登録されています。

1. 「VM作成(入力用)」メニューグループ >「踏み台サーバ情報」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1.  IPアドレス／ログインID：踏み台サーバになっていることを確認する。
1.  更新ボタンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/983a68aa-0194-9526-582b-4845354c14ad.png)

## 14. 踏み台サーバDNS_PROXY設定登録
Terraformで作成される踏み台サーバに設定するDNSとPROXY設定を登録します。

1. 「VM作成(入力用)」メニューグループ >「踏み台サーバ作成」をクリックする。
1. 「No=1」の更新ボタンをクリックする。
1.　DNS設定：踏み台サーバに設定するDNSを入力する。
1.  プロトコル：踏み台サーバに設定するProxyのプロトコル部分を入力する。※必要に応じて
1.  ホスト：踏み台サーバに設定するProxyのホスト部分を入力する。※必要に応じて
1.  ポート：踏み台サーバに設定するProxyのポート部分を入力する。※必要に応じて
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/738676e5-96d1-defb-7354-63a299cd23f0.png)

#実行編
## 1.VMwareモデルの実行
1. 「Conductor」＞「Conductor作業実行」へ移動する。
1. 「Conductor[一覧]」の「VMware環境作成」を選択する。
1. 「オペレーション[一覧]」から「VMware-Model」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/0bcac4c8-95c2-05d3-33ac-4141201379cb.png)

## 2.実行結果の確認
###ITAの確認
ITAのConductor実行結果画面のStatusに「正常終了」が表示されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/9541a8ad-9d5c-3420-27e1-a3ac7f47b57e.png)

###Webサーバ
踏み台サーバからcurlでロードバランサーにアクセスし、Web01サーバとWeb02サーバがラウンドロビンされていることを確認します。

1. 踏み台サーバへSSHログインする。
1. ロードバランサー(192.168.10.100)に対してcurlコマンドでラウンドロビンによって、Webサーバ01とWebサーバ02から交互に応答があることを確認しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/8f1e8173-159a-cbe0-886e-9e508b59fb9d.png)


###APサーバ
SSHでAPサーバに接続しDjangoがインストールされていることを確認します。

1. 踏み台サーバへSSHログインする。
1. APサーバへSSHログインし、pipコマンドでDjangoがインストールされていることを確認しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/1498d34b-fb32-44c3-1fb7-a084258d0592.png)

###DBサーバ
SSHでDBサーバに接続しMariadbがインストールされていることを確認します。

1. 踏み台サーバへSSHログインする。
1. DBサーバへSSHログインし、mysqlコマンドでバージョンを確認しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/758757/d7fc38ed-5257-db38-c13f-d2f453629cbf.png)

#最後に
AWSなどのクラウド基盤と比べるとオンプレ環境なので事前準備などが多く実行するまでが大変でした。

#関連リンク

Qiita記事
・[Exastro IT Automation クイックスタート (ver1.8.0)](https://qiita.com/y-masaya3210/items/68920237c03e5d4f4776)

ITAコミュニティサイト
・[Exastro IT Automation コミュニティサイト](https://exastro-suite.github.io/it-automation-docs/setting-samples_ja.html#ServiceNow-model)
・[VMwareモデル 概要](https://exastro-suite.github.io/SettingSamples-VMware/setting-samples-vmware-overview_ja.pdf)
・[VMwareモデル 導入手順](https://exastro-suite.github.io/SettingSamples-VMware/setting-samples-vmware-install_ja.pdf)
・[GitHubリリースページ](https://github.com/exastro-suite/SettingSamples-ServiceNow/releases)
・[ITA_利用手順マニュアル エクスポート/インポート](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_エクスポート／インポート.pdf)
・[ITA_利用手順マニュアル Ansible-driver](https://exastro-suite.github.io/it-automation-docs/asset/Documents_ja/Exastro-ITA_利用手順マニュアル_Ansible-driver.pdf)