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

jenkins管理サーバにターゲットノードを追加して操作できるようにする

Posted at

はじめに

jenkinsの仕組みがボヤッとした状態で始めたので大変だった。。。
何とか成功したので手順を残す

事前準備

ここの前提が間違ってるとうまくいかないので残しとく

管理サーバ編

jenkinsをインストールする

インストールしといてください。

ターゲットノード編

jenkins という名前のユーザーを作っといてください

ターゲットノードを追加する

昔のjenkinsさんはエージェントが必要だったっぽいけど、今どきのjenkinsさんは
ansibleみたくssh接続とjava11があれば、エージェントインストール不要だそうです。

このサイトに従えばイケます

管理サーバでターゲットノード接続用のsshキーを作成する

jenkinsインストールできたら、管理サーバ上に新たにjenkinsユーザができるので
そのユーザにスイッチしてからsshキーを作って下さい。

su - jenkins
cd /var/lib/jenkins
mkdir .ssh
cd /var/lib/jenkins/.ssh

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa ←ちゃんと指示してあげよう
~このあとsshキーのパスワード聞かれるけど入力しなくてもなんとかなる~

sshキーができたら権限を変更してから公開鍵の内容をコピーしておく

chmod 700 /var/lib/jenkins/.ssh
chmod 600 /var/lib/jenkins/.ssh/*

cat /var/lib/jenkins/.ssh/id_rsa.pub

ターゲットノードに、管理サーバで作った公開鍵を保管する

次はターゲットノードにログインしての作業

jenkinsユーザにスイッチしてから公開鍵置き場に管理サーバで作成した公開鍵の内容をペーストする

su - jenkins
mkdir ~/.ssh
cd ~/.ssh
vi authorized_keys

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

公開鍵はこんなやつです。

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjqSqAE9eJzmiEcKS4E4MIbUIt0HxIsZ3+NM0FYcOQHNBuDw6uHTMyVrAc2JYUUoe1W/Qiz2FojMWLzFwy43EmvFCwb7mpJBGE0XtRthA+dlO50GSjNLIVQyiUPdar8sy9Y/85kqF1Jtb6+fatIufVbzEk8poivIFGvcLHqvMQvXh98mt3aWBaAa2cQgJSXLdxd1pEIB6Km8BAsycfW9ol7U919iCfDpm6KZTayzSEGG1fUDS8v0YpKJL45SnHI/DkYLQ6OlNUYNbSZt3jba4UWUnPEEnIpxREhs7SX2NdbmxTaG5reFXPs0T/g8iXbTDzGRzIVKKIK8y4nUUTPkUn root@nbfr151v

管理サーバからターゲットノードへ疎通確認する

ちゃんと疎通ができるかを確認しましょ。
管理サーバではjenkinsユーザにスイッチしてから、ターゲットノードへjenkinsユーザでsshログインしてください。

が、その前に管理サーバのjenkinsユーザの起動シェルを/bin/bashに修正しておく必要があるのでやっておくこと。

chsh jenkins
jenkins のシェルを変更します。
新しいシェル [/bin/false]: /bin/bash
シェルを変更しました。

これで準備整ったので疎通確認

su - jenkins
ssh -i /var/lib/jenkins/.ssh/id_rsa jenkins@{ターゲットノードのIPアドレス}

疎通確認出来たらOK。実際の画面がこちら。
ログイン確認ついでに、known_hostsに署名データができていることが確認出来たら成功。
image.png

Jenkins管理画面でSSH認証情報の設定

URLは~、、、 http://{管理サーバのIPアドレス}:8080/

Jenkinsの管理>Manage Credentials
image.png

globalをクリック
image.png

Add Credentials クリック
image.png

設定内容はこんな感じ
IDはなんの接続設定なのかがわかる名前になっていたらなんでもOK。
ユーザー名は、ターゲットノードへのログインIDなのでさっき作ったjenkinsユーザを入力した。
image.png
後半。秘密鍵のところにいれる鍵のところには、さっき管理サーバ上でssh-keygenで作った秘密鍵の内容をまるごと入力する。
パスファインダーは本来入れるんだろうけど自分の場合はssh-keygenのときに設定しなかったので空白でOK。
image.png

秘密鍵はこんなやつ。---BEGIN~~~とかも丸ごと入れればOK

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA46kqgBPXic5ohHCkuBODCG1CLdB8SLGd/jTNBWHDkBzQbg8O
rh0zMlawHNiWFFKHtVv0Is9haIzFi8xcMuNxJrxQsG+5qSQRhNF7UbYQPnZTudBk
ozSyFUMolD3Wq/LMvWP/OZKhdSbW+vn2rSLn1W8xJPKaIryBRr3Cx6rzEL14ffJr
d2lgWgGtnEICUly3cXdaRCAeipvAQLMnH1vaJe1PdfYgnw6ZuimU2ss0hBhtX1A0
vL9GKSiS+OUpxyPw5GC0OjpTVGDW0mbd422uFFlJzxBJyKcURIbO0l9jXW5sU2hu
a3hVz7NE/4PIl20w8xkcyFSiiCvMuJ1FEz5FJwIDAQABAoIBAQCTOb0AYtSKi+9P
ZsE/QW8FrhKUKjWVlTfFQ0Qq7NRZiCjKY/ZsZvnK3gC6Rt6Xed/FSxgQwugNgqvm
AlzFlAyCrlnIIBiC545kxEvpxcGvgzoV+kx6twNLeMjvRSZkwHnjKJ3PD6JWbq2s
VKZPxTkD8ApqCHHhcOJxaxphoY3bDlQgWsfyhKfJHvIODMZXuV9bjHUEjf+C53/I
MVa2Nef0OKd+wrMYm3VHarGKYAYldqLF4UHq8vQ7zGaDm+/C+h/YIIT6Sq8ynfBw
dQg8FtQ5cBPSOVi88vc3ZlvIQkzY9xSsVQjrdFfrSBAFzhWNgjd3wfHqATB3s7Ee
51nLGf+hAoGBAPzHfZM+bCWGwXm73mYIhzh17o3elSKletijWXhcCwkYw50S5Ykm
ZBse/LKp+qIkZBIKl1aSbGOIhCocOKazyFHf5BRam4r8pWhxZYYjG6CcjypbmTCf
8h+ayuoXb10NSrZBGQAkRwFxOYUqT/UQDdl7pyl7yeJtqYlNp9X3qt5pAoGBAOaP
vqSnnqMIp5sAqdhA5WM3POFpKTQEG/KS2HN2RiLoptE7dqMraD7HcFX6DlY0Fr1f
vU15h++lVna00Td4PmGS9pVlDXGoEseUZjlD3zA44lAMqhKV21vjuTE+uXAVSILK
/PkeEyTYon1E/uSZ5LSh4DAWwKOcs1Rsd0i/w7UPAoGAYe0ys9FR+jO7Tlq+rM6O
/AuL8EATjImJDtYxehRGXi7O0VIZxEkwLOWTRe/d3eS1M9wQhwRQozqm4N1wAPzT
FQzkghIcAfsgZVbQ2udM86rTN7imnxTHqwC/rXKIvQbCM9sCQXDMZT2k5/bdZPXk
N6XUu5huPJ75N+zyoUzCUEkCgYEAg5IuEdpRrennc43aXr0R6h+Aj4WqbLOXm0Lv
YFxzQ8KOR8JuPkksEP9Q/M9Y1Rqei20SIx8iUsCAafdfmQ72UkpCixiCpoRqSxhF
iZJQ0Dz18QZ5G2gHKRX3/cE0o2CR44mg+SyPcixp9aCk8KFdoTLrM6YYQoXO1HOd
UpeUQEMCgYEAyJWXHtYO8c/ooRtu15ZczimLuQpVCmkSPfmUSg9nwCYFxrJav9XE
i0MNmsyuhte7TwkXJekLq7UhpNYIBhVh2qvDSpa3bAFsKDbJnKWQ3crSQOCIP2YJ
WaDHGCL29HUyTh3075vzK9pkYkSCeykGZE+IBAlr/mkw6Wt/ngLZPWI=
-----END RSA PRIVATE KEY-----

ちゃんと作れたらこんな感じになる。
image.png

Jenkins管理画面で管理ノードに外部サーバを追加

ノードの管理 クリック
image.png

新規ノード作成 クリック
image.png

ノード名を入力して、Type=Permanent Agent を選択すると一気に入力範囲が増える
image.png

こんな感じで入力する。
リモートFSルートはssh接続時のホームディレクトリを置いてやればOK。
image.png
後半。ホストのところはターゲットノードのIPアドレスを入力する。
image.png
ラスト。こんな感じです。
image.png

登録後の状態がこちら。
image.png

Jenkinsから外部サーバに対してテストジョブを実行して動作検証

これで準備整ったので動かしてみる。

画面左上より 新規ジョブ作成 クリック
image.png

お試しなので、名前を適当に入力して、「フリースタイル・プロジェクトのビルド」クリック
image.png

実行対象ノードを指定する。
ラベル式にはノードの管理で追加した「ノード名」を入れてやる。
image.png

中盤。特に何も設定しなくてOK
image.png

ラスト。 Build Stepsを選択して「シェルの実行」を選択。
image.png

こんな感じでシェル入力できるので、ここで実行したいシェルを入れてやる。
さりげなく相対パス指定してるけど、この場合はリモートFSルートを起点としたパスになる。
image.png

あとは特にいじらずに 保存 クリック
image.png

完成。 これで ビルド実行 をクリックすると動き出す。クリックしてみる。
image.png

echoしてファイル保管するだけだから一瞬で完了した。
よくみると下に#1ってのが履歴として残ってる。クリックしてみる。
image.png

履歴画面が出てきた。ちゃんと終わってるようだ。
image.png

試しにサーバにログインしてちゃんとhello.txtできてるか見に行く。
行ってみて気づいたけど
どうやら、相対パスの起点は
{リモートFSルート}/workspace/{ジョブ名}/ の配下になるようだ。おぼえとこ。
image.png

ちゃんと思った通りのものができててよかった

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