LoginSignup
0
1

More than 1 year has passed since last update.

Jenkinsスレーブ群のラベルとIPアドレスを一覧取得する

Last updated at Posted at 2021-04-01

背景

Jenkinsをmaster/slave構成にした際に、masterノードからはslaveノードのIPアドレスを知ることができません。
slaveノードをメンテナンスしたい場合などに、IPアドレスが即座にわからないのは不便です。

(「Jenkinsの管理」 > 「ノードの管理」 のノードの一覧に、IPアドレスが表示されていても良さそうですが)

方法1 特定のノードのIPアドレスを調べる

  1. 「Jenkinsの管理」 > 「ノードの管理」 からIPアドレスを知りたいノードを選択する。
  2. 「ログ」を選択する。
  3. ログの先頭の方にIPアドレスが表示されているはずです。

表示形式はノードの接続方法によって異なります。

  • Jnlp(Java Web Start)接続のノードでは、 Inbound agent connected from xxx.xxx.xxx.xxx ...
  • SSH接続のノードでは、 SSHLauncher{host='xxx.xxx.xxx.xx' ...

方法2 全ノードのIPアドレスを一覧出力する

「Jenkinsの管理」 > 「スクリプトコンソール」 (masterノードのスクリプトコンソール) から、次のスクリプトを実行します。
※結果はJenkinsコンソール上に表示されます。コンソールがごちゃごちゃするのを避けるため return null としています。

jenkins.model.Jenkins.get()?.getNodes().each { node ->
  println "${node.getNodeName()} => ${node.getChannel()?.call(new hudson.model.Computer.ListPossibleNames())}"
}
return null

ノード名 => [xxx.xxx.xxx.xxx] 形式で出力されます。

※Slaveが複数のIPアドレスを持つ場合は、全てのIPアドレスが表示されます。

同じようにラベルを得ることもできます

// ノードのラベルを取得する
jenkins.model.Jenkins.get().getNodes().each { node ->
  println "${node.getNodeName()} => ${node.getAssignedLabels() - node.getSelfLabel()}"
}
return null
// ノードのラベルとIPアドレスを合わせて取得する
jenkins.model.Jenkins.get().getNodes().each { node ->
  println "${node.getNodeName()} => label:${node.getAssignedLabels() - node.getSelfLabel()}, IP:${node.getChannel()?.call(new hudson.model.Computer.ListPossibleNames())}"
}
return null

参考

こちらの記事を参考にしました。
https://stackoverflow.com/questions/14930329/finding-ip-of-a-jenkins-node

環境

Jenkins 2.282 で確認しています。

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