cronではできないようなジョブスケジューリングをしたい、でも商用ジョブスケジューラーみたいに高機能じゃなくてもいい。
そんな製品を探していたときにRundeckを知りました。
エージェント製品をインストールする必要なく、リモートノードにはAnsibleみたいにSSHで接続しにいきます。
Rundeck3のインストール~初期セットアップまでのメモです。
環境
- CentOS 7.5
- Rundeck 3.0.9
事前準備
サーバー
- Azureで仮想マシンを準備してますが、環境はAWSでもオンプレでもどこでもよいです。
- サーバーのIPを控えておきます。
- あとでプロパティにIPアドレスを入力するので、IPは静的に設定しておいたほうがよいです。
ネットワークセキュリティグループ
- AzureだとNSG、AWSだとセキュリティグループで「4440:tcp」を許可しておきます。
インストール
- yumでインストールします。
$ sudo rpm -Uvh http://repo.rundeck.org/latest.rpm
$ sudo yum install rundeck java
- framework.propertiesを開き、localhost部分をサーバーのIPアドレスに変更します
$ sudo vi /etc/rundeck/framework.properties
framework.server.name = localhost
framework.server.hostname = localhost
framework.server.url = http://localhost:4440
- rundeck-config.propertiesを開き、localhost部分をサーバーのIPアドレスに変更します
$ sudo vi /etc/rundeck/rundeck-config.properties
grails.serverURL=http://localhost:4440
- サービスを起動します。
$ sudo systemctl start rundeckd
- 以下URLにアクセスし、ログイン画面が表示されたらOKです。
http://[IP Address]:4440/
- ユーザ名admin、パスワードadminでログインします。
動作確認
プロジェクト作成
ジョブ作成
ジョブ実行
リモートノード追加
マネージャーサーバー側
- project.propertiesを開き、末尾に追加します。
$ sudo vi /var/rundeck/projects/[Project Name]/etc/project.properties
末尾に以下追加
resources.source.1.type=file
resources.source.1.config.file=/var/rundeck/projects/${project.name}/etc/resources.xml
resources.source.1.config.format=resourcexml
resources.source.1.config.includeServerNode=true
resources.source.1.config.generateFileAutomatically=true
- resources.xmlを新規作成します。
$ sudo vi /var/rundeck/projects/[Project Name]/etc/resources.xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
<node name="rundeck-agent1" type="Node"
description="rundeck-agent1."
hostname="[Remote Node IP Address]"
username="rundeck"
osFamily="unix"
osName="Linux"
osVersion="7.5"
ssh-authentication="privateKey"
/>
</project>
- SSH公開鍵をcatで開き、表示された内容をメモっておきます。
$ sudo cat /var/lib/rundeck/.ssh/id_rsa.pub
リモートサーバー側
ここからはリモートサーバー側の作業です。
マネージャーサーバーとはSSH接続ができるネットワーク環境であることを前提とします。
- ジョブ実行ユーザを作成します。
$ sudo useradd rundeck
- authorized_keysファイルを作り、先程メモした公開鍵の内容を貼り付けます。
$ sudo su - rundeck
$ mkdir .ssh
$ chmod 700 .ssh
$ vi .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
ジョブ実行
参考にさせて頂いたサイト
OSS ジョブスケジューラ(Rundeck)を自宅サーバに入れてみた Part2
【Rundeck】プロジェクトへのnode追加メモ