LoginSignup
1
2

More than 3 years have passed since last update.

WindowsのRundeck2環境にRundeck3をインストールする

Last updated at Posted at 2018-08-08

Rundeckがバージョンアップしたので、自分のwindows環境へインストールしてみます。

はじめに

Rundeckの説明は探せばいっぱい出てくるので省きます。簡単にいうとジョブスケジューラです。Windows環境でも動作するのでcronがないwindowsマシンでも動きます。退屈な仕事をやってもらうにの重宝しています。

現行の動作環境について

タイトルどおり、現状はRundeck2が動いています。現状の動作環境はこんな感じです

  • Windows7
  • Rundeck2.7.3 (open-source版) build-inサーバーで動作
  • MySQL 10.1.25-MariaDB(Xampp)

Rundeckのマニュアルには、新規にインストールしプロジェクトやジョブをコピーしたほうがいいよ、って書いてあるので、2インスタンス構成にします。

Upgrading
For the most part, Rundeck 3.0 is drop-in compatible with existing Rundeck 2.11 installations.
We recommend doing a fresh install of 3.0.0 and copying your Jobs/projects into it for testing.
If you are upgrading in-place, Be sure to backup import data/configs before upgrading.

今回のゴールは

  • Rundeck3を新規ディレクトリにインストールして、起動させる
  • MySQLのデータベースも新しくセットアップする
  • Rundeck3はRundeck2とポートのバッティングを避けるため、14440ポートで動かす

インストール完了後に、Rundeck2からのジョブの移行とか、権限設定とかやります。

やってみよう

Rundeck3を起動させるところまで、やってみます。

Rundeckのダウンロード

Windowsなので、普通にブラウザでアクセスしてバイナリ版をダウンロードします。
http://rundeck.org/downloads.html 

2018/8/8時点の最新版 rundeck-3.0.1-20180803.war をダウンロードしてきました。

Rundeckをインストール

インストールディレクトリは、C:/rundeck3にします。フォルダを作成してダウンロードしたファイルをコピーします。Javaが必要なのでインストールしておいてください。マニュアルによると1.8以上が必要で、JAVA_HOMEも設定しておけとのこと。

Java
Rundeck is a Java-Servlet based server and therefore requires the Java runtime.
The install process requires that the latest version of Java 8 be installed. Both the Open JDK and Sun/Oracle JVMs can be used. You must have the JAVA_HOME environment variable defined in your environment before running the launcher. The RPM will use the java found on your path. See Setting JAVA_HOME if you want to run a different version of java.

参照:http://rundeck.org/docs/administration/install/index.html

では、インストールします。コマンドプロンプトで実行可能です。

C:\rundeck3
λ java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)

C:\rundeck3
λ ls
rundeck-3.0.1-20180803.war

C:\rundeck3
λ java -Xmx1024m -jar rundeck-3.0.1-20180803.war --installonly

インストールコマンドが終わると、ファイルが展開されます。
image.png

httpポートの設定

デフォルトの4440ポートから14440ポートに変更します。ここが一番ハマりました。
答えから言うと、rundeck-config.propertiesserver.portを書き足すしかないらしいです。

#rss.enabled if set to true enables RSS feeds that are public (non-authenticated)
rss.enabled=false
server.address=HOSTNAME
#↓ここ追加
server.port=14440
grails.serverURL=http://HOSTNAME:14440

System Propertyを書き換えると動くとか、framework.propertiesを変えるとか、preferences.propertiesを変えるとか、いろいろ試しましたが、2018/8/8現在はどれもうまく動かないようです。4440で動かす人は全く気にしなくていいです。1

MySQLの設定

データベース作成

今回はRundeck3用にMySQLのデータベースも新規に作ることにしたので、rundeck3というデータベースを作っておきます。ユーザとパスワードも一緒に作ります。

mysql -u root 
CREATE DATABASE rundeck3 DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON rundeck3.* TO rundeckuser3@localhost IDENTIFIED BY 'password';

rootユーザでデータベースを作ります。rundeck3データベースにログインができることを確認しておきます。もちろんテーブルは何もないです。Rundeck2で使っているuserと同じuserを使ってRundeck3のDBに権限を与えると、Rundeck2側につながらなくなるので、気を付けてください。Rundeckの問題ではなくてMySQLの権限設定の問題です。2

mysql -u rundeckuser3 -p rundeck3
MariaDB [rundeck3]> show tables;
Empty set (0.00 sec)

JDBCドライバのインストール

Rundeck3をbuild-inサーバーで動かすので、$RDECK_BASE/server/lib にMySQLのJDBCドライバをコピーします。tomcatにwarをデプロイする場合には、置き場所が違うので注意です。MySQLのJDBCドライバはこの辺からダウンロードしてきてください。

参照:http://rundeck.org/2.10.6/administration/setting-up-an-rdb-datasource.html

データベースの設定

RundeckがMySQLを使うように設定を変更します。

ファイルはここにあります。C:\rundeck3\server\config\rundeck-config.properties
追記しましょう

rundeck-config.properties
dataSource.dbCreate = update
dataSource.driverClassName=com.mysql.jdbc.Driver
dataSource.url = jdbc:mysql://localhost/rundeck3?autoReconnect=true
dataSource.username=rundeckuser3
dataSource.password=***
#これ、忘れていました。(2019/7/14)
rundeck.projectsStorageType=db

Rundeck3.0のReadMeにMySQLを使うときは、ドライバ名を書くようにとありましたので、ドライバ名も追加してます。、

Must define JDBC driver class name
If using Mysql/other DBs which require a JDBC driver, be sure to specify it explicitly in the rundeck-config file, e.g. dataSource.driverClassName=com.mysql.jdbc.Driver

Configure project config in DBも合わせて設定します。これをやらないとプロジェクト情報はDBに保存されません。設定ファイルに1行追加するだけです。
https://docs.rundeck.com/2.10.6/administration/setting-up-an-rdb-datasource.html#configure-project-config-in-db

ここまででいったん準備は完了です。

Rundeck3 起動

設定が一通り終わったら、skipinstall指定で実行してみます。

C:\rundeck3
λ java -Xmx1024m -jar rundeck-3.0.1-20180803.war --skipinstall -d

しばらく待つとコマンドプロンプトにログがたくさん出てきます。最後にログが出ればうまくいっているはずです。

2018-08-09 00:07:51.236  INFO --- [           main] rundeckapp.BootStrap                     : Starting Rundeck 3.0.1-20180803 (2018-08-04) ...

2018-08-09 00:07:51.238  INFO --- [           main] rundeckapp.BootStrap                     : using rdeck.base config property: C:/rundeck3
2018-08-09 00:07:51.272  INFO --- [           main] rundeckapp.BootStrap                     : loaded configuration: C:\rundeck3\etc\framework.properties
2018-08-09 00:07:51.285  INFO --- [           main] rundeckapp.BootStrap                     : RSS feeds disabled
2018-08-09 00:07:51.286  INFO --- [           main] rundeckapp.BootStrap                     : Using builtin realm authentication
2018-08-09 00:07:51.286  INFO --- [           main] rundeckapp.BootStrap                     : Preauthentication is disabled
2018-08-09 00:07:51.362  INFO --- [           main] rundeckapp.BootStrap                     : Rundeck is ACTIVE: executions can be run.
2018-08-09 00:07:51.847  INFO --- [           main] rundeckapp.BootStrap                     : Rundeck startup finished in 2651ms
Grails application running at http://HOSTNAME:14440 in environment: production

気になるログ1

MySQLに繋ぐと、こんなログも出てくるかもしれません。何個かテーブルを作るのに失敗しているみたいです。なんだろ。。とりあえず、気にせず行きます。3
```
2018-08-08 22:25:59.370 WARN --- [ main] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL via JDBC Statement

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)

(省略)

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
```

MySQLのデータベースを見てみると、21個テーブルはできています。

MariaDB [rundeck3]> show tables;
+----------------------------+
| Tables_in_rundeck3         |
+----------------------------+
| auth_token                 |
| base_report                |
| execution                  |
| job_file_record            |
| log_file_storage_request   |
| node_filter                |
| notification               |
| orchestrator               |
| plugin_meta                |
| project                    |
| rdoption                   |
| rdoption_values            |
| rduser                     |
| referenced_execution       |
| report_filter              |
| scheduled_execution        |
| scheduled_execution_filter |
| storage                    |
| workflow                   |
| workflow_step              |
| workflow_workflow_step     |
+----------------------------+
21 rows in set (0.00 sec)

ここで、Rundeckを一度停止します。

JVMプロパティなど設定の追加

Rundeckを1回実行すると、C:\rundeck3\etc フォルダにファイルがいくつか作られます。

image.png

起動ファイル作成

マニュアルにあるとおりC:\rundeck3\startrundeck.batに起動用のファイルを作っておきます。やってることはprofile.batを読み込んでwarを実行するだけです。

set CURDIR=%~dp0
call %CURDIR%etc\profile.bat
java %RDECK_CLI_OPTS% %RDECK_SSL_OPTS% -jar rundeck-3.0.1-20180803.war --skipinstall -d

profile.batの編集

C:\rundeck3\etc\profile.bat ファイルにJVMオプションをいくつか書きます。

set RDECK_BASE=C:\rundeck3

set JAVA_HOME=C:\java8

rem :: Unsetting JRE_HOME to ensure there is no conflict with JAVA_HOME
rem (set JRE_HOME=)

set Path=%JAVA_HOME%\bin;%RDECK_BASE%\tools\bin;%Path%

set RDECK_SSL_OPTS="-Djavax.net.ssl.trustStore=%RDECK_BASE%\etc\truststore -Djavax.net.ssl.trustStoreType=jks -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol"

set RDECK_CLI_OPTS=-Xmx1024m ^
-Dserver.http.port=14440 ^
-Dserver.https.port=14443 ^
-Dfile.encoding=UTF-8
set RD_LIBDIR=%RDECK_BASE%\tools\lib

RDECK_CLI_OPTSにメモリーオプション、http/httpsのポート、ファイルエンコーディングを指定しました。port指定は今のバージョンでは意味なさそうですが、未来のために。

再起動

startrundeck.batで起動してみます

C:\rundeck3
 startrundeck.bat

ログがで終わったら、ブラウザでアクセスしてみます。HOSTNAME部分は自分のマシン名になっていると思いますので、書き換えてください。

image.png

見慣れた画面が出てきます。デフォルトでは、admin/adminでログインです。

image.png

ログイン成功です。

ユーザ設定

Rundeck2と同じく、realm.properties で設定可能です。

タスクの移行

Rundeck2のタスクをYAMLでダウンロードして、Rundeck3にインポートはできました。比較的簡単なジョブしか組んでいないので、問題はおきませんでした。

プラグイン

slackのプラグインは、Rundeck2と同じもので動きました。C:\rundeck3\libextのフォルダにプラグインのjarを置くだけで動きました。

slackに通知するところでエラーになっていたので、以下の設定を空白にして再起動したら動きました。

profile.bat
set RDECK_SSL_OPTS=

このあとは

プロジェクトの設定ユーザの設定Rundeck2からのジョブの移行して動作確認をしたら、Rundeck2の停止するところまで進めます。3.x系でslackのプラグインが動くかどうかの確認ですね。

ハマりどころメモ

ログイン画面に戻ってしまう
同じマシンで2つのRundeckのインスタンスが上がっている状態で、同じブラウザで複数のRundeckにログインすると、ジョブ登録などのアクションが完了せずにログイン画面に戻されることが何度かありました。おそらく、ログイン情報が新旧と共有されてしまっていて動かないの状態なのかと。ChromeとFirefoxでブラウザ自体を分けて使うとうまくいきました。


  1. ISSUEが上がってました。https://github.com/rundeck/rundeck/issues/3786 

  2. https://teratail.com/questions/19342 

  3. milestone 3.0.2 が設定されているので、近いうちに直りそう。https://github.com/rundeck/rundeck/issues/3785 

1
2
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
1
2