3
3

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 3 years have passed since last update.

WindowsのRundeckでWindowsのPCをノードにする

Last updated at Posted at 2021-06-18

初めに

ジョブ管理ツールのRundeckをWindowsのPCにインストールし、ノードにしたいWindowsPCをつなげる設定に大変難儀したため、後のために手順メモを残します。
以下、RundeckをインストールするWindowsPCを「サーバPC」、ノードにしたいWindowsPCを「ノードPC」とします。

環境

###サーバPC
OS:Windows 10

###ノードPC
EC2インスタンス
OS:Windows Server 2019

手順

Rundeckのインストール

サーバPCにRundeckをインストールします。
RundeckのインストールにはRundeck以外に必要なものや必要な手順がそこそこあるため、簡単のためにChocolateyでインストールしちゃいます。
ページはこちら。バージョンの指定もできます。
※更新・削除には難があるそうです

choco install rundeck

ファイアウォールの設定

C:\rundeck\etc\framework.propertiesを確認します。
framework.server.portの数字がRundeck用のportになるため、受信の規則でこれを追加します。デフォルトでは「4440」です。

ブラウザでアクセス

ここまで出来たらバッチファイルC:\rundeck\start_rundeck.batを実行し、Rundeckの画面にChromeなどのブラウザでアクセスします。
バッチ実行から画面が立ち上がるまでやや時間がかかります。
URLは先ほどと同じC:\rundeck\etc\framework.propertiesファイルのframework.server.url
ユーザ名:admin
パスワード:admin
です。

SSH接続(公開鍵認証)の設定

ノードPCはOpenSSHが既に起動していることを前提とします。

手順1:サーバPCで鍵作成

まず、以下のコマンドでサーバPCで秘密鍵・公開鍵のペアを作成します。
ただのssh-keygenだとRSAでなくOpenSSH形式の鍵が作られてしまうため、Rundeckで使用できなくなってしまいます。

ssh-keygen -t rsa -b 4096 -m pem

今回は、鍵の作成先をC:\rundeck\sshkeys\id_rsaとします。
指定したC:\rundeck\sshkeysフォルダに
秘密鍵:id_rsa
公開鍵:id_rsa.pub
が作成されます。

手順2:ノードPCに公開鍵配置

公開鍵をノードPCに配置します。
ノードPCにC:\Users\<username>\.sshというフォルダがあるはずなので、そこに作成したid_rsa.pubをコピーし、authorized_keysにリネームします。すでにある場合は追加します。
また、C:¥ProgramData¥ssh\sshd_configをメモ帳などで開き、設定を変更します。

  • 「#PasswordAuthentication yes」→「PasswordAuthentication no」
  • 一番最後の2行(「Match Group administrators」ともう一行)の先頭に「#」を付けコメントアウト
  • 「サービス」を開き、OpenSSHを再起動

手順3:サーバPCでRundeckに秘密鍵登録

サーバPCに戻り、ブラウザでRundeckの画面を開きます。
右上の歯車を押し、「Key Strage」を選択します。
Key Storage
Key Storageの画面になったら「Add or Upload a Key」ボタンを押し、先ほど作った秘密鍵を登録します。
Add a Key

入力欄 今回入力する内容 説明
Key Type Private Key 接続に使うものを指定
ファイルをアップロード C:\rundeck\sshkeys\id_rsa コマンドで作った秘密鍵
Storage Path (keys/)rundeck 任意の文字列 フォルダ名
Name id_rsa 任意の文字列 ファイル名

Storage Pathはフォルダ名、Nameはそのフォルダの中に作られる鍵の名前になります。今回はStorage Pathrundeck, Nameid_rsaとしました。
こうすると、C:\rundeck\var\storage\content\keys\<Storage Path>\<Name>、すなわちC:\rundeck\var\storage\content\keys\rundeck\id_rsaというパスで、参照元C:\rundeck\sshkeys\id_rsaと同じ内容の秘密鍵が作成されます。
metaフォルダの方には作成された鍵の情報が入っており、contentフォルダの中に手動で鍵を置いてもmeta情報がないので秘密鍵としては認識されません。

以下の画像のように🔓マーク+Nameで指定した鍵がStorage Pathに作られていることが確認できます。
鍵アイコンが表示される
Key Storageに作成した鍵はセキュリティ設定がtoo openであるため、セキュリティ設定を参照元の秘密鍵と同様のものに変更します。
右クリック→プロパティ→セキュリティ→詳細設定 から変更します。
ここまで出来たらRundeckに登録された鍵で通信ができるかを念のため確認します。
今回の場合は以下になります。

ssh <username>@<ノードPCのIP> -i C:\rundeck\var\storage\content\keys\rundeck\id_rsa

接続が確立されればOKです。通信できない場合はセキュリティ設定などを見直してみてください。

Rundeck上でのノード追加

まず、プロジェクトを作成します。
作成したプロジェクトの「Edit Nodes...」メニューを開き、resource.xmlを作成していきます。
「Sources」タブの「Add a new Node Source」ボタンを押し、「File」を選びます。
image.png

FormatresourcexmlFile PathC:\rundeck\projects\<作成したプロジェクト名>\etc\resource.xmlとして、後のチェックを全て入れます

image.png

image.png
そしてSaveするとxmlファイルが作られ、「Edit」タブでrecource.xmlが編集できるようになるので、「Modify」ボタンからXMLを編集し、ノードを追加します。最初から入力されているノードはサーバPC自身です。
image.png
これで保存すればこのプロジェクトのノードとしてノードPCが表示されるようになるはず。

おまけ:複数のノードのうちランダムな一つでジョブ実行

分散処理っぽいけど分散処理じゃないジョブ実行。
ジョブの設定「Nodes」の一番下「オーケストレータ」の項目でRandom Subsetを選択し、「Count」を1とすることで設定可能。
ただし、良い感じに分散されるわけではないので、同じノードで実行されることもある。

終わりに

Linuxの資料なら見つかるのですがWindowsだと一連の流れがなかなか見つからず、本当にやりたいことの前に上記の設定段階で詰まってしまって大変でした。
特にSSH接続の段階では色々なセキュリティが絡むので(ファイアウォール設定、セキュリティグループのインバウンド設定、鍵のセキュリティ設定)今詰まっているのがどこなのか分からず大変でした…。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?