7
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?

More than 3 years have passed since last update.

Exastro IT Automationの3つのAnsibleモードを使ってみた(Ansibleモード共通設定、①Ansible-Legacy編)

Last updated at Posted at 2020-09-14

関連リンク

#はじめに
Exastro IT Automation(以下ITAと略)には、Ansibleと連携するAnsible-Driverがあり、Ansible-Legacy、Ansible-LegacyRole、Ansible-Pioneerという3つのモードがあります。
それぞれのモードについては、コミュニティサイトのAnsibleとの連携(座学編)に詳しく書いてありました。

今回はこのAnsibleの3つのモードを、3回に分けて実施していこうと思います。
手順については、Ansibleとの連携(実習編)を参考にしました。

まずは本記事で、Ansible-Driverを使う上で共通の作業と、Ansible-Legacyを説明します。
前回の記事のクイックスタートでもAnsible-Legacyを使いましたが、今回はパラメータシートや代入値自動登録設定、ファイル管理機能なども連携させて、より高度な使い方をしていきます。

##作業環境
前回の記事のクイックスタートでは、作業対象がITAサーバ自身でしたが、今回は作業対象であるターゲットサーバを新たに用意しました。


  • Exastro IT Automation 1.5.0
  • CentOS Linux 7(ITAサーバ)
  • CentOS Linux 7(targetサーバ)
  • Windows 10(ITAクライアント)
  • Google Chrome(Win10側)

image.png

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

例えば、Playbook素材として
「OS共通初期手順」「HTTPサーバインストール」「DBMSインストール」
を登録すると、

Webサーバを構築したいときは
「OS共通初期手順」と「HTTPサーバインストール」
でMovementを作ればいいし、

DBサーバを構築したいときは
「OS共通初期手順」と「DBMSインストール」
を組み合わせればいいというわけです。

作業によって、YAMLファイルを使いまわせるのは便利ですよね。

もちろん設定値は変数にしておくことで再利用性を高めることができます。
変数への代入値は、直接設定も可能ですが、ITAで作成したパラメータシートと紐づけて代入することもできます。
変数とパラメータシートの紐付は、Ansible-Legacyに限らず、3モードで共通の機能です。

Ansible-Legacyについて詳しくは、コミュニティサイトのAnsible-Driver座学編を参考にして下さい。

#Ansibleモード共通設定

AnsibleDriverを使う前に、今回①~③のAnsible3モードでパラメータシートを作成するために必要となる、「作業対象ホストの登録」と「メニューグループの作成」について説明します。

##作業対象ホストの登録
作業の実行対象となるホストをITAに登録します。

「基本コンソール」メニューグループ >> 「機器一覧」
を選択し、登録作業ボタンより登録作業を開始します。

必須入力項目は「ホスト名」「IPアドレス」「ログインユーザID」「ログインパスワード管理」
「ログインパスワード」「認証方式」です。

上述の通り、今回はCentOS7を別に構築し、それをターゲットとしました。
image.png


①ターゲットサーバの「ホスト名」「IPアドレス」「ログインユーザID」「ログインパスワード管理」
 「ログインパスワード」「認証方式」の入力、設定
②[登録]ボタンをクリック


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

ちなみにメニューグループというのは、簡単に言うと、「メインメニュー」を押下した画面にあるアイコンたちです。
メニューグループを押して左に列記されるのが、メニューです。

「管理コンソール」メニューグループ >> 「メニューグループ管理」
を選択し、登録作業ボタンより登録作業を開始します。

以下の2つのメニューグループを作成します。

メニューグループ名称 表示順序
AnsibleDriver実践用 110
AnsibleDriver実践用(参照用) 115

image.png


①必須入力項目を入力
②入力後、[登録]ボタンをクリック
③上記の表のすべてを作成


#①Ansible-Legacy編
今回はAnsible-Legacyを使って「Apache・Tomcat」のインストールと起動を行います。
Movementを組み合わせたConductorを作り、パラメータシートから変数を代入して実行させます。
image.png

具体的な手順はこのようになります。

  1. 事前準備
  2. Movementの設定
  3. Conductorの作成
  4. オペレーションの設定
  5. 代入値管理(パラメータシートの作成)
  6. 作業実行

##1.事前準備
まずは、「プレイブック素材集」に登録するためのplaybookのファイルを作成します。
今回実行するplaybookは以下の5つです。
テキストエディタなどで、以下の内容とファイル名で記述、ファイル保存して下さい。

1-yum_install.yml・・・指定したパッケージをインストール。変数には複数具体値変数が代入される。
2-open_port.yml・・・指定したポート宛の通信を許可
3-deploy_config.yml・・・設定ファイルを配置
4-start_service.yml・・・指定したサービスを起動
5-check_service.yml・・・サービスが起動したことを確認

1-yum_install.yml
- name: install package with yum
  yum:
    name: "{{ item }}"
    state: present
  with_items: "{{ VAR_package_name }}"

2-open_port.yml
- name: open ports
  firewalld:
    port: "{{ VAR_port_number }}"
    state: enabled
    permanent: yes
    immediate: true
3-deploy_config.yml
- name: deploy httpd.conf
  copy:
    src: "{{ CPF_httpd_conf }}"
    dest: /etc/httpd/conf/httpd.conf
    owner: root
    group: root
    mode: 0644
    backup: yes
  when: 'VAR_service_name == "httpd"'
4-start_service.yml
- name: start service
  service:
    name: "{{ VAR_service_name }}"
    state: started
    enabled: yes
5-check_service.yml
- name: check if service is running and enabled
  command: 'systemctl status {{ VAR_service_name }}'
  register: command_result
  failed_when:
    - '"enabled" not in command_result.stdout'
    - '"running" not in command_result.stdout'

playbookの3-deploy_config.ymlで配置する、Apacheの設定ファイル(httpd.conf)を作成します。
配置するファイルは後ほど「ファイル管理」に登録を行います。

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

##2.Movementの設定
ここでは、playbookに関連付けるMovementの設定について述べます。
###Movementの作成
「Ansible-Legacy」メニューグループ >> 「Movement一覧」
を選択し、登録作業ボタンより登録作業を開始します。

必須入力項目は「Movement名」「ホスト指定形式」です。

各項目以下の表のように選択、入力します。

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

※Movement:各機器に対する構築ツールを使った構築、設定などの作業の単位

image.png


①必須入力項目を入力
②入力後、[登録]ボタンをクリック
③上記の表のすべてを作成


###プレイブック素材集へ新規playbookを登録
「Ansible-Legacy 」メニューグループ >> 「プレイブック素材集」
を選択し、登録作業をします。

必須入力項目は「プレイブック素材名」「プレイブック素材」です。

プレイブック素材には「1.事前準備」で作成した5つのplaybookを使用します。
ファイル指定後は必ず事前アップロードボタンを押す必要があります。

登録するプレイブック素材名とplaybook素材の紐付けは、下表のように設定します。

プレイブック素材名 プレイブック素材
yum_install 1-yum_install.yml
open_ports 2-open_ports.yml
deploy_config 3-deploy_config.yml
start_service 4-start_service.yml
check_service_state 5-check_service.yml

image.png


①必須入力項目を入力(プレイブック素材選択後、「事前アップロード」ボタンをクリック)
②入力後、[登録]ボタンをクリック
③作成した5つのplaybookすべてを登録


###素材ファイルを登録
「Ansible共通」メニューグループ >> 「ファイル管理」
を選択し、登録作業をします。

必須入力項目は「ファイル素材」「素材埋込変数名」です。

ファイル素材には「1.事前準備」で作成したApacheの設定ファイル(httpd.conf)を使用します。
ファイル指定後は必ず事前アップロードボタンを押す必要があります。

また下表のように設定します。

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

image.png


①必須入力項目を入力
②入力後、[登録]ボタンをクリック


###Movement詳細への登録
「Ansible-Legacy 」メニューグループ >> 「Movement詳細」
を選択し、登録作業をします。

必須入力項目は「Movement」「プレイブック素材」「インクルード順序」です。

インクルード順序及びMovementに紐付けるプレイブックは以下の表のように設定します。

Movement プレイブック素材 インクルード順序
Install_Packages yum_install 1
Open_Ports open_ports 1
Start_Service deploy_config 1
Start_Service start_service 2
Start_Service check_service_state 3

image.png


①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック
③上記の表のすべてを作成


##3.Conductorの作成
前項で定義したMovementをまとめたConductorを作成します。

「Conductor」メニューグループ >> 「Conductorクラス編集」
を選択し、登録作業をします。

Movementをドラッグ&ドロップで追加し、作業順にノード同士をつなぎます。
「start」から並べたノードの「in」から「out」をつなぎ、「end」までつなげます。

ノードの順番は
1.Install_Packages
2.Open_Ports
3.Start_Service
とします。
image.png


①Conductorの名前を入力
②ドラッグ&ドロップでMovementを追加
③作業順にノードをつなぐ
④[登録]ボタンをクリック


##4.オペレーションの設定
オペレーションとは、作業全体を示すITAシステム内で使用する作業名称のことを指します。

「基本コンソール」メニューグループ >> 「投入オペレーション一覧」
を選択し、登録を開始します。

以下の2つのオペレーションを作成します。

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

必須入力項目は「オペレーション名」「実施予定日」です。
image.png


①必須入力項目「オペレーション名」「実施予定日」の入力
②[登録]ボタンをクリック
③上記の表のすべてを作成


##5. 代入値管理(パラメータシートの作成)
###パラメータシートの作成
パラメータシートを作成し、ターゲットホストに適用するパラメータを管理します。

「メニュー作成」メニューグループ >> 「メニュー定義/作成」
を選択、必須項目を入力します。

必須入力項目は「メニュー名」「作成対象」「表示順序」「用途」です

入力内容は以下の図のように設定してください。
image.png


①必須入力項目を適宜選択、入力
②[対象メニューグループ]ボタンをクリック


image.png


③メニューグループを図のように選択(メニューグループは「Ansibleモード共通設定」にて作成済み)
④[決定]ボタンをクリック


###パラメータシートの項目名を定義
前項で[決定]ボタンをクリックしたその続きです。

ここではシートの項目を定義します。

項目を追加し、「項目名」「入力方式」「最大バイト数」を下図のように設定します。

image.png


⑤[項目]をクリックし、新しい項目を3つ追加
⑥図のように選択、入力、変更
⑦[作成]ボタンをクリック


###パラメータの登録
ここまでで、パラメータシートの作成を行いました。
ここからはターゲットホストの設定に使用するデータを登録します。

「AnsibleDriver実践用」メニューグループ >> 「Legacy実践」
を選択し、登録を開始します。

必須入力項目は「ホスト名」「オペレーション」
「パラメータ>>[package_name]、[package_name_sub]、[port_number]、[service_name]」です。

具体的な設定は以下の表を参考にします。

ホスト名 オペレーション package_name package_name_sub port_number service_name
(対象のホスト) Install Apache httpd (空欄) 80/tcp httpd
(対象のホスト) Install Tomcat tomcat tomcat-webapps 8080/tcp tomcat

image.png


①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック
③上記の表のすべてを作成


###代入値自動登録設定
各項目と変数を関連付けます。

「Ansible-Legacy」メニューグループ >> 「代入値自動登録設定」
を選択し、登録作業をします。
具体的な設定は以下の表を参考にします。

メニュー 項目 登録方式 Movement Value変数-変数名 代入順序
Legacy実践 package_name Value型 Install Packages VAR_package_name 1
Legacy実践 package_name_sub Value型 Install Packages VAR_package_name 2
Legacy実践 port_number Value型 Open Ports VAR_port_number
Legacy実践 service_name Value型 Start Service VAR_service_name

image.png


①必須入力項目を適宜選択、入力
②[登録]ボタンをクリック
③上記の表のすべてを作成


###代入値・作業ホストの確認

「Ansible-Legacy」メニューグループ >> 「作業対象ホスト」
「Ansible-Legacy」メニューグループ >> 「代入値管理」
の[フィルタ]をクリックし、「一覧/更新」を確認します。

設定した項目が、「legacy代入値自動登録設定プロシージャ」によって正しい値に指定されているかを確認します。

作業対象ホスト
image.png

代入値管理
image.png

##6. 作業実行

###Conductorの実行
「Conductor」メニューグループ >> 「Conductor作業実行」を選択します。

実行するConductorとオペレーションを選択し、ページ下にある[実行]をクリックすることで作業が開始します。

image.png


①作成したConductorの選択
②作成したオペレーションの選択
③[実行]ボタンをクリック
④「Install Apache」実行後、「Install Tomcat」を選択し実行


オペレーション「Install Apache」選択、実行確認したのち、
再度「Conductor」メニューグループ >> 「Conductor作業実行」に戻り
オペレーション「Install Tomcat」を選択し実行します。

###実行結果の確認
「Conductor」メニューグループ >> 「Conductor作業確認」を選択します。

実行した確認したいノードを選択して作業の詳細を確かめることができます。

image.png


①確認したいノードを選択
②作業情報やリンクが表示される


リンクを押下すると、Movementごとの実行詳細を確認できます。
image.png

以下にアクセスしてApacheとTomcatがインストールおよび起動されているかを確かめます。
Apache- http://(targetのIPアドレス):80
image.png

Tomcat- http://(targetのIPアドレス):8080
image.png

ApacheおよびTomcatの画面が表示されたので、成功です。

#おわりに
今回は、Ansible3モードの1つ、Ansible-Legacyの使い方について説明しました。

次回はAnsible-LegacyRoleについて説明したいと思います。

関連リンク

###索引

7
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
7
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?