皆さんJenkinsは使ったことがありますか?
私はインフラエンジニアとして15年以上業務をしておりますが、Jenkinsを使うことでAWSやVMwareの仮想マシン構築をコード化する、いわゆる「Infrastructure as Code(IaC)」を利用した継続的インテグレーション(CI)/継続的デリバリー(CD)としての利用をしてます。
具体的には以下のような流れです。
- Jenkinsのjobを起点としてAWS CloudformtionやVMware APIを経由して仮想マシンを作成。
- 作成した仮想マシン内でgitコマンドでリポジトリでセットアップスクリプトを取得した後、chef soloもしくはansibleでアプリケーションなどのセットアップ
今回はこの便利なJenkins環境をDockerでサクッと作ってしまいます。めちゃくちゃ簡単です。
Jenkinsとは?
Jenkins(ジェンキンス)とは、継続的インテグレーション(CI)や継続的デリバリー(CD)を実現のためのツールです。
Jenkinsは、「ソフトウェアのリリーススピードの向上」「開発プロセスの自動化」「開発コストの削減」といった利用目的として、注目がされているオープンソースのツールです。
多様なスクリプト(Java、PHP、Perl、javascript、bash)にも対応でき、豊富なプラグインによる優れた拡張性、日本語にも対応していることから人気の理由です。
また、利用者も多く、日本語コミュニティも盛んであり、日本語の情報が集めやすいのも特徴です。
試した環境
- Windows10 Pro バージョン1909
- CPU:Intel Core i7-2600K
- メモリ:24GB
- ディスク:240GB (SSD)
Jenkinsコンテナの作成
docker/docker-compose環境の構築
前提として事前にdockerとdocker-composeコマンドが使える環境を構築済みの前提です。
もしDocker環境がまだの方は、以下のWindows/Mac/CentOSのインストール方法を参考にしてください。※Windowsの場合にはPro版が前提になりますので注意です。
docker-compose.yamlの準備
まず、適当なフォルダ(私の場合はC:\Docker\jenkins)を作ってから以下の内容でdocker-compose.yamlを作成します。
今回は開発用のイメージ(jenkins/jenkins:latest)と8080ポートを使います。
version: "3"
services:
master:
container_name: master
image: jenkins/jenkins:latest
ports:
- 8080:8080
volumes:
- ./jenkins_home:/var/lib/jenkins_home
コンテナ作成(docker-compose up -d)
あとはdocker-composeコマンドでコンテナ構築します。
C:\Docker\jenkins>docker-compose up -d
Creating network "jenkins_default" with the default driver
Pulling master (jenkins/jenkins:latest)...
latest: Pulling from jenkins/jenkins
3192219afd04: Pulling fs layer
17c160265e75: Pulling fs layer
・
・
Status: Downloaded newer image for jenkins/jenkins:latest
Creating master ... done
コンテナができていて8080ポートで立ち上がっていることを確認します。
C:\Docker\jenkins>docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------
master /sbin/tini -- /usr/local/b ... Up 50000/tcp, 0.0.0.0:8080->8080/tcp
動作確認
ブラウザでlocalhost:8080にアクセスして以下の画面が開けばとりあえずはOKです。
Jenkinsの初期セットアップ
次に初期セットアップを進めていきます。
初期パスワードはJenkinsコンテナ内の「/var/jenkins_home/secrets/initialAdminPassword」に保管されているのでコンテナに接続して初期パスワードを確認します。
C:\Docker\jenkins>docker exec -it master /bin/bash
jenkins@44f98e773439:~/secrets$ cat /var/jenkins_home/secrets/initialAdminPassword
88957684a721437b8331cc6cf612b328
Pluginのインストールはsuggetedで進めます。
幾つかのプラグインのインストールに失敗してしまいましたが、後で対応することにします。
adminユーザを登録します。
Jenkinsが再起動したら次はログオン画面が表示されます。先ほどのAdminユーザでログオンしてみます。
ログオンができました。これでjobなどを作ることができるようになりました。
まとめ
今回はJenkinsをDockerコンテナで簡単に作成してみました。Docker環境されあれば10分くらいでJenkinsが使えるようになります。
ただし、Jenkinsを使うだけでは継続的インテグレーション(CI)や継続的デリバリー(CD)できませんので、時間があればAWSやAnsible/Chefを使った実現方法についても紹介できればと思ってます(かなり大変な気がしますが・・・)
Jenkinsを学習するための本
Jenkinsを学習するためには以下の本がオススメです。
この書籍ではもちろんJenkins自体の使い方の説明もありますが、他ツールの連携なども説明されているので中級レベル向けの本になります。
Dockerのオススメ勉強方法
私がオススメするDocker初心者向けの最初に購入すべき書籍は「さわって学ぶクラウドインフラ docker基礎からのコンテナ構築」です。
さわって学ぶクラウドインフラ docker基礎からのコンテナ構築
本書ではDockerの基本的な概念などの座学ももちろんありますが、実際に、Dockerのインストール方法やWebサーバーをコンテナで構築するハンズオンを通じて学習することができるため、特に初心者の方はは分かりやすい内容となっています。
今回は以上となります。
コメント