Jenkinsのスレーブを作成する
ここ最近社内DevOpsをやろうと思っててそれがなかなかProxy越えできなくて詰みかけていました。
なのでとりあえず面倒なセキュリティに阻まれることのない自宅サーバ環境でフィジ取ろうと思って、ある程度のところまで上手くいったので備忘録です。
スレーブの仮想マシン作成
以前何度かお話ししている通り私はdocker-composeを使ってGitLabやらJenkinsやらをまとめて立ち上げています。で、それらを一つのドメインにまとめて外部とのやり取りはリバースプロキシにお任せするような作りにしています。
今回のスレーブについてはノード数が固定したくなかったのとスレーブを弄るためにいちいち他のマシンが死んでしまうのが嫌だったので順当にDockerfileで記述しています。で、Jenkinsと通信するために新しくslave-netというDockerネットワークを作ることにします。
スレーブになれる要件ですが、
- SSHログインできる
- Javaが動く
- その他、ビルドに必要なパッケージがインストールされている(今回はPython環境の事前インストール)
があれば大丈夫なようです。
まず、Dockerfileはこんな感じ。後述の参考サイトのものをそのまま使いました。とりあえず動けばよかろうなので。
FROM ubuntu:16.04
#
RUN apt-get update
RUN apt-get -y install sudo openssh-server openjdk-8-jdk git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
#
RUN mkdir -p /var/run/sshd
RUN useradd -d /home/jenkins -m -s /bin/bash jenkins
RUN echo jenkins:your_password | chpasswd
RUN echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
#
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
ビルドします。
$ docker build -t jenkins-slave .
立ち上げます。ここが一番ハマりまして、プライベートLANの名前解決のために COPY
でhostsを書き換えることができなかったことです。
まぁ、調べれば一発だったのですが、 --add-host
オプションが必要だったということですね。
$ docker run --name=jenkins-slave -t --net=slave-net --ip=192.168.60.100 -d -p 22:22 --add-host=git.minatoproject.com:192.168.3.9 jenkins-slave
ノード追加
Jenkinsからノードを追加します。
こんな感じ。今回は秘密鍵を使わないパスワード認証なので「Host Key Verification Strategy」も変更が必要です。
ノード情報が更新されれば正しく追加できました。