ウェブサイト検索

UbuntuでJenkinsマスターとスレーブを設定する方法


UbuntuでJenkinsマスターとスレーブを設定する方法

このページで

  1. Jenkinsの「マスター/スレーブ」はどのように機能しますか?
  2. 前提条件
  3. 私たちは何をしますか?
  4. ステップ1 - Jenkinsマスターをインストールする
  5. ステップ 2 - Jenkins マスターの資格情報を設定する

    1. SSHキーを生成する
    2. Jenkinsで資格情報を設定する
  6. ステップ3 - スレーブノードを設定する

    1. Javaをインストールする
    2. 新しいJenkinsユーザーを追加
    3. マスターからスレーブにSSHキーをコピーする
  7. ステップ4 - 新しいスレーブノードを追加する
  8. ステップ5 - ビルドを実行するためにスレーブエージェントノードを準備する
  9. ステップ6 - テスト
  10. 参考文献

Jenkinsは、Hudsonプロジェクトから派生した自動化サーバーです。Git、SVN、Mercurialを含む多くのSCM(ソース管理)ソフトウェアシステムをサポートしています。Jenkinsは、プロジェクトを自動化するための数百のプラグインを提供しています。Jenkinsはマスター/スレーブアーキテクチャをサポートしており、大規模なプロジェクトビルドをホストすることが可能です。

Jenkinsの「マスター/スレーブ」はどのように機能しますか?

Jenkinsのマスター/スレーブアーキテクチャは、ビルドプロジェクトの作業負荷が複数のエージェントノードに分散される分散ビルド環境に使用され、各ビルドごとに異なる環境を使用できます。

Jenkinsの「マスター/スレーブ」アーキテクチャでは、マスターは基本的なJenkinsインストールとして自身を表し、ビルドシステムのすべてのタスクを処理します。Jenkinsマスターノードは、ジョブのスケジューリング、スレーブノードの監視、スレーブノードへのビルドの配信、ビルド結果の記録と表現、そしてビルドジョブの直接実行に使用されます。

Jenkinsのスレーブノードは、マスターからビルドプロジェクトをオフロードするために設定されており、マスターとスレーブの間に確立された接続が必要です。Jenkinsのスレーブノードは、WindowsやLinuxなどのさまざまなオペレーティングシステムで実行でき、フルJenkinsパッケージをインストールする必要はありません。

このチュートリアルでは、最新のUbuntuバージョンを使用してJenkinsのマスター-スレーブアーキテクチャを設定する方法を学びます。私たちはJenkinsマスターサーバーの設定方法と、他のUbuntuノードをJenkinsスレーブとして追加する方法を学びます。

前提条件

  • Ubuntuサーバー(Ubuntu 22.04 - Ubuntu 16.04)

    • マスター - 10.0.15.10
    • スレーブ01 - 10.0.15.21
    • slave02 - 10.0.15.22
  • ルート権限

私たちは何をしますか?

  1. Jenkinsマスターをインストールする
  2. Jenkinsマスターの資格情報を設定する
  3. スレーブエージェントノードを設定する
  4. 新しいスレーブノードを追加
  5. ビルドを実行するためにスレーブエージェントノードを準備する
  6. テスト

ステップ1 - Jenkinsマスターをインストールする

このチュートリアルでは、基本的なJenkinsのインストールについては説明しません。Jenkinsのインストールに関するいくつかの記事がHowtoForgeに掲載されています。

  • Ubuntu 16.04にJenkinsをインストールする
  • Ubuntu 18.04にJenkinsをインストールする
  • Ubuntu 20.04にJenkinsをインストールする
  • Ubuntu 22.04にJenkinsをインストールする
  • CentOS 7にJenkinsをインストールする

以下はJenkinsがインストールされた私たちのUbuntuマスターサーバーです。

ステップ 2 - Jenkins マスターの資格情報を設定する

マスターサーバーJenkinsがインストールされたら、マスターサーバー自体を設定する必要があります。デフォルトでは、Jenkinsエージェントノードを起動する方法はいくつかあります。SSH、Windows管理者アカウント、Java Web Start(JNLP)を通じてエージェントノードを起動することができますので、あなたの環境設定やオペレーティングシステムに応じて最適な方法を選んでください。

このガイドでは、エージェントノードをsshで起動し、マスターサーバーにJenkinsの資格情報を設定する必要があります。

SSHキーを生成する

私たちはエージェントノードを設定するためにsshキー認証を使用しますので、Jenkinsユーザーのsshキーを生成し、その後手動で各サーバーノードにssh-copy-idを使ってキーをアップロードする必要があります。

Jenkinsマスターサーバーで、Jenkinsユーザーにログインし、sshキーを生成します。

su - jenkins
ssh-keygen

そして、'.ssh' ディレクトリに 'id_rsa' プライベートキーと 'id_rsa.pub' パブリックキーが得られます。

Jenkinsで資格情報を設定する

Jenkinsのダッシュボードを開き、左側の「資格情報」メニューをクリックします。

そして「グローバル」ドメインリンクをクリックします。

今、‘資格情報を追加’をクリックしてください。

次に認証方法を選択してください。

  • 種類: プライベートキーを持つSSHユーザー名
  • 範囲:グローバル
  • ユーザー名: jenkins
  • プライベートキー:マスターサーバーからJenkinsユーザーの'id_rsa'プライベートキーを直接入力して貼り付けます。

「OK」をクリックしてください。

そして、SSH認証キー方式のJenkinsクレデンシャルが作成されました。

ステップ3 - スレーブノードを設定する

これからスレーブノードサーバーをセットアップします。そのサーバーにJavaをインストールし、新しいJenkinsユーザーを作成します。

Javaをインストールする

「software-properties-common」パッケージをインストールし、java PPAリポジトリを追加します。

sudo apt install software-properties-common apt-transport-https -y
sudo add-apt-repository ppa:openjdk-r/ppa -y

以下のaptコマンドを使用してJava OpenJDKをインストールします。

sudo apt install openjdk-8-jdk -y

インストールが完了したら、インストールされたJavaのバージョンを確認してください。

java -version

そして、システムにJava OpenJDK 1.8がインストールされます。

新しいJenkinsユーザーを追加

今、すべてのエージェントノードに「Jenkins」ユーザーを追加してください。

以下のコマンドを実行してください。

useradd -m -s /bin/bash jenkins
passwd Jenkins

'Jenkins' ユーザーがエージェントノード用に作成されました。

マスターからスレーブにSSHキーをコピーする

次に、マスターからスレーブサーバーノードにキー「id_rsa.pub」をアップロードする必要があります。以下のように「ssh-copy-id」コマンドを使用して各サーバーノードにアップロードする必要があります。

ssh-copy-id [email 
ssh-copy-id [email 

Jenkinsのユーザーパスワードを入力してください。

sshキー「id_rsa.pub」がすべてのエージェントノードにアップロードされました。

ステップ4 - 新しいスレーブノードを追加する

ジェンキンスのダッシュボードで、'Jenkinsの管理' メニューをクリックし、'ノードの管理'をクリックします。

「新しいノード」をクリックしてください。

ノード名「slave01」を入力し、「永続エージェント」を選択して「OK」をクリックします。

ノード情報の詳細を入力してください。

  • 説明:slave01ノードエージェントサーバー
  • リモートルートディレクトリ: /home/jenkins
  • ラベル: slave01
  • 起動方法:SSHを介してスレーブエージェントを起動し、ホストIPアドレス「10.0.15.21」を入力し、「Jenkins」の資格情報を使用して認証を選択します。

今、'保存'ボタンをクリックして、マスターサーバーがすべてのエージェントノードに接続し、エージェントサービスを起動するのを待ちます。

以下は、マスターサーバーがすべてのエージェントノードに接続されているときの結果です。

Jenkinsのスレーブノードがマスターサーバーに追加されました。

ステップ5 - ビルドを実行するためにスレーブエージェントノードを準備する

このステップでは、Jenkinsマスターを構成してスレーブエージェントノードでビルドを実行します。

「Jenkinsの管理」メニューをクリックし、「システムの設定」をクリックします。

今、『スレーブセットアップ』セクションに移動し、以下のように必要なことをすべて定義してください。

'スレーブセットアップ'に関する詳細情報はリンクをご覧ください。

「保存」ボタンをクリックしたので、スレーブエージェントノードでビルドを実行する準備が整いました。

ステップ6 - テスト

現在、Jenkinsのための新しいシンプルなビルドを作成し、ボットの「slave01」と「slave02」エージェントノードでビルドを実行したいと考えています。

Jenkinsのダッシュボードで、「新しいアイテム」メニューをクリックします。

アイテム名を入力し、自由形式プロジェクトを選択して「OK」をクリックしてください。

一般セクションに職務内容を入力し、「このプロジェクトを実行できる場所を制限する」のオプションを確認してください。

'ラベル表現'で、'slave01'などのノードを指定します。

ビルドセクションに移動し、「シェルを実行」オプションを選択し、以下のコマンドを入力します。

top -b -n 1 | head -n 10 && hostname

「保存」ボタンをクリックすると、求人ページにリダイレクトされます。

「今すぐビルド」をクリックしてプロジェクトをビルドし、その後「ビルド履歴」セクションの項目をクリックしてください。

そして、次が私の結果です。

'slave01'エージェントノード上に構築します。

'slave02'エージェントノード上に構築します。

Jenkinsのマスター/スレーブアーキテクチャのインストールと構成、および分散ビルドの設定が正常に完了しました。

参考文献

  • https://wiki.jenkins.io/

関連記事: