1.インベントリ収集のスケジューリング
Open-AudITでは、有償のProfessional版、Enterprise版を使用することにより、Tasksにてスケジュールを作成することにより、作成した対象のDiscoveriesを選択し、定期的にインベントリ収集を行うことができます。
Community版では本機能を使用することができないため、独SOS社(Software- und Organisations-Service GmbH)によって開発されている、JS7®JobSchedulerを使用し、定期的にインベントリ収集をスケジューリングする方法を記載します。
Open-AudIT
Open-AudITの詳細は以下をご参照ください。
Open-AudITのインストール方法につきましては以下をご参照ください
JS7
JS7の詳細な情報については、以下をご覧下さい。
- ナレッジベース(英語) https://kb.sos-berlin.com/display/PKB/JS7
- 日本語紹介資料 https://www.ossl.co.jp/
- 日本JobSchedulerユーザーグループ https://sites.google.com/site/jobschedulerja/
- https://groups.google.com/forum/?hl=ja#!forum/jobscheduler-ja
- JIRA(英語) https://change.sos-berlin.com/secure/Dashboard.jspa
- User Forum(英語) http://sourceforge.net/projects/jobscheduler/forums/forum/486122
- SOS社ホームページ http://www.sos-berlin.com
JS7® JobSchedulerの概要及びインストール方法については以下を参照ください
Dockerでのインストール手順 https://qiita.com/satoruf/items/360fee5293611433ed33
Windowsでのインストール手順 https://qiita.com/Yoshitami/items/6804584592956a483364
Linux/CLIでのインストール手順 https://qiita.com/satoruf/items/fa9846f4376d1a50a67e
Linux/インストールスクリプト手順 https://qiita.com/Yoshitami/items/c2bf066368b4c5cf486e
JS7® JobSchedulerクイックスタート https://qiita.com/satoruf/items/96f21ef25bcb35e47b21
2.インストール環境
JS7サーバインストール環境
- Red Hat Enterprise Linux release 9.7 (Plow)
- JS7 2.8.2
- PostgreSQL 13.23
- openjdk 17.0.2
- スタンドアロン構成
- JOC、Controller、Agent、DBは同居
- JS7インストールユーザ:scheduler
- SELinuxはDisabled、Firewalldは停止されていること
※JS7サーバのJOC、Controller、Agentはインストール、初期設定済みとします。
インストール、初期設定の方法は上記のインストール手順をご参照ください。
Open-AudITサーバインストール環境
- Red Hat Enterprise Linux release 9.7 (Plow)
- Open-AudIT 6.0.2
- MariaDB 15.1
- Apache 2.4
- PHP 8.3
- JS7 2.8.2
- openjdk 17.0.2
- JS7インストールユーザ:scheduler
- SELinuxはDisabled、Firewalldは停止されていること
※Open-AudITサーバのOpen-AudITはインストール、初期設定済みとします。
インストール、初期設定の方法は上記のインストール手順をご参照ください。
3.Open-AudITサーバへJS7 Agentのインストール
Open-AudITサーバへ、ジョブが実行できるように、JAVAとAgentをインストールします。
JAVAのインストール
以下より、JAVAダウンロードし、適当なディレクトリに配置します。
・ファイル名:openjdk-17.0.2_linux-x64_bin.tar.gz
・配置先:/root/work
# mkdir /root/work
# cd /root/work
# wget https://download.java.net/java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL/openjdk-17.0.2_linux-x64_bin.tar.gz
# mkdir -p /usr/java
# tar zxvf openjdk-17.0.2_linux-x64_bin.tar.gz -C /usr/java/
# alternatives --install /usr/bin/java java /usr/java/jdk-17.0.2/bin/java 1
# alternatives --install /usr/bin/javac javac /usr/java/jdk-17.0.2/bin/javac 1
# ln -s /usr/java/jdk-17.0.2 /usr/java/latest
# ln -s /usr/java/latest /usr/java/default
javaインストール確認
# java --version
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
# javac --version
javac 17.0.2
Agentインストールユーザの作成
Agentのインストールユーザを作成します。
# useradd scheduler
[root@js7rhel ~]# passwd scheduler
ユーザー scheduler のパスワードを変更。
新しい パスワード: <パスワードを入力>
以下を追記します。
scheduler ALL=(ALL) NOPASSWD: ALL
Agentインストーラをダウンロード
以下からの作業はインストールユーザのschedulerで作業します。
# su - scheduler
以下のサイトからJS7のAgentのパッケージ、インストールスクリプトをダウンロードし、配置します。
・ファイル名:js7_agent_unix.2.8.2.tar.gz
js7_install_agent.sh
・配置先:/root/work
$ mkdir /home/scheduler/work
$ cd /home/scheduler/work/
$ wget https://download.sos-berlin.com/JobScheduler.2.8/js7_agent_unix.2.8.2.tar.gz
$ wget https://download.sos-berlin.com/JobScheduler.2.8/js7_install_agent.sh
Agentのインストール
ダウンロードしたインストールスクリプトを使用してAgentのインストールを行います。
Agentのインストール先はデフォルトの以下とします。
ホームディレクトリ:/opt/sos-berlin.com/js7/agent
データディレクトリ:<ホームディレクトリ>/var_4445
$ cd /home/scheduler/work/
$ ./js7_install_agent.sh \
--tarball=js7_agent_unix.2.8.2.tar.gz \
--home=/opt/sos-berlin.com/js7/agent \
--http-port=4445 \
--home-owner=scheduler \
--make-dirs \
--make-service \
--service-name=agent_4445 \
--exec-start=StartService
Agentの登録
Open-AudITサーバにインストールしたAgentをJS7へ登録を行います。
JOCのWebUIにログインします。
http://<JS7サーバのIPアドレス>:4446
アカウント:root
パスワード:root
ログイン後、設定 > コントローラ/エージェント管理 に移動し、「単独エージェント追加」を選択します。
Agent情報を入力し登録します。
本書では以下の設定とします。
エージェントID:oa_agent
エージェント名:oa_agent
URL:http://<Open-AudITサーバのIPアドレス>:4445
登録後、追加したAgentを選択し配置します。
配置後、ステータスが「同期済」になることを確認します。
4.JS7 Open-AudITインベントリ収集のスケジューリング連携
Open-AudIT3.3.0未満のバージョンだと「discover_subnet.vbs」、「discover_subnet.sh」のスクリプトを使用することにより、ディスカバリを実行することをができましたが、3.3.0以降は、「discover_subnet.vbs」、「discover_subnet.sh」は廃止されているためスクリプトからの実行は行えません。
そのため、スクリプトではなく、REST APIを使用して実行する必要があります。
使用するAPI
本書では以下のREST APIは以下を使用します。
・ログイン
| Section | |||
|---|---|---|---|
| URL | POST | http://<Open-AudITのIPアドレス>/open-audit/index.php/logon | |
| Headers | Accept | application/json | |
| Body | Type | form-data | |
| Key | username | <Opne-Auditのユーザ名> | |
| password | <Opne-Auditのパスワード> |
※ユーザはREST APIの実行権限があるユーザを指定します
・サブネットの更新
| Section | |||
|---|---|---|---|
| URL | PATCH | http://<Open-AudITのIPアドレス>/open-audit/index.php/discoveries/<ディスカバリID> | |
| Headers | Accept | application/json | |
| Cookie | $COOKIEFL (認証済みセッション情報) | ||
| Body | Type | x-www-form-urlencoded | |
| Key | data | {"data":{"id":"<ディスカバリID>","type":"discoveries","attributes":{"subnet":"<サブネット>"}}} |
・ディスカバリの実行
| Section | ||
|---|---|---|
| URL | GET | http://<Open-AudITのIPアドレス>/open-audit/index.php/discoveries/<ディスカバリID>/execute |
| Headers | Cookie | $COOKIEFL (認証済みセッション情報) |
その他のAPIや使用方法の詳細は以下になります。
スクリプトの作成
Open-AudITサーバにログインし、スクリプトを作成します。
※スクリプト内にてDiscoveries IDを使用します、そのため事前にOpen-AudITにて作成する必要があります。
・対象:Open-AudITサーバ
・配置先:/usr/local/sbin
・スクリプト:discoveries.sh
・オーナグループ:scheduler
・パーミッション:755
# cd /usr/local/sbin
# vim discoveries.sh
# chown scheduler. discoveries.sh
# chmod +x discoveries.sh
discoveries.shの中身は以下になります。
※以下のスクリプトはあくまでサンプルとなるため参考程度でお願いします。
#!/bin/bash
# Open-AudITアクセス情報
HOST=localhost
URL=http://$HOST/open-audit/index.php
USER=admin
PASS=password
# cookie保存先
COOKIEDIR=/var/tmp
COOKIEFL=$COOKIEDIR/cookies.txt
# DiscoveriesID 事前にOpen-AudITのWebUIで作成しIDを確認すること
DSCID=3
# インベントリ収集を行うサブネット
SUBNET="
192.168.9.129
192.168.9.181
192.168.110.245
"
echo -e "Open-AudIT Inventory Collection Script Initiation.\n"
## Tokenの取得
TOKEN=`curl -X POST -d "username=$USER&password=$PASS" -H "application/json" -c $COOKIEFL $URL/logon -o /dev/null -w '%{http_code}\n' -s`
if [ "$TOKEN" -eq 200 ]
then
for DSCSUBNET in $SUBNET
do
## インベントリ収集を行うサブネットを更新
echo "Discoveries subnet update. SUBNET=$DSCSUBNET"
SUBNETUPDATE=`curl -X PATCH $URL/discoveries/$DSCID -H "application/json" -b $COOKIEFL \
--data-urlencode "data={\"data\":{\"id\":\"$DSCID\",\"type\":\"discoveries\", \
\"attributes\":{\"subnet\":\"$DSCSUBNET\"}}}" \
-o /dev/null -w '%{http_code}\n' -s`
if [ "$SUBNETUPDATE" -eq 200 ]
then
## ディスカバリの実行
EXECUTE=`curl -s -X GET $URL/discoveries/$DSCID/execute -b $COOKIEFL -o /dev/null -w '%{http_code}\n' -s`
if [ "$EXECUTE" -eq 200 ]
then
echo "Execute discovery subnet = $DSCSUBNET"
sleep 10
else
echo "Execute Discovery failed. Status code: $EXECUTE"
exit 1
fi
else
echo "Discoveries subnet update failed. Status code: $SUBNETUPDATE "
exit 1
fi
done
else
echo "Open-AudIT access failed. Status code: $TOKEN"
exit 1
fi
rm -f $COOKIEFL
echo -e "\nFinish Open-AudIT Inventory Collection Script"
#
ワークフローの作成
JS7にてワークフローを作成します。
ワークフローの詳細は以下をご参照ください。
JOCのWebUIにログインし、ジョブ設定に移動します。
http://<JS7サーバのIPアドレス>:4446
新規フォルダーを作成します。
本書では「Open-AudIT」とします。
作成したフォルダーの「Open-AudIT」にワークフローを作成します。
本書では、「Discoveries」とします。
必要情報を入力し、ジョブを作成し配置します。
本書では以下とします。
名称:Discoveries
ラベル:Discoveries
エージェント:oa_agent
スクリプトの内容は以下になります。
※以下のスクリプトはあくまでサンプルとなるため参考程度でお願いします。
#!/bin/bash
## インベントリ収集スクリプトの実行
/usr/local/sbin/discoveries.sh
RCODE=$?
exit ${RCODE}
##
実行計画の作成
定期的にワークフローを実行するためにスケジュール設定を行います。
実行計画、スケジュール詳細について以下をご参照ください。
作成したフォルダーの「Open-AudIT」にカレンダーを作成します。
本書では、「OACalendar」とします。
作成した「OACalendar」に周期を追加し、リリースします。
本書では、以下の画像のようにします。
次にスケジュールを作成します。
本書では、「OAShedule」とします。
ランタイムにて作成した「OACalendar」を営業日カレンダーに指定し、開始時間を追加します。
本書では、以下とします。
繰返間隔:シングルスタート
開始時刻:18:00:00
休日:デフォルト
ワークフロー名で、作成した「Discoveries」を指定します。
本日分も実行する場合は「本日の最新オーダを含む」にチェックを入れリリースします。
実行計画のタブにて、本日のオーダが作成されていることを確認します。
インベントリ収集の確認
JS7にて作成したスケジュールの時間にワークフローが実行されたか確認を行います。
ワークフローのタブにて実行されたワークフロー「Discoveries」のオーダー履歴を確認し正常に終了していることを確認します。
また、Open-AudITのWebUIにてDiscovery Logでもログの確認を行います。
DiscoveriesのタブにてLogsを確認し正常にディスカバリが実行されていることを確認します。














