【2018年版】Docker+Rancher+JenkinsなCI環境を構築する


はじめに

システム開発で環境構築に時間をかけるなんてダサい時代になりました。
ってことで、CI環境もサクッと準備しちゃいましょう。
今回は、サラのCentOS7にDocker/Rancher/Jenkinsをセットアップしてみたいと思います。

セットアップ

CentOS7はインストール済みとします。
SSH等でログインしておいてください。

Dockerをインストールする

まずはDocker-CEをインストールします。
公式サイトのコマンドをチャチャっと打ち込んでいきます。

$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

$ sudo yum install docker-ce

$ sudo systemctl start docker

docker-composeコマンドも入れておきます。

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose

/usr/local/bin にパスが通っていない場合はパスを通します。

$ echo export PATH='/usr/local/bin:$PATH' >> ~/.bash_profile

$ source ~/.bash_profile

バージョンを確認しておきます。

$ docker -v
Docker version 18.09.0, build 4d60db4

$ docker-compose -v
docker-compose version 1.23.1, build b02f1306

これでDockerの準備はOKです!

Rancherをインストールする

RancherはDockerのコンテナイメージが配布されています。
まずはサーバー側のコンテナを起動します。

なお、標準では8080ポートが使用されますが、よく使われるポート番号なので、ここでは9000ポートに差し替えています。

$ sudo docker run -d --restart=unless-stopped -p 9000:8080 rancher/server:stable

ブラウザでアクセスしてみます。
http://<DockerサーバーIP>:9000/

※日本語化されていない場合は、画面右下から言語を選択できます。

次にホストを追加します。

ここではサイトのアドレスを選択します。
サーバーとホストを同一のマシンに配置することも可能です。

こちらの画面の5番のコマンドをホストのPCで実行します。

$ sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.0.10:9000/v1/scripts/FF89B185C7918681C347:1514678400000:lXr6i25oQ9mDsC7GYk4quVRplj0

ホストが追加されればOKです!

Jenkinsをインストールする

Rancherにはあらかじめ便利なカタログが用意されています。
Jenkinsもカタログに登録されているため、ここから登録していきます。

一番左のJenkins CI serverを選択します。

ここでもポート番号が8080となっていますので、被らないよう9001を選択しています。

Rancherはコンテナの集まりをスタックとして管理できます。
スタックが起動したことを確認します。

ポート番号の9001がリンクになっているのでクリックしてみます。

Jenkinsが起動したようです。
管理者パスワードはコンテナ内のファイルに記載されているため、Rancherのシェルコンソールから確認してみます。

$ cat /var/jenkins_home/secrets/initialAdminPassword

確認できました。
ログインしてJenkinsの初期セットアップを進めます。

Install suggested pluginsを選択します。

おや?Pipelineがエラーになりました。
これはJenkinsのバージョンが古いためのようです。
しかし、Jenkinsの自動アップデートが有効になっていないため、下記を参考に自動アップデートを有効にします。

・・・ただし、Rancherのシェルコンソールからrootユーザーにsuできないため、下記のコマンドでrootにログインして操作します。

$ sudo docker exec -u 0 -it <コンテナID> bash
$ chown -R jenkins:jenkins /usr/share/jenkins

再度、Jenkinsの画面を開き、アップデートしてください。

以上でJenkinsのインストールが完了です。

お疲れ様でした!