0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EC2にRundeckを構築する

Posted at

概要

EC2にRundeckの構築を行なったので、記録も兼ねて構築方法について記録する
※目的はRundeckの画面が表示されてログインできるところまでのため、セキュリティ面は一旦省略(アクセス制限などは除外)

準備

SSMのロール作成

SSMでEC2インスタンスにログインするときに必要なポリシーを指定し、ロールを作成しておく

  • ポリシー名:AmazonSSMManagedInstanceCore

ちょうどハンズオンに設定方法があった

手順

EC2インスタンス作成

EC2サービスからインスタンスを起動を選択

  • 名前とタグ:任意
  • アプリケーションおよび OS イメージ :Amazon Linuxを指定
  • インスタンスタイプ:t3.medium
  • キーペア:用意して指定
  • ネットワーク設定
    • ファイアウォール (セキュリティグループ)
      • セキュリティグループを作成する
    • 以下をチェック
      • SSH トラフィックを許可する
      • インターネットからの HTTPS トラフィックを許可
      • インターネットからの HTTP トラフィックを許可
  • ストレージを設定
    • 8GB
  • 高度な詳細
    • IAM インスタンスプロフィール
      • 準備で作成したIAMロールを指定

を指定し、インスタンスを起動を押してECインスタンスを作成する

memo

インスタンスタイプは、Rundeckのページに記載があったのでそのまま指定してみた
https://docs.rundeck.digitalstacks.net/l/ja/installation/system-requirements

Rundeckの構築

EC2のセッションマネージャでSSHアクセス

作成したEC2インスタンスをチェックし、接続を押す
セッションマネージャータブから接続を押す

Rundeckのインストール

Rundeckのページにインストール方法があったので、なぞる
https://docs.rundeck.digitalstacks.net/l/ja/installation/linux-rpm

  • Rundeck yumリポジトリを追加
curl https://raw.githubusercontent.com/rundeck/packaging/main/scripts/rpm-setup.sh 2> /dev/null | sudo bash -s rundeck
  • エントリの追加 (/etc/yum.repos.d/rundeck.repo)
    追加前に確認したら、すでに存在していたのでスキップする
cat /etc/yum.repos.d/rundeck.repo

# 結果
[rundeck]
name=rundeck
baseurl=https://packages.rundeck.com/pagerduty/rundeck/rpm_any/rpm_any/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packages.rundeck.com/pagerduty/rundeck/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
  • rpmパッケージをインストール

https://www.rundeck.com/downloads
Sign upをしないとだったので、yumを使ってインストールに変えてみる

  • yumでインストール
sudo yum install rundeck java

Rundeck開始

$ sudo service rundeckd start
Starting rundeckd (via systemctl):                         [  OK  ]

少し時間がかかるので、Logで状況確認(/var/log/rundeck/service.log)

Grails application running・・・と表示されたら開始

tail -f /var/log/rundeck/service.log

# 結果
[2022-12-31T22:10:17,328] INFO  rundeckapp.BootStrap - Starting Rundeck 4.8.0-20221110 (2022-11-10) ...
[2022-12-31T22:10:17,335] INFO  rundeckapp.BootStrap - using rdeck.base config property: /var/lib/rundeck
[2022-12-31T22:10:17,358] INFO  rundeckapp.BootStrap - loaded configuration: /etc/rundeck/framework.properties
[2022-12-31T22:10:17,520] INFO  rundeckapp.BootStrap - RSS feeds disabled
[2022-12-31T22:10:17,521] INFO  rundeckapp.BootStrap - Using jaas authentication
[2022-12-31T22:10:17,534] INFO  rundeckapp.BootStrap - Preauthentication is disabled
[2022-12-31T22:10:17,639] INFO  rundeckapp.BootStrap - Rundeck is ACTIVE: executions can be run.
[2022-12-31T22:10:18,084] WARN  rundeckapp.BootStrap - [Development Mode] Usage of H2 database is recommended only for development and testing
[2022-12-31T22:10:18,214] INFO  rundeckapp.BootStrap - workflowConfigFix973: applying...
[2022-12-31T22:10:18,249] INFO  rundeckapp.BootStrap - workflowConfigFix973: No fix was needed. Storing fix application state.
[2022-12-31T22:10:18,761] INFO  rundeckapp.BootStrap - Rundeck startup finished in 1593ms
[2022-12-31T22:10:18,803] INFO  rundeckapp.Application - Started Application in 66.737 seconds (JVM running for 75.838)
Grails application running at http://localhost:4440 in environment: production

ステータス確認で開始されたことを確認

sudo service rundeckd status

# 結果
● rundeckd.service - SYSV: rundeckd, providing rundeckd
   Loaded: loaded (/etc/rc.d/init.d/rundeckd; bad; vendor preset: disabled)
   Active: active (running) since Sat 2022-12-31 22:09:02 UTC; 2min 44s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2910 ExecStart=/etc/rc.d/init.d/rundeckd start (code=exited, status=0/SUCCESS)
 Main PID: 2918 (runuser)
   CGroup: /system.slice/rundeckd.service
           ‣ 2918 runuser -s /bin/bash -l rundeck -c java -Drundeck.jaaslogin=true            -Djava.security.auth.login.config=/etc/rundeck/jaas-loginmodule...

Dec 31 22:09:02 ip-172-31-34-126.ap-northeast-1.compute.internal systemd[1]: Starting SYSV: rundeckd, providing rundeckd...
Dec 31 22:09:02 ip-172-31-34-126.ap-northeast-1.compute.internal rundeckd[2910]: Starting rundeckd: [  OK  ]
Dec 31 22:09:02 ip-172-31-34-126.ap-northeast-1.compute.internal systemd[1]: Started SYSV: rundeckd, providing rundeckd.

curlでレスポンス確認し、200とログイン画面の記録がターミナルに表示されているのを確認する

curl -v localhost:4440/user/login

ブラウザからRundeckへのアクセス

以下の設定が必要

  • Rundeck側でURL指定
  • EC2セキュリティグループのインバウンド設定でport 4440を許可させる

RundeckのURL設定

$ sudo vi /etc/rundeck/rundeck-config.properties

以下を書き換え

grails.serverURL=http://localhost:4440
↓
grails.serverURL=http://{EC2のIPアドレス}:4440

セキュリティグループでインバウンド指定

インスタンス→セキュリティグループ→インバウンドの編集
rundeckのポート番号4440を許可をしてルールを保存を押す

  • タイプ:カスタムTCP
  • プロトコル:TCP
  • ポート範囲:4440
  • ソース:カスタム
    • IP:0.0.0.0/0

ログイン画面接続

http://{EC2のIPアドレス}:4440にアクセス

スクリーンショット 2023-01-01 2.18.11.png

初期は、adminのため、それぞれ入力してアクセス

ログイン後の画面に遷移しなかったのでconsoleを見ると以下のエラー

Refused to send form data to 'http://{IPアドレス}:4440/j_security_check' because it violates the following Content Security Policy directive: "form-action 'self'".

https://github.com/rundeck/rundeck/issues/4417
上の記事より、form-action ディレクティブを変更して、URL を有効にしてみる

$ sudo vi /etc/rundeck/rundeck-config.properties

以下を追加

rundeck.security.httpHeaders.provider.csp.config.form-action=self http://{IPアドレス}:4440

rundeckをrestartさせる

sudo service rundeckd restart
Restarting rundeckd (via systemctl):                       [  OK  ]

再度アクセスし、ログインをしてみる

スクリーンショット 2023-01-01 7.26.39.png

メニューが表示され、ログインまでできたので、一旦構築は完了とする

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?