0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Exastro IT Automation2.4のAnsible-Legacyモードを使ってみた

Last updated at Posted at 2024-11-12

1. はじめに

Exastro IT Automation(以下Exastro)には、Ansibleと連携するAnsible-Driverがあり、Ansible-Legacy、Ansible-LegacyRole、Ansible-Pioneerという3つのモードがあります。
今回はその中でもAnsible-Legacyモードを使ってみたいと思います。

Ansible-Legacyモードについて先に詳しく知りたい!という方はコミュニティサイトのドキュメントを読んでみてくださいね。
Ansible-Legacy

2. Ansible-Legacyとは?

Ansible-Legacyは3つあるExastroのAnsible-Driverモードの中でも一番基本のモードです。
単体のYAMLファイルを「Playbook素材集」にて登録、その後作業内容に合わせて、「Movement」で、登録したいくつかのYAMLファイルを組み合わせて実行といった具合のことが出来ます。

3. 今回やること

今回はAnsible-Legacyを使って「Apache」と「Tomcat」のインストールと起動を行ってみたいと思います。
また、Tomcat上で簡単なHTMLファイルを公開してみたいと思います。
Movementを組み合わせたConductorを作り、パラメータシートから変数を代入して実行させます。
こちらが構成環境予定図になります。今回の環境では80番ポートと8080番ポートは解放しています。
diagram.png

4. Ansible-Legacyモードを触る前の準備をします

早速Ansible-Legacyモードを触ってみたいところですが、事前に準備することが2つほどあるのでその準備をしましょう。

作業対象ホストの登録

作業の対象となるホストをExastroに登録します。
「Ansible共通」から「機器一覧」を選び登録ボタンから機器の登録をします。
SS1.png

入力が完了したら上部の編集確認ボタンから編集反映ボタンで登録しちゃいます。

メニューグループの作成

パラメータシートを所属させるための、メニューグループを作ります。
このパラメータシートは後の手順で、変数と紐づけて値を代入します。
通常のものと、参照用の2つを作成します。

メニューグループ名(ja) メニューグループ名(en) パラメータシート作成利用フラグ 表示順序
Ansible-Legacy実践用 Ansible-Legacy for Practice True 250
Ansible-Legacy実践用(参照用) Ansible-Legacy Practice (Reference) True 260

「管理コンソール」から「メニューグループ管理」を選び登録ボタンからメニューグループの登録をします。
SS2.png

入力が完了したら上部の編集確認ボタンから編集反映ボタンで登録してしまいます。

Playbookの確認と設定ファイルの準備

Exastroには利便性の向上を目的としたサンプルPlaybookが初期状態でPlaybook素材集に登録されているそうです。
今回はこのPlaybook素材を活用していきましょう。

使用するのは以下のサンプルPlaybookです。
「Ansible-Legacy」の「Playbook素材集」から、以下の5つのPlaybookを探してチェックマークを付けて編集を押下してください。

項番 Playbook素材名 Playbook素材
80 ~[Exastro standard] Copy file Files_copy_local-to-remote.yml
230 ~[Exastro standard] Enable service startup System_service_enabled.yml
440 ~[Exastro standard] Install dnf Packaging_Os_dnf_present.yml
580 ~[Exastro standard] Run command Commands_command.yml
610 ~[Exastro standard] Start service System_service_started.yml

実際に利用するPlaybookの中身を見ていきましょう。
虫眼鏡マークからymlファイルの中身を確認することができます。

SS2.png

Packaging_Os_dnf_present.yml・・・指定したパッケージをインストールします。変数には複数具体値変数が代入されます。

Packaging_Os_dnf_present.yml
# This Playbook file installs packages specified by "ITA_DFLT_Install_Target_packages".
# "ITA_DFLT_Install_Target_packages" can specify multiple files (list type).
# The task results are displayed at debug level 3 (-vvv).
- name: Install packages with the dnf package manager
  dnf:
    name: "{{ item }}"
    state: present
  with_items:
    - "{{ ITA_DFLT_Install_Target_packages }}"
  register: ITA_RGST_DnfInstall_Result

- name: Debug the result
  debug:
    var: ITA_RGST_DnfInstall_Result
    verbosity: 3


Files_copy_local-to-remote.yml・・・設定ファイルを配置します。

Files_copy_local-to-remote.yml
- name: Copy data from local to remote
  copy:
    src: "{{ item.0 }}"
    dest: "{{ item.1 }}"
    remote_src: no
  with_together:
    - "{{ ITA_DFLT_Src_Files }}"
    - "{{ ITA_DFLT_Dest_Files }}"

System_service_started.yml・・・指定したサービスを起動します。

System_service_started.yml
- name: Start service
  service:
    name: "{{ item }}"
    state: started
  with_items:
    - "{{ ITA_DFLT_Services }}"

System_service_enabled.yml・・・指定したサービスを自動的に起動するようにします。

System_service_enabled.yml
- name: Enable service
  service:
    name: "{{ item }}"
    enabled: true
  with_items:
    - "{{ ITA_DFLT_Services }}"

Commands_command.yml・・・サービスが起動したことを確認します。

Commands_command.yml
# This Playbook file is simple. 
# It passes the variable given string, "ITA_DFLT_Command_String", to the Ansible command module and executes it.
# The task results are displayed at debug level 3 (-vvv).
- name: Execute commands on targets
  command: "{{ ITA_DFLT_Command_String }}"
  register: ITA_RGST_Command_Result

- name: Debug the result
  debug:
    var: ITA_RGST_Command_Result
    verbosity: 3


Playbookは以上ですが、Files_copy_local-to-remote.ymlで使用するApacheの設定ファイルを用意します。

httpd_config.txt
# ----- ITA Legacy Practice -----
ServerRoot "/etc/httpd"
Listen 80
Include conf.modules.d/*.conf
User apache
Group apache
ServerAdmin root@localhost
ServerName www.example.com:80

<Directory />
  AllowOverride none
  Require all denied
</Directory>
  DocumentRoot "/var/www/html"
<Directory "/var/www">
  AllowOverride None
  Require all granted
</Directory>
<Directory "/var/www/html">
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>
<IfModule dir_module>
  DirectoryIndex index.html
</IfModule>
<Files ".ht*">
  Require all denied
</Files>
  IncludeOptional conf.d/*.conf
  ErrorLog "logs/error_log"
  LogLevel warn
<IfModule log_config_module>

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common
 
    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>
CustomLog logs/access_log combined

</IfModule>
<IfModule alias_module>
  ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
  AllowOverride None
  Options None
  Require all granted
</Directory>
<IfModule mime_module>
  TypesConfig /etc/mime.types
  AddType application/x-compress .Z
  AddType application/x-gzip .gz .tgz
  AddType text/html .shtml
  AddOutputFilter INCLUDES .shtml
</IfModule>
  AddDefaultCharset UTF-8
<IfModule mime_magic_module>
  MIMEMagicFile conf/magic
</IfModule>
EnableSendfile on
IncludeOptional conf.d/*.conf

また、Tomcat上で公開するHTMLファイルも用意します。

index.html
<html>
  <head>
    <meta charset="UTF-8">
    <title>私のページ</title>
  </head>
  <body>
    Ansible-Legacy実践
    <br>
  </body>
</html>

これらのファイルは後に「ファイル管理」で登録を行います。

5. いよいよAnsible-Legacyモードを触ります!

ここまででAnsible-Legacyモードを触る準備が出来ました。
ここからAnsible-Legacyモードで「Apache」と「Tomcat」をインストールしていきましょう!

Movementの作成

「Ansible-Legacy」から「Movement一覧」を選び登録ボタンからMovementの登録をします。
今回は以下のように設定しました。

Movement名 ホスト指定形式
Install_Packages IP
Start_Service IP

SS3.png
入力が完了したら上部の編集確認ボタンから編集反映ボタンで登録しましょう!

素材ファイルの登録

「Ansible共通」から「ファイル管理」を選び登録ボタンからファイルの登録をします。
Playbook以外に使用するファイルがあれば今回のようにここで登録を行います。

ファイル埋込変数名 ファイル素材
CPF_httpd_conf httpd_config.txt
CPF_index_html index.html

SS5.png
入力が完了したら上部の編集確認ボタンから編集反映ボタンで登録!

MovementとPlaybookの紐付

「Ansible-Legacy」から「Movement-Playbook紐付」を選び登録ボタンから登録をします。

Movement プレイブック素材 インクルード順序
Install_Packages ~[Exastro standard] Install dnf 1
Start_Service ~[Exastro standard] Copy file 1
Start_Service ~[Exastro standard] Start service 2
Start_Service ~[Exastro standard] Enable service startup 3
Start_Service ~[Exastro standard] Run command 4

SS6.png

入力が完了したら上部の編集確認ボタンから編集反映ボタンで登録!登録!登録!

Conductorを作成

MovementをまとめてConductorを作成します。
「Conductor」から「Conductor編集/作業実行」を選びConductorの登録をします。

名称を追加したら、下部のMovement名と書いてある場所からMovementをドラッグ&ドロップで配置していきます。
配置が完了したら「Start」のノードから「in」と「out」を接続し「End」のノードまで繋いでいきます。
ノードの順番は「Install_Packages」→「Start_Service」の順番にします。
Conductor名称は「サービス追加」にします。
SS7.png

画像のようにノードが接続出来たら上部の登録ボタンを押してConductorを登録しよう!

オペレーションの登録

「基本コンソール」から「オペレーション一覧」を選び登録ボタンを押してオペレーションの登録をします。
実施予定日時は目安なので実際に実行する日時である必要はありません。

オペレーション名 実施予定日時
Install Apache 任意
Install Tomcat 任意

SS8.png
適当な日付を入れることが出来たら上部の編集確認ボタンから編集反映ボタンで登録するんだ!

パラメータシートの作成

「パラメータシート作成」から「パラメータシート定義・作成」を選びパラメータシートの作成をします。
まずはパラメータシート名に「Ansible-Legacy実践編」、パラメータシート名(REST)に「Ansible-Legacy_in_practice」と入力します。
次に「対象メニューグループを選択」ボタンで対象メニューグループを選びます。
SS9.png

対象メニューグループは以下の図のように、「入力用」を「Ansible-Legacy実践用」に「参照用」を「Ansible-Legacy実践用(参照用)」に指定して決定ボタンで確定させます。
image.png

対象メニューグループを定めたら、パラメータシートの項目名を決めていきます。
項目ボタンで項目を増やしたら、下記の6項目を設定していきます。

設定項目 項目1設定値 項目2設定値 項目3設定値
項目の名前 パッケージ名 サブパッケージ名 ファイルコピー元
項目の名前(Rest API用) ITA_DFLT_Install_Target_packages ITA_DFLT_Install_Target_packages_sub ITA_DFLT_Src_Files
最大バイト数 32 32 32
設定項目 項目4設定値 項目5設定値 項目6設定値
項目の名前 ファイルコピー先 サービス名 コマンド
項目の名前(Rest API用) ITA_DFLT_Dest_Files ITA_DFLT_Services ITA_DFLT_Command_String
最大バイト数 64 32 32

SS10.png

SS10.1.png

ここまで全部出来たら作成ボタンでパラメータシートを作成しちゃいましょう!

パラメータシートにパラメータを登録

ここからはターゲットホストの設定に使用するデータを登録します。
「Ansible-Legacy実践用」から「Ansible-Legacy実践編」を選び登録ボタンを押してパラメータの登録をします。

ホスト名 オペレーション名 パッケージ名 サブパッケージ名 ファイルコピー元
(対象のホスト) Install Apache httpd (空欄) "{{ CPF_httpd_conf }}"
(対象のホスト) Install Tomcat tomcat tomcat-webapps "{{ CPF_index_html }}"
ファイルコピー先 サービス名 コマンド
/etc/httpd/conf/httpd.conf httpd systemctl status httpd
/usr/share/tomcat/webapps/ROOT/index.html tomcat systemctl status tomcat

SS11.png

SS11.1.png

データが入れられたら上部の編集確認ボタンから編集反映ボタンで登録しちゃおう!

代入値自動登録設定

「Ansible-Legacy」から「代入値自動登録設定」を選び登録ボタンを押して代入値自動登録設定をします。

メニュー 登録方式 Movement Value変数-変数名 代入順序
代入値自動登録用:Ansible-Legacy実践編:パラメータ/パッケージ名 Value型 Install_Packages Install_Packages:ITA_DFLT_Install_Target_packages 1
代入値自動登録用:Ansible-Legacy実践編:パラメータ/サブパッケージ名 Value型 Install_Packages Install_Packages:ITA_DFLT_Install_Target_packages 2
代入値自動登録用:Ansible-Legacy実践編:パラメータ/ファイルコピー元 Value型 Start_Service Start_Service:ITA_DFLT_Src_Files
代入値自動登録用:Ansible-Legacy実践編:パラメータ/ファイルコピー先 Value型 Start_Service Start_Service:ITA_DFLT_Dest_Files
代入値自動登録用:Ansible-Legacy実践編:パラメータ/サービス名 Value型 Start_Service Start_Service:ITA_DFLT_Services
代入値自動登録用:Ansible-Legacy実践編:パラメータ/コマンド Value型 Start_Service Start_Service:ITA_DFLT_Command_String

SS12.png

設定が終わったら上部の編集確認ボタンから編集反映ボタンで登録いってみよう!

作業実行

「Conductor」から「Conductor編集/作業実行」を選び画面上部の選択ボタンを押して作成したConductorを呼び出します。
SS13.png

呼び出せたら作業実行ボタンでオペレーションを選択し、作業を実行します。
先に「Install Apache」のオペレーションを選択し作業実行を行い、次に「Install Tomcat」のオペレーションで作業実行をします。
SS14.png

実行結果確認

「Conductor」から「Conductor作業確認」を選び詳細を確認したいノードの「Done」または「ERROR」の部分をクリックすると、作業の詳細を確認することが出来ます。
SS15.png

image.png

作業実行が完了した後にhttp://(ターゲットホストのIPアドレス):80にアクセスしてみると、Apacheのテストページが表示されました!
http://(ターゲットホストのIPアドレス):8080にもアクセスしてみると、Ansible-Legacy実践というページが表示されています!

6. いかがでしたか?

今回はAnsible-Legacyモードを使ってApacheとTomcatをインストールしてみました。
パラメータシートの値を変更することでApacheやTomcat以外もインストールすることが出来るので、他にも色々試してみてください!
もっとAnsible-Legacyモードについて詳しく知りたい!という方はコチラからどうぞ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?