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

docker-compose を使って Jenkins Master(docker) - Slave(物理PC) [SSH通信]を構築する

Last updated at Posted at 2021-09-23

概要

下図のシステムを docker-compose を使って構築する手順.

image.png

・Jenkins MasterDocker コンテナで稼働する
・Jenkins Slave物理ホスト上 (192.168.1.100 と 200 の 2台) で稼働する

手順

1. Jenkins Master の構築

1-1. docker-compose.yml の作成

次の内容で docker-compose.yml を作成する.

使用する Dockerイメージは「jenkins/jenkins:latest」としているが、
トラブルを回避させたければ動作実績がある版を指定した方が良いかと思う.

なお、タイムゾーンの指定方法については自信が無い.
私の場合は下記で成功した、というだけである. 恐らくハマりポイントになりそうな気がする.

version: '3.7'
 
services:
  jenkinsmaster:
    container_name: jenkinsmaster
    user: root
    image: jenkins/jenkins:latest
    ports:
      - 8080:8080
    environment:
      JAVA_OPTS: "-Duser.timezone=Asia/Tokyo"
      TZ: "Asia/Tokyo"
    volumes:
      - ./PV/jenkinsmaster/jenkins_home:/var/jenkins_home
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro 

1-2. 永続ボリュームを作成する

$ mkdir -p PV/jenkinsmaster

1-3. Jenkins Master を稼働させる

$ docker-compose up -d

1-4. Jenkins Master の初期セットアップをする

WEB-UI から Plugin インストールなどを済ませる.

1-5. コンテナにログインして秘密鍵・公開鍵を作成する

jenkins アカウントで操作すること

## jenkins アカウントでコンテナにログインする
$ docker-compose exec -u jenkins jenkinsmaster bash

## 以下コンテナ内での作業

## 秘密鍵と公開鍵をパスフレーズなしで作成する
$ cd $HOME
$ ssh-keygen -t rsa -N '' -f .ssh/id_rsa

## 下記で表示される公開鍵の内容をダンプしてコピーしておく
$ cat .ssh/id_rsa.pub

## コンテナからログアウトする

 

2. Slave マシンのセットアップ

192.168.1.100 (Linux) でのセットアップ例.
192.168.1.100 にはユーザアカウント foo が存在しているものとする.

2-1. Master からの公開鍵認証による接続を許可しておく

## 192.168.1.100 にアカウント foo でログインして、次の操作をする
$ mkdir -p /home/foo/.ssh
$ sudo chmod 755 /home/foo
$ sudo chmod 700 /home/foo/.ssh
$ echo '上述の id_rsa.pub の内容' >> /home/foo/.ssh/authorized_keys

2-2. Slave の workspace を作成する

## 192.168.1.100 にアカウント foo でログインして、次の操作をする
$ mkdir $HOME/workspace

 

3. Jenkins WEB-UI で Slave を定義する

「Jenkinsの管理」-「Manage Credentials」より、下表のように入力して「保存」を押す.
(同時実行数を 1 にしているが、変更しても良い)

image.png

(1)
「種類」に「SSHユーザー名と秘密鍵」を指定する.
「ユーザー名」には「foo」を入力する.
「直接入力」にチェックを入れて、./PV/jenkinsmaster/jenkins_home/.ssh/id_rsa の中身を貼り付ける.

(2)
「高度な設定」より、「Javaのパス」を開いて「/usr/bin/java」を入力する.
(正確なパスは which java で調べること)

4. Jenkins Master から Slave へ SSH 接続できるかを検証する

## Jenkins Master コンテナにログインする
$ docker-compose exec -u jenkins jenkinsmaster bash

## 以下、コンテナ内での操作である
$ ssh -o 'StrictHostKeyChecking=no' foo@192.168.1.100

## このときパスワードなしでログインできれば成功である

5. Jenkins Slave 192.168.1.200 のセットアップをする

上記 192.168.1.100 と同じ要領でセットアップすれば良い

6. Jenkins Master コンテナを再起動すれば完了

$ docker-compose restart

以上

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?