IICSのSecure Agentの起動を自動化してみる

Informatica Intelligent Cloud Services(IICS)の処理エンジンであるSecure Agentを起動するスクリプトを作成し、 Cronやsystemdを使って自動化する。
2020.11.02

データアナリティクス事業本部、池田です。
最近、 Informatica Intelligent Cloud Services (以下IICS)や Informatica Enterprise Data Catalog (EDC)を触っています。

IICS自体はクラウドのサービス(iPaaS)ですが、 その稼働に必要な処理エンジンであるSecure Agentはサーバなどへのインストールが必要になります。

Informatica Intelligent Cloud Servicesをはじめてみよう

クラウド型のデータ統合ツールを選定する際に重要な要素となるのが、「セキュリティへの対応」。IICSでは、IICS自体でデータを持たず、Secure Agentを通してデータ統合処理を実行していきます。Secure Agentとは、実際にデータを扱う処理エンジンで、クラウド/オンプレミス環境問わず、インターネットに接続可能な環境であれば、どこへでも配置可能です。

今回は Amazon EC2 にSecure Agentを導入した際に、その起動を自動化した話を書きます。 開発環境などではEC2を夜間止めておき、 Secure Agentもそれに伴って起動・停止したいというケースはよくあるのかなと思います。
※サーバなど(今回であればEC2)の自動起動・停止については触れません。 弊社で無償提供している opswitch などをご活用下さい。

使用した環境はEC2の Ubuntu 16.04.7 LTS です。

スクリプト

以下のような、Secure Agentを起動or停止するスクリプトを作成しました。

#!/bin/bash -l

set -eu

if [ $# -ne 1 ]; then
  echo "指定された引数は$#個です。" 1>&2
  echo "実行するには1個の引数が必要です。" 1>&2
  echo "$0 [start|stop]" 1>&2
  exit 1
fi
action=$1
IICSAGENT_DIR="【Secure Agentのインストールディレクトリ】"

cd ${IICSAGENT_DIR}apps/agentcore/

if [ "$action" = "stop" ]; then
    ./infaagent shutdown
    echo "IICS Agentのshutdownが実行されました。"
elif [ "$action" = "start" ]; then
    ./infaagent startup
    echo "IICS Agentのstartupが実行されました。"
else
    echo "指定された引数は $action です。" 1>&2
    echo "$0 [start|stop]" 1>&2
    exit 1
fi

(ログ管理やエラーハンドリングは割愛しています。 また、スクリプトファイルを作成せずに直接コマンドを実行しても良いのですが、 起点を統一する意味で作成しています。)

agentcore というディレクトリに移動し、 infaagent startup もしくは infaagent shutdown というコマンド実行してあげます。 (起動・停止コマンドについては こちら
ちなみに、停止(shutdown)は停止完了後にコマンドが終了しましたが、 開始(startup)の方はすぐにプロンプトが戻ったので非同期的な動きのようです。

今回は例として、Secure Agentの管理に infa というLinuxのユーザを使用し、 そのホームディレクトリに配置した体で次章以降進めます。

  • 配置先例: /home/infa/infa_agent_ctl.sh
  • 実行方法(infaユーザにて実行): infa_agent_ctl.sh start または infa_agent_ctl.sh stop

Cronによる起動

前章のスクリプトをCronに登録するだけで、所定の時刻に稼働させられます。

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 10 * * * /home/infa/infa_agent_ctl.sh start
0 22 * * * /home/infa/infa_agent_ctl.sh stop

↑Secure Agentを10時に起動し、22時に停止する場合のinfaユーザのCronの例です。 (rootユーザのCronであれば、実行ユーザにinfaを指定して設定してやる必要があります。)

systemdによる起動

起動時刻が不定期な場合などに、 EC2の起動と連携してSecure Agentを起動させたいので、 systemdから先述のスクリプトを実行するようにしました。
手順は以下のような感じです。(rootユーザ作業)

  1. /etc/systemd/system/ 配下にサービスの設定ファイルとして infa_agent_start.service を作成
    [Unit]
    Description=start iics service
    After=syslog.target network-online.target
    
    [Service]
    User=infa
    Type=oneshot
    RemainAfterExit=no
    KillMode=none
    ExecStart=/home/infa/infa_agent_ctl.sh start
    
    [Install]
    WantedBy=multi-user.target

    ExecStart は配置先に合わせて適宜)

  2. systemctl daemon-reload を実行し、設定を再読込み
  3. systemctl list-unit-files --type=service | grep infa を実行し、設定を確認
    →この時点では infa_agent_start.service disabled のように、登録されているが自動起動無効は無効な状態
  4. systemctl enable infa_agent_start で自動起動を有効化
  5. systemctl list-unit-files --type=service | grep infa を実行し、設定を再度確認
    infa_agent_start.service enabled

上記の設定で、EC2が起動するとSecure Agentも起動してくれるようになりました。 (私は起動をsystemdで、停止をCronで自動化して使っています。)

おわりに

今回のように手作業は自動化を進めて、IICSの管理がより簡単になればと思います。

参考文献