LoginSignup
8
11

More than 1 year has passed since last update.

Rundeckを使ってみた

Last updated at Posted at 2022-07-24

ジョブ管理ツールについて調べていた時にJenkins以外にRundeckというものをみつけたので調べたり使ってみました。

Rundeckとは

ひと言で

使い勝手のよいOSSのジョブ管理ツール

もう少し詳しく

  • ホームページ
    https://www.rundeck.com/
  • RundeckはOSS(Community版)として公開(Apache2.0 License)しています
  • PagerDuty社が主なメンテナー?であり、Community版のほかにEnterprise版やCloud版と展開しています

プロダクトの種類について

以下のラインナップを展開しているようです。

  • Rundeck(Community版, OSS)
  • PagerDuty Process Automation On Prem Software(Enterprise版)
  • PagerDuty Runbook Automation(Cloud版)
  • PagerDuty Automation Actions(セルフヒーリング用のAdd-onらしい)

Community版とEnterprise版の違い

以下のページに比較内容があるのでこちらをみてください。
https://www.rundeck.com/community-vs-enterprise

ここでは個人的に気になった違いをいくつかピックアップします。

  • RASIS観点
    • HA構成が可能
    • スケーラブルな構成が可能
    • SSO
    • 失敗したジョブの再開
  • ユーザビリティ
    • ワークフローの可視化
    • システム設定をGUIで実施。HA構成サーバ間の同期
  • 連携
    • Webhook(CommunityではRundeck自身かログくらい。GitHubやSNSが無い)

RASIS観点について詳しく調べたわけではありませんが、そこそこシビアなジョブ連携が必要なプロジェクトでは初めからEnterprise版のほうがよさそうです。
ワークフローの可視化はCommunity版でもほしいです・・。図で見えてジャンプできるのはほしい。
サンプルイメージがあまりないのですがおそらく以下のイメージだと思います。

  • サンプルイメージ
    image.png

Jenkinsとの違い

Jenkinsは開発用でありRundeckは運用用というユースケースの違いがあるということ。
Jenkins vs Rundeckではなく、Jenkins and Rundeckの使い方を提案していてお互いに連携するためのPluginが存在している。
GitHubのRundeckリポジトリにあるFAQにそのような記載がある
https://github.com/rundeck/rundeck/wiki/FAQ#how-is-it-different-from-jenkins

とはいえ、具体例を出さないとわかりづらい。Jenkinsと比較した結果はいずれそのうちまた今度整理したい。

Rundeckの良いところ

  • 操作がわかりやすい
  • スケジュール設定が簡単、crontabライクに設定することも可能
  • ジョブ定義の設定をテキスト(XML,YAML)で出力可能
  • 追記1. ジョブ実行時に引数指定が可能かつ手順を書ける

Rundeckのインストール

環境

  • VirtualBox
    • Ubuntu20.04.4 Server

インストール手順

公式の手順 をみるのがベストですが、
お試しでやるので、手順のタブはCommunityを選択してください。
何点か変更しているので以下に記載します。

# 初期状態のVMにインストールする場合は、事前に実施
sudo apt-get update
# 公式手順どおり、インストール
sudo apt-get install openjdk-11-jre-headless
curl https://raw.githubusercontent.com/rundeck/packaging/main/scripts/deb-setup.sh 2> /dev/null | sudo bash -s rundeck
curl -L https://packages.rundeck.com/pagerduty/rundeck/gpgkey | sudo apt-key add -
sudo apt-get update
sudo apt-get install rundeck
# serviceコマンドの代わりにsystemctlコマンドで起動、VM起動時に自動起動するように設定
sudo systemctl start rundeckd
sudo systemctl enable rundeckd
# 公式手順通り、起動確認
# 以下が出力されていること
# Grails application running at http://localhost:4440 in environment: production
tail -f /var/log/rundeck/service.log
  • 手順を実行すると以下がインストールされる
    • openjdk-11-jre-headless
    • Rundeck 4.4.0.20220714

Rundeckを使ってみる

ログイン

  • 手順通り、http://localhost:4440に、admin/adminでログインする
    • Ubuntu Serverを使用しているので、ポートフォワードして自端末のChromeでログイン
    • ポートフォワード設定は、localも4440にしてください
      • リダイレクト時に4440ポートをRundeckが指定するため別のポート番号だとログインできません

操作をお試し

  • プロジェクトを作成する
  • ジョブを作成する
  • ジョブを作成するには、Workflowが1つ以上必要。ということでステップを追加
    Commandを選択して、テキトウに入力する

  • テキトウに2つステップを作成する
  • 今すぐジョブを実行
  • 実行結果
  • ログ出力をクリックするとログが表示される

スケジュールを設定してみる

  • 1日1回、週1回、月1回、年1回などは簡単に設定できる

  • crontabライクな設定もできる

    • crontabは秒設定はできない?ようですが、こちらでは可能です
      • 1分に1回
      • 1秒に1回

ジョブなどはコード管理できる

  • XMLかYAML形式で出力できるため、Gitなどでコード管理が可能です
    • YAMLの例
      - defaultTab: nodes
        description: |-
          job description
          ## ジョブ1
          ### ジョブの説明
          - あああ
          - いいい
          - ううう
        executionEnabled: true
        id: f909cbc1-445a-441b-aa11-37bd4001e35e
        loglevel: INFO
        name: job1
        nodeFilterEditable: false
        plugins:
          ExecutionLifecycle: null
        schedule:
          dayofmonth:
            day: '*'
          month: '*'
          time:
            hour: '*'
            minute: '*'
            seconds: '*/1'
          year: '*'
        scheduleEnabled: false
        sequence:
          commands:
          - description: step-label1
            exec: echo this is a test.; uname -a
          - description: step-label2
            exec: date
          keepgoing: false
          strategy: node-first
        timeZone: JST
        uuid: f909cbc1-445a-441b-aa11-37bd4001e35e
      

追記1. ジョブ実行時に引数指定が可能かつ手順を書ける

引数が指定できるのはJenkinsでも同じですが、Rundeckでは条件を指定したり手順のように書くこともできる

  • 下の画像ではテキストにしたが、ファイルを指定することもできるようだ
    image.png
  • 実行画面はこんな感じに手順っぽくできるので作業者にやさしい
    image.png

追記2. ユーザーの追加

Rundeckを利用するユーザーを追加します。デフォルトではadminしかありません
Enterprise版では、GUIで追加設定が可能です(マニュアル該当ページ
Community版では以下の手順でユーザーを追加します

  • パスワードのハッシュ値を生成する(任意)
  • realm.propertiesにユーザー・パスワードを追記する
  • Rundeckを再起動することで変更が反映されます

ユーザー追加手順

  • パスワードのハッシュ値を生成する(任意)
    sudo java -jar /var/lib/rundeck/bootstrap/rundeck-4.4.0-20220714.war --encryptpwd Jetty

    • 対話形式でユーザー名とパスワードを入力します
    • 出力されたbcryptの値を使用します
    • 実行例
      sudo java -jar /var/lib/rundeck/bootstrap/rundeck-4.4.0-20220714.war --encryptpwd Jetty
      Required values are marked with: * 
      Username (Optional, but necessary for Crypt encoding):
      aki-nasu-admin
      *Value To Encrypt (The text you want to encrypt):
      aki-nasu
      
      ==ENCRYPTED OUTPUT==
      bcrypt: BCRYPT:aaabbbccc.aaabbbccc.aaabbbccc.
      obfuscate: OBF:aaabbbccc
      md5: MD5:aaabbbccc
      crypt: CRYPT:aaabbbccc
      
    • 同じことがGUIでも可能です。右上のギアアイコンから Password Utility を選択して出てくる以下の画面を使います
      image.png
  • /etc/rundeck/realm.properties にユーザー・パスワードを追記する

    • admin自身も早めに変更しておいたほうがよいでしょう
    • 追記例(admin行はデフォルトで存在する)
      admin:admin,user,admin,architect,deploy,build
      aki-nasu-admin:BCRYPT:aaabbbccc.aaabbbccc.aaabbbccc.
      
  • 参考ページ

  • Rundeckを再起動することで変更が反映されます
    sudo systemctl reload rundeckd

ホットリロード設定をおこなう

デフォルトではユーザー追加後にRundeckの再起動が必要なため、ホットリロード設定をおこないます

# バックアップを取っておく
sudo cp -p /etc/rundeck/jaas-loginmodule.conf /etc/rundeck/jaas-loginmodule.conf.original
# 修正する
sudo vi /etc/rundeck/jaas-loginmodule.conf
# 修正箇所は以下の通り
sudo diff /etc/rundeck/jaas-loginmodule.conf /etc/rundeck/jaas-loginmodule.conf.original
2c2
< org.rundeck.jaas.jetty.ReloadablePropertyFileLoginModule required
---
> org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required

実際に追加できたことは、右上のギアアイコンからUser Summary画面を表示することで確認できます
image.png

さいごに

導入の手軽さはcrontabには敵わないが、比較的簡単にできた
実践的な使い方ができたら、つづく。

8
11
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
8
11