# Rundeck

Official:
http://rundeck.org/index.html

Download:
http://rundeck.org/downloads.html

## リポジトリ追加

# rpm -Uvh http://repo.rundeck.org/latest.rpm

## インストール

# yum install rundeck
~省略~

=========================================================================================
 パッケージ          アーキテクチャ
                                 バージョン           リポジトリー                  容量
=========================================================================================
インストールしています:
 rundeck             noarch      2.5.3-1.10.GA        rundeck-release-bintray       86 M
依存性関連でのインストールをします。:
 rundeck-config      noarch      2.5.3-1.10.GA        rundeck-release-bintray      9.0 k

トランザクションの要約
=========================================================================================
インストール         2 パッケージ

総ダウンロード容量: 86 M
インストール済み容量: 117 M
これでいいですか? [y/N]

~省略~

インストール:
  rundeck.noarch 0:2.5.3-1.10.GA                                                         

依存性関連をインストールしました:
  rundeck-config.noarch 0:2.5.3-1.10.GA                                                  

完了しました!

## Configure

# cp -a /etc/rundeck/rundeck-config.properties /etc/rundeck/rundeck-config.properties.org
# vi /etc/rundeck/rundeck-config.properties

#grails.serverURL=http://localhost:4440
grails.serverURL=http://SERVER_DOMAIN_OR_IP:4440
grails.mail.host=localhost
grails.mail.port=25
grails.mail.default.from=root@ホスト名.localdomain

## Service Start

# /etc/init.d/rundeckd start

※環境により、数十秒~数分掛かる。ログに以下が出力されれば起動処理終了。

# tail -f /var/log/rundeck/service.log
~省略~
2015-09-24 11:39:23.814:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:4440

ブラウザで http://SERVER:4440/ にアクセスして、ログイン画面が表示されることを確認。
初期から存在するユーザーは「admin / admin」。

## User setting
Rundeckにログインするユーザーの設定ファイルは「/etc/rundeck/realm.properties」。
書式は、以下のとおり。

# The format is
#  <username>: <password>[,<rolename> ...]

admin:admin,user,admin,architect,deploy,build

パスワード(password)は平文でも記述できるが、MD5などハッシュ化して記述を推奨。
以下、ユーザー:admin、パスワード:adminのパスワードのMD5ハッシュを求める処理。

1. Rundeckのドキュメントにのっている方法。
バージョンによってjettyへのパスが異なるので注意。

  # java -cp /var/lib/rundeck/bootstrap/jetty-all-7.6.0.v20120127.jar org.eclipse.jetty.util.security.Password admin admin
  admin
  OBF:1u2a1toa1w8v1tok1u30
  MD5:21232f297a57a5a743894a0e4a801fc3
  CRYPT:adpexzg3FUZAk

2. md5sum (1)
read:で入力待ちとなるので、adminと入力してenter。

# bash -c 'read -sp "read: " password && echo -n $password | md5sum'
read: 21232f297a57a5a743894a0e4a801fc3  -

3. md5sum (2)
「-n」を忘れると別物になるので注意。

# echo -n "admin" | md5sum              
21232f297a57a5a743894a0e4a801fc3  -

設定ファイルへの記述方法

admin:MD5:21232f297a57a5a743894a0e4a801fc3,user,admin,architect,deploy,build

## SSH Key

任意のSSH Keyを設定する場合は、事前に登録と設定が必要。
パスフレーズはないほうが設定は簡単。ある場合、Jobは設定できるが、Commandは設定できない。
その他、制限があるのでパスフレーズ無しが無難。
Rundeck ドキュメント (2.5.3) ユーザーマニュアル プラグイン
http://rundeck.org/docs/jp/manual/08-plugins.html#ssh-%E7%A7%98%E5%AF%86%E9%8D%B5%E3%83%91%E3%82%B9%E3%83%95%E3%83%AC%E3%83%BC%E3%82%BA%E3%81%AE%E8%A8%AD%E5%AE%9A

### Add or Upload a Key

Configure(右上の歯車)→ Key Strage → Add or Upload a Key
から任意のSSH KeyをRundeckに登録する。
登録する方法はファイルのアップロードか、テキストのコピー&ペーストで。

### SSH Key Storage Path

Projectのconfigureを開き、SSH Key Strage Pathに上記で登録したSSH Keyを設定することで、ProjectのデフォルトのSSH Keyに設定される。

### sshKeyPassphrase

※SSH Keyにパスフレーズを設定していない場合はこの設定は不要。

Jobの設定画面からOptionsのAdd an optionを押下。

- Option Nameに「sshKeyPassphrase」
- Default Valueにパスフレーズ
- RequiredをYes

に設定。

## How To UseEdit

### Project

Jobをまとめる入れ物。複数Jobの共通設定なども行う。
各Jobがsshやscpで使用する鍵ファイルは、デフォルトは「/var/lib/rundeck/.ssh/id_rsa」が定義されているので、
コマンドを実行したいサーバー(Nodes)の任意のユーザーに鍵を登録しておく必要がある。
または、別途サーバーに用意している鍵を使用する場合はその鍵をRundeckに登録して指定する。
デフォルトの鍵、任意に追加した鍵の両方が設定されている場合は、任意に追加した鍵が使用される。

### Jobs

Cronに定義するイメージで、スクリプトやコマンドを指定日時、指定間隔で実行する定義を行う。
「Send Notification?」の定義で、Jobの実行時、終了時、エラー時などに指定のメールアドレスにメールを送信できる。
「Schedule to run repeatedly?」の定義でスケジュール実行を定義する。

### Nodes

Jobの実行対象のサーバーを登録する。
各サーバーの最初の登録は対象ファイルに手書きで登録する必要がある。

/var/rundeck/projects/pj001/etc/resources.xml

<project>
  <node
    name="adm01" 
    description="Rundeck server node" 
    tags="adm" 
    hostname="adm01" 
    osArch="amd64" 
    osFamily="unix" 
    osName="Linux" 
    osVersion="2.6.32-504.3.3.el6.x86_64" 
    username="webmaster"/>
</project>

usernameを指定すれば、SSHログインのユーザーとなる(※SSH鍵とセットになる必要がある)。
os~はなくても良い。
tagsはJobやCommand実行時のフィルタリングに便利。

Nodesをクリックして一覧を開いたときに赤文字で「server」と書かれているのがRundeckのサーバーとなる。

### Commands

Nodeの中の指定のサーバーに任意のコマンドを実行する。
e.g. Commandに「date」Nodesに「.*(All)」を設定してRun on n Nodesを押下すると、Nodeのすべてのサーバーの現在時刻取得。

### Activity

JobやCommandの実行結果が確認できる。
一覧からJobやCommandを選択すると詳細画面に移行し、ReportやLogの確認、再実行(Run Again)などの操作が行える。

## 関連サイト

Getting Started:
http://rundeck.org/docs/manual/getting-started.html

Rundeck ドキュメント
http://rundeck.org/docs/jp/index.html

## おまけ

# rd-jobs list -f /mnt/addVol/backup/rundeck/jobs.xml -p ikt
ERROR BaseFormAuthenticator: Form-based auth failed
Error: Error making server request to http://localhost:4440: Unable to authenticate user: admin
# vi /etc/rundeck/framework.properties
framework.server.password = admin