LoginSignup
0
0

Rundeck使ったOCIリソース Job管理(Rundeck準備編)

Posted at

概要

Job管理ツールのRundeckをOCIに導入しました。
Rundeck準備編、Job実行編とRundeck運用編と3つのパートに分けています。

Rundeck準備編←今ココ
Job実行編
Rundeck運用編

構成

image.png

VM作成前準備

OCI公式ガイド等を参照しながら各リソースを準備します。

  • VCN
  • 管理対象VMやLoad balancerを設置するPublic subnet
  • Rundeckを設置するPrivate subnet
  • Public subnetにInternet Gatewayを追加
  • Public subnetのRoute tableにデフォルトルートをInternet Gatewayに向くよう設定
  • Public subnetのSecurity listに必要な通信許可を設定
  • Private subnetにNAT Gatewayを追加
  • Private subnetのRoute tableにデフォルトルートをNAT Gatewayに向くよう設定
  • Private subnetのSecurity listに送信元IP 0.0.0.0/0, 宛先IP 0.0.0.0/0のOutbound通信を許可
  • Private subnetのSecurity listに送信元IPをOpretator subnet, 宛先Port 4440のInbound通信を許可

VM作成

Instance System Requirementsを参考にしてVMを作成します

  • OCIコンソールのナビゲーションメニューからコンピュート>>インスタンスを選択して「インスタンスの作成」を押下
  • 名前を設定
  • OSイメージとシェイプを設定
  • Network設定
  • SSHキー設定
  • ブートボリューム設定
  • 「作成」を押下

(オプション)プライベートDNSを使用したホスト名アクセス

外部ネットワークからサーバーに名前でアクセスする場合はVCN内にリスニングのエンドポイントを作成します。作成後、外部ネットワークDNSからエンドポイントにフォワードすることによって名前解決が可能です。
リゾルバ・エンドポイントの作成

時刻設定

時刻をJSTに変更して再起動します。

[user@linux-rundeck]$ sudo timedatectl set-timezone Asia/Tokyo
[user@linux-rundeck]$ sudo timedatectl
               Local time: Tue 2024-01-09 01:12:09 JST
           Universal time: Mon 2024-01-08 16:12:09 UTC
                 RTC time: Mon 2024-01-08 16:12:09
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
[user@linux-rundeck]$ sudo reboot

OCI CLIインストールおよびPython確認

JobのShell実行用にOCI CLIをインストールしてPythonバージョンを確認します。
Oracle Cloud Infrastructureドキュメント CLIのインストール

# インストール後の確認
[user@linux-rundeck]$ oci -v
3.37.1
[user@linux-rundeck]$ python --version
Python 3.6.8

Rundeck インストール

ガイドを参照してRundeckを導入します。
Installing on Red Hat, Amazon or Oracle Linux distributions
導入後rundeckを起動できることを確認します。

  • 導入後の確認
[root@linux-rundeck]# service rundeckd start
Starting rundeckd (via systemctl):                         [  OK  ]
[root@linux-rundeck]# service rundeckd status
● rundeckd.service - SYSV: rundeckd, providing rundeckd
   Loaded: loaded (/etc/rc.d/init.d/rundeckd; generated)
   Active: active (running) since Tue 2024-01-09 09:42:49 JST; 5s ago

[user@linux-rundeck opc]# netstat -an | grep 4440
tcp6       0      0 :::4440                 :::*                    LISTEN
  • tcp/4440でlistenするためFirewallを許可
[root@linux-rundeck]# firewall-cmd --add-port=4440/tcp --zone=public --permanent
success
[root@linux-rundeck]# firewall-cmd --reload
success
[root@linux-rundeck]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: dhcpv6-client ssh
  ports: 4440/tcp

Rundeckプロファイル設定

デフォルトではローカルアクセスのみのため、プロファイルを編集してサービス再起動してアクセスできることを確認します。

  • プロファイル編集と再起動
[root@linux-rundeck]# vi /etc/rundeck/rundeck-config.properties
grails.serverURL=http://【IPアドレスまたはhost名】:4440

[root@linux-rundeck]# vi /etc/rundeck/framework.properties
framework.server.name = 【IPアドレスまたはhost名】
framework.server.hostname = 【IPアドレスまたはhost名】
framework.server.port = 4440
framework.server.url = http://【IPアドレスまたはhost名】:4440

[root@linux-rundeck]# service rundeckd restart
  • アクセス確認

(オプション)httpsオフロード

今回はRundeckへのWebアクセスは閉域網からのアクセスを想定しています。
しかし、http通信なのでusername/password等の通信内容は暗号化されていません。
セキュリティ上考慮が必要な場合はhttps通信に切り替えが可能です。
WAN通信を暗号化する場合はOCI Loadbalancerでhttpsオフロードすることによりrundeckの負担を軽減することが可能です。

[root@linux-rundeck]# vi /etc/rundeck/rundeck-config.properties
grails.serverURL=https://【ドメイン名】:4430
server.useForwardHeaders=true

[root@linux-rundeck]# vi /etc/rundeck/framework.properties
framework.server.name = 【host名】
framework.server.hostname = 【host名】
framework.server.port = 4440
framework.server.url = http://【host名】:4440
framework.rundeck.url = https://【ドメイン名】:4430

[root@linux-rundeck]# service rundeckd restart

(オプション)adminパスワード変更、ユーザー追加

adminの初期パスワードはadminなので必要に応じて
Authenticating Usersを参考にパスワードを変更します。
ユーザーを追加する場合は、上記に加えてaclpolicyファイルをAccess Control Policyを参考に作成します。

[root@linux-rundeck]# vi /etc/rundeck/realm.properties
admin:【パスワード】,user,admin,architect,deploy,build

#ユーザーを追加する場合はユーザー名:パスワード,グループを追加
user1:【パスワード】,user

#user1が所属するグループuserのaclpolicyを作成
[root@linux-rundeck]# vi /etc/rundeck/user.aclpolicy

description: user
context:
  project: '【Project】' #後述するProjectと一致させる
for:
  resource:
    - allow: [read] # allow read all kinds
  adhoc:
    - allow: [read] # allow read adhoc jobs
  job:
    - allow: [read,run,kill] # allow readr/run/kill of all jobs
  node:
    - allow: [read,run] # allow read/run for all nodes
by:
  group: user

---

description: user
context:
  application: 'rundeck'
for:
  project:
    - match:
        name: '【Project】' #後述するProjectと一致させる
      allow: [read] # allow read of 【Project】
by:
  group: user

Project作成

Jobを登録するためのProjectを作成します。

  • adminでログイン後Create New Projectを押下
  • Project name等を入力し作成

rundeck-cliインストール

rundeck運用のためrundeck-cliツールをRundeck CLI - Installを参考にインストールします。

  • rundeck-cliインストール
[root@linux-rundeck]# curl https://raw.githubusercontent.com/rundeck/packaging/main/scripts/rpm-setup.sh 2> /dev/null | bash -s rundeck
[root@linux-rundeck]# dnf install rundeck-cli
  • rundeck-cli定義ファイル作成
[root@linux-rundeck]# vi rd.conf
export RD_URL=http://【host名】:4440
export RD_USER=admin
export RD_PASSWORD=【パスワード】
  • rundeck-cliの確認
[root@linux-rundeck]# export RD_CONF=/path/to/rd.conf
[root@linux-rundeck]# rd system info
#システム情報が表示されればOK

Rundeck準備編はここまでです。
次はJob実行編にてJobを登録します。

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