Exastro IT Automation v2.4をインストールしてみた（Docker Compose）

# 1. はじめに
本記事は「Exastro IT Automation2」(以下ITA)をインストールする手順を記録した記事です。
ざっくりと記載していくのでもっと詳しいインストール手順が知りたいよ！って人はExastroコミュニティサイトのインストール手順を参照してください。

[Exastroコミュニティサイトインストール手順](https://ita-docs.exastro.org/ja/2.4/installation/online/exastro/docker_compose.html)

# 2. Exastro IT Automationってそもそも何よ
ITA公式サイトの文面を引用すると
>Exastro IT Automation は、システム構築や運用業務の自動化/効率化/省力化を目的としたシステムの構成管理およびシステム設定のためのフレームワークです。

とのことです。
つまり、システム設定をIaC(Infrastructure as Code)化して一元管理するためのオープンソースフレームワークということですね。
具体的には機器情報、設定値、作業履歴などシステム構成に関する情報を管理することが可能で、その値をExcelデータとして出力することができるみたいです。
他にも、各機器のシステム構築や、運用設定などをワークフローとして管理、または実行する機能も備えていて、様々なPF構築ツールと連携も出来るそうです。

# 3. 今回使用した環境
今回インストールするExastro IT Automationのバージョンは2.4です。
用意したサーバはAlmaLinux8.8です。

今回用意したサーバのスペックは以下の通りです。
|リソース種別|今回用意したサーバのリソース値|
|---|---|
|CPU|8Cores|
|Memory|16GB|
|Storage|40GB|

# 4. 事前準備
実際にインストールする方法はとても簡単ですが、インストールコマンドを叩く前に少しだけやることがあるのでそっちを先に解決させます。
公式のインストール手順にはこう記載があります。
>Exastro のプロセスは一般ユーザ権限で起動する必要があります。(rootユーザーでのインストールはできません)
>また、利用する一般ユーザは sudoer で、全操作権限を持っている必要があります。

ということで先に一般ユーザを作っておきましょう。

# 5. 実際にインストールしてみる
ここまで事前準備を終わらせたら実施にインストールしてみましょう。
インストール方法はとっても簡単で下記コマンドを打ち込むだけです！
~~~
sh <(curl -sf https://ita.exastro.org/setup) install
~~~
コマンドを打つとシステム要件のチェックや諸々のインストールが始まります。
しばらく経つと対話形式での設定値投入が始まります。

**OASE コンテナデプロイの要否**
OASE(Operation Autonomy Support Engine)のコンテナをデプロイするかどうかを聞かれています。
OASEについて詳しく知りたい！って人は[コチラ](https://ita-docs.exastro.org/ja/2.4/manuals/oase/oase_common.html)からどうぞ。
~~~
Deploy OASE containers? (y/n) [default: y]: y
~~~
今回はOASEコンテナをデプロイするようにデフォルト値のyを入力しました。

**GitLab コンテナデプロイの要否**
GitLabのコンテナをデプロイしてGitLabとの連携を行うかどうかを聞かれています。
~~~
Deploy GitLab container? (y/n) [default: n]: n
~~~
今回はGitLabとの連携はしないのでデフォルト値のnを入力しました。

**パスワード自動生成の確認**
Exastro システムが利用する MariaDB のパスワードや、システム管理者のパスワード自動生成するかどうかを聞かれています。
~~~
Generate all password and token automatically.? (y/n) [default: y]: y
~~~
今回はデフォルト値のyでパスワードの自動生成を行いました。

**Exastro サービスのURL**
サービスのURLを指定します。
インストール手順によるとポートの指定の際には注意が必要だそうです。
>ポート番号は、OSがRed Hat Enterprise Linuxの場合は30080、それ以外は80を指定してください。

さらにインストール手順によるとサービスのURLの指定方法は3通りあるそうです。

1. IPアドレスによる指定
1. ドメインによる指定
1. LoadBalancer経由での指定
~~~
Input the Exastro service URL: http://(サーバのIPアドレス):80
~~~
今回はIPアドレスで指定しようと思います。
入力する値はhttp://(サーバのIPアドレス):80です。

**Exastro 管理用サービスのURL**
管理用のURLを指定します。
こちらもExastroサービスのURLと同じくポート番号には注意が必要です。
>ポート番号は、OSがRed Hat Enterprise Linuxの場合は30081、それ以外は81を指定してください。

ExastroサービスのURL指定と同じく管理用サービスのURLの指定方法も3通りあります。
~~~
Input the Exastro management URL: http://(サーバのIPアドレス):81
~~~
こちらもIPアドレスで指定しようと思います。
入力する値はhttp://(サーバのIPアドレス):81です。

**設定ファイル生成の確認**
さっきまで入力していた情報が出るので、ここでyと入力することによって諸々の設定投入が開始されます。
~~~
The system parameters are as follows.

System administrator password:    ********
MariaDB password:                 ********
OASE deployment:                  true
MongoDB password:                 ********
Service URL:                      http://(サーバのIPアドレス):80
Manegement URL:                   http://(サーバのIPアドレス):81
Docker GID:                       986
Docker Socket path:               /var/run/docker.sock
GitLab deployment:                No
Generate .env file with these settings? (y/n) [default: n]: y
~~~

**Exastro コンテナデプロイ実施の確認**
このままコンテナをデプロイしてよければyと入力します。
詳細な設定を編集したい場合はnと入力します。
~~~
Deploy Exastro containers now? (y/n) [default: n]: y
~~~
今回はこのままデプロイしちゃいます。

## 長い長いインストール＆デプロイを超えて…
以下の表記が出ればインストール完了です。
~~~
===============================================================================================


   NMMMMMMMMMMMd                                           MMMk
   0XXXXXXXXXXXo                                           XXXd
   0XXXo          xXXXN  cXXXX'  XXXXXXXN0   ,NXXXXXXXX. KXXXXXXX0 'XXXdWNXX.  kNNXXXXXNNW
   0XXXo           lXXXNkXXXX.        OXXXX .XXXX.         XXXd    'XXXXXXX. :NXXXXX.kXXXXXO
   0XXXXWWWWWW,     ,XXXXXXX      MWWWWXXXX..XXXXWWWM      XXXd    'XXXX:   ;XXXXXX;  XXXXXXk
   0XXXXXXXXXX,      .XXXXO     XXXXXXXXXXX.  OXXXXXXXNO   XXXd    'XXXk    xXXXl       .NXXX
   0XXXo             NXXXXXk   ,XXXc   xXXX.        ;XXXx  XXXd    'XXXl    cXXXXN     kXXXXO
   0XXXo           'NXXXXXXX0  ,XXXc   xXXX.        cXXXd  XXXd    'XXXc     kXXX; KNW..XXXX.
   0XXXXNNNNNNNo  cXXXX' dXXXN  KXXXNNNXXXXXl dNNNNNXXXx   kXXXNNK 'XXXc      .XXNXXXXXNXXc
   0XXXXXXXXXXXo xXXXX.   cXXXN.  XXXXXXk;XXl dXXXXXX        OXXX0 'XXXc          dXXXK


   0XddXXXXXX0     ;XXXd           xWK                              .WW,  kX,
   0Xd  .XX;       KX,XX. ;WW  NWodXXXWl 0WNWW. dWkWNWkXWNW  NWNNWc NXXNW NNl .WWNWO  NWOWNW:
   0Xd  .XX;      cXk xXd ;XX  KXl oXO  0Xd ,XX.lXX 'XX. KXl   ;XXX..XX,  XXl,XX. xXO 0Xo lXX
   0Xd  .XX;      XXXNXXX.;XX  KXl dXO  KXl .XX'lXK .XX. 0Xl:NX .XX'.XX,  XXl;XX  dX0 0Xl cXX
   0Xd  .XX;     dX0   0Xd KXNNXXo 'XXN; XXWNX: lXK .XX. 0Xl.XXWNXX' OXXX XXl cXNWXX  0Xl cXX


===============================================================================================



System manager page:
  URL:                http://(サーバのIPアドレス):81/
  Login user:         admin
  Initial password:   ここにパスワードが出ます

Organization page:
  URL:                http://(サーバのIPアドレス):80/{{ Organization ID }}/platform


! ! ! ! ! ! ! ! ! ! ! ! ! ! !
! ! !   C A U T I O N   ! ! !
! ! ! ! ! ! ! ! ! ! ! ! ! ! !

Be sure to reboot the host operating system to ensure proper system operation.
~~~
最後の文言で`システムが適切に動作することを確認するには、必ずホスト オペレーティング システムを再起動してください。`と言われているのでrebootをかけておきます。
~~~
systemctl reboot -i
~~~

### パスワードを控え忘れて再起動をかけてしまった私と同じそこの君！
安心してください、インストール手順に設定ファイルの場所が書いてあります。
>生成された各種パラメータは、~/exastro-docker-compose/.env に保存されています。

インストールを実行したユーザのホームディレクトリに移動して、下記2つのコマンドを打ち込みます。
~~~
cd exastro-docker-compose
grep SYSTEM_ADMIN_PASSWORD .env
~~~
すると以下のようにパスワードが出てくるので自分で設定した管理用URLにアクセスしてログインします。
~~~
SYSTEM_ADMIN_PASSWORD=ここにパスワードが出ます
~~~
Login userまで控え忘れた君！Login userはデフォルトで`admin`だぞ！

# 6. インストールの次はオーガナイゼーションの作成だ
インストールが成功したら、オーガナイゼーションを作成しないとITAは使えません。
ここから先はブラウザ上のGUIで操作します。
まずは管理用URLへアクセスし、インストール時に提示されたログイン情報を使ってログインします。
管理用URLからログイン出来たら公式ドキュメントの[2.3.3. オーガナイゼーション作成](https://ita-docs.exastro.org/ja/2.4/manuals/platform_management/organization.html#organization-creation)に従ってオーガナイゼーションを作成します。

注意点として、**オーガナイゼーションIDは後の変更が出来ない**事と**インストール済みのドライバは削除できない**ので慎重に設定しましょう。

# 7. 最後にワークスペースを作って完了
オーガナイゼーションが完成したらワークスペースを作るためにサービスURLの方にアクセスします。
サービスURLはインストール完了時に表示されていたものを使います。
~~~
http://(サーバのIPアドレス):80/{{ Organization ID }}/platform
~~~
例えばオーガナイゼーションIDが`org001`だった場合はこうなります。
~~~
http://(サーバのIPアドレス)/org001/platform
~~~
これでアクセスできます。
アクセスが出来たら公式ドキュメントの[2.3.1. ワークスペースの作成手順](https://ita-docs.exastro.org/ja/2.4/manuals/organization_management/workspace.html#id3)に従ってワークスペースを作成します。

オーガナイゼーション管理者でログインしないとワークスペースが作成できないので、作成ボタンが表示されない！という人はオーガナイゼーション管理者でログインし直して下さい。
例によって**ワークスペースIDは後の変更が出来ない**ので慎重に設定してください。

# 8. ようこそ IT Automationの世界へ
いかがでしたか？
今回はITAのインストール方法をまとめてみました。
ここまで設定出来たらITAはもう使える状態になっているはずです。
ここから色んな作業を自動化してしまいましょう！
ITAの使い方は[Learnのクイックスタート](https://ita-docs.exastro.org/ja/2.4/learn/quickstart/index.html)を見るとシナリオ形式で流れに沿って使い方が学べます。
さらに各機能の詳しい使い方は[マニュアル](https://ita-docs.exastro.org/ja/2.4/manuals/index.html)を見ると細かく書いてあるので困ったときは見てみるといいでしょう。