Rundeck: プラグインの導入方法(& Amazon S3プラグイン導入を試してみる)

2016.01.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Rundeckでは、プラグインの形で様々な機能を追加する事が出来ます。そこで当エントリでは現在公開されているプラグインの1つであるs3関連のプラグインを実際に導入してみて、その手順について確認してみたいと思います。

目次

 

プラグイン導入の基本的な流れ

Rundeckでプラグインの導入を行なう際は、基本的に以下の手順を踏んで行きます。

  • プラグインに関するファイル一式を入手
  • プラグインファイルのビルドを行ない、ビルドされたjarファイルを所定のパスにデプロイ
  • プラグインに関する設定

 

事前準備: Gradleのインストール

プラグインのビルドを行なう際はGradleを用いる必要があります。更にはGradle実行の際にはJavaも導入しておく必要がありますのでまずはそこから整えて行きましょう。

Amazon Linuxではインスタンス起動時で既にJavaは入っています。

$ java -version
java version "1.7.0_91"
OpenJDK Runtime Environment (amzn-2.6.2.2.63.amzn1-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

以下手順等を使い、Oracle Javaを入れるのも良いでしょう。

$ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

以下情報に倣い、Gradleのインストールを行います。

# アーカイブの入手、解凍
$ wget https://services.gradle.org/distributions/gradle-2.10-all.zip
$ sudo unzip gradle-2.10-all.zip -d /opt/
$ ls -l /opt/
合計 8
drwxr-xr-x 5 root root 4096  1月  7 15:54 aws
drwxr-xr-x 9 root root 4096 12月 21 22:23 gradle-2.10
$
$ sudo ln -s /opt/gradle-2.10 /opt/gradle

# 環境変数設定、バージョン確認
$ export GRADLE_HOME=/opt/gradle
$ export PATH=$PATH:$GRADLE_HOME/bin
$ gradle -v

------------------------------------------------------------
Gradle 2.10
------------------------------------------------------------

Build time:   2015-12-21 21:15:04 UTC
Build number: none
Revision:     276bdcded730f53aa8c11b479986aafa58e124a6

Groovy:       2.4.4
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_65 (Oracle Corporation 25.65-b01)
OS:           Linux 4.1.13-19.30.amzn1.x86_64 amd64

 

プラグイン導入実践: rundeck-s3-log-plugin

Rundeckで紹介されているプラグインの一覧は以下ページにそれぞれ展開されています。

当エントリではその中の1つ、rundeck-s3-log-pluginを試しに導入してみたいと思います。ジョブの実行ログをAmazon S3の所定のバケットに格納出来る仕組みを提供してくれるプラグインです。

ビルドに用いるソースコード一式を入手するにはgitで一式を取得するか、zipアーカイブをダウンロードしてくる必要があります。ここではgitを使う方向で進めます。まずはgitのインストールから。次いでgit cloneで必要なブツをサーバに落としてきます。

$ sudo yum -y install git
$ git --version
git version 2.4.3
$ git clone https://github.com/rundeck-plugins/rundeck-s3-log-plugin.git

ディレクトリ移動を行い、gradlewを使ってビルドを実施。

$ cd rundeck-s3-log-plugin/
$ ./gradlew clean build

rundeck-s3-log-plugin/build/libsフォルダにビルドされたjarファイルが生成されていますので、そのjarファイルをRundeck環境下でのライブラリファイル配置場所である/var/lib/rundeck/libext/に配備します。

$ cd build/libs/
$ pwd
/home/ec2-user/rundeck-s3-log-plugin/build/libs
$ sudo mv rundeck-s3-log-plugin-1.0.0.jar /var/lib/rundeck/libext/
$ sudo chown rundeck.rundeck /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.0.jar
$ sudo chmod 644 /var/lib/rundeck/libext/rundeck-s3-log-plugin-1.0.0.jar
$ ll /var/lib/rundeck/libext/
合計 15088
drwxrwxr-x 5 rundeck rundeck     4096  1月 10 04:57 cache
-rw-r--r-- 1 rundeck rundeck     3907 12月  2 20:31 rundeck-copyfile-plugin-2.6.2.jar
-rw-r--r-- 1 rundeck rundeck     2300 12月  2 20:31 rundeck-flow-control-plugin-2.6.2.jar
-rw-r--r-- 1 rundeck rundeck  2761849 12月  2 20:31 rundeck-git-plugin-2.6.2.jar
-rw-r--r-- 1 rundeck rundeck  2546868 12月  2 20:31 rundeck-jasypt-encryption-plugin-2.6.2.jar
-rw-r--r-- 1 rundeck rundeck     6074 12月  2 20:31 rundeck-job-state-plugin-2.6.2.jar
-rw-r--r-- 1 rundeck rundeck     3472 12月  2 20:31 rundeck-localexec-plugin-2.6.2.jar
-rw-r--r-- 1 rundeck rundeck     9526 12月  2 20:31 rundeck-orchestrator-plugin-2.6.2.jar
-rw-r--r-- 1 rundeck rundeck 10071361  1月  9 15:20 rundeck-s3-log-plugin-1.0.0.jar
-rw-r--r-- 1 rundeck rundeck    16138 12月  2 20:31 rundeck-script-plugin-2.6.2.jar
-rw-r--r-- 1 rundeck rundeck     9533 12月  2 20:31 rundeck-stub-plugin-2.6.2.jar

次いで、幾つか必要な設定事項の追加がありますので、その作業を行います。ログファイルの保存に今回導入するs3プラグインを使うという指定をrundeck-config.propertiesに追記。

$ sudo chmod 777 /etc/rundeck/rundeck-config.properties
$ sudo echo "rundeck.execution.logs.fileStoragePlugin=org.rundeck.amazon-s3" >> /etc/rundeck/rundeck-config.properties
$ sudo chmod 644 /etc/rundeck/rundeck-config.properties

s3バケット及び格納パス、ファイル名に関する設定はframework.propertiesというファイルに追記します。

$ sudo chmod 777 /etc/rundeck/framework.properties
$ sudo echo "" >> /etc/rundeck/framework.properties
$ sudo echo "# ----------------------------------------------------------------" >> /etc/rundeck/framework.properties
$ sudo echo "# Rundeck Plugin - Amazon S3 Settings." >> /etc/rundeck/framework.properties
$ sudo echo "# ----------------------------------------------------------------" >> /etc/rundeck/framework.properties
$ sudo echo "# name of the bucket" >> /etc/rundeck/framework.properties
$ sudo echo "framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.bucket=cm-rundeck-s3logs" >> /etc/rundeck/framework.properties
$ sudo echo "" >> /etc/rundeck/framework.properties
$ sudo echo "# path to store the logs" >> /etc/rundeck/framework.properties
$ sudo echo 'framework.plugin.ExecutionFileStorage.org.rundeck.amazon-s3.path=logs/${job.project}/${job.execid}/${job.execid}.log' >> /etc/rundeck/framework.properties
$ sudo chmod 644 /etc/rundeck/framework.properties
$ ll /etc/rundeck/
合計 44
-rw-r--r-- 1 rundeck rundeck  738 12月  2 20:31 admin.aclpolicy
-rw-r--r-- 1 rundeck rundeck 1104 12月  2 20:31 apitoken.aclpolicy
-rw-r--r-- 1 rundeck rundeck 1692  1月  9 15:50 framework.properties
-rw-r--r-- 1 rundeck rundeck  141 12月  2 20:31 jaas-loginmodule.conf
-rw-r--r-- 1 rundeck rundeck 7454 12月  2 20:31 log4j.properties
-rw-r--r-- 1 rundeck rundeck 1788 12月  2 20:31 profile
-rw-r--r-- 1 rundeck rundeck  549 12月  2 20:31 project.properties
-rw-r--r-- 1 rundeck rundeck  986 12月  2 20:31 realm.properties
-rw-r--r-- 1 rundeck rundeck  479  1月  9 15:39 rundeck-config.properties
drwxrwxr-x 2 rundeck rundeck 4096  1月  7 15:55 ssl

s3アクセスに際しての認証情報については、EC2に割り当てたIAM Roleを使って行なう形としました。(ですので、Rundeckサーバ作成の際にはEC2インスタンスにIAM Roleを割り当てておく必要があります) IAM Roleを割り当てていない場合はドキュメントに倣い、framework.propertiesに設定を追記してください。(※IAM Roleを活用する方がオススメです)

また、設定したバケットについては併せて作成しておいてください。

rundeck-install-s3-plugin_01

念の為Rundeckを再起動させておきます。

$ sudo /etc/init.d/rundeckd restart

 

動作確認: rundeck-s3-log-plugin

準備が整ったら、任意のジョブを実行してみます。

rundeck-install-s3-plugin_02

ジョブ実行後、所定のバケット配下の内容を確認してみます。ちゃんとログが出力されていました。

rundeck-install-s3-plugin_03

 

まとめ

以上、Rundeckにおけるプラグイン導入の手順とサンプルとしてS3プラグインの導入手順のご紹介でした。Rundeckのプラグイン、数自体はまだそこまで多くは無いですが、便利なものも幾つかあるようなので用途に応じて導入しておきたいところですね。こちらからは以上です。