LoginSignup
5

More than 5 years have passed since last update.

proxy 環境化の CentOS に Ansible で Jenkins をインストール

Last updated at Posted at 2014-04-08

はじめに

GitHub の絶大な人気と相まって、近年では Travis CI などの名前も多く見かけるようになりましたが、今なお CI (Continuous Integration:継続的インテグレーション) と言えば Jenkins の名前を思い浮かべる方が多いかと思います。

Jenkins を動作させるためには以下のようにいくつかの方法があり、どれもとても簡単です。

  1. .war ファイルをダウンロードし、サーブレットコンテナにデプロイして動作させる
  2. .war ファイルをダウンロードし、組み込みの Jetty サーバで動作させる
  3. ネイティブパッケージをダウンロードし、サービスとして動作させる

今回は Ansible を使って Jenkins のネイティブパッケージをインストールし、以下の構成で動作させる手順を紹介します。

  • OpenJDK 1.7.0
  • Jenkins
  • apache

前提

プロキシサーバが存在する企業内 LAN で、以下の手順に従って仮想環境を構築しているものとします。

以下、上記手順に従って構築した仮想環境を作業マシン、jenkins を構築する環境を対象マシンと呼びます。

手順

対象マシンの準備

まず対象マシンを用意します。ここでは Vagrant 上に仮想サーバとして作成しますが、すでに対象マシンが存在する場合、この手順は不要です。

適当な box をダウンロードしていない場合は、proxy 環境化の CentOS に Ansible で Redmine をインストール - Qiita と同様の手順で box をダウンロードします。

box が用意できたら、適当なディレクトリを作成、移動して box を初期化します。

bash-3.1$ mkdir -p /c/vagrants/jenkins
bash-3.1$ cd /c/vagrants/jenkins/

bash-3.1$ vagrant init CentOS-6.3-x86_64-v20130101
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

作成された Vagrantfile を開いて IP アドレスを設定します。ここでは 192.168.33.200 としました。

bash-3.1$ vi Vagrantfile
bash-3.1$ grep private_network Vagrantfile
  config.vm.network "private_network", ip: "192.168.33.200"

最後に box を起動します。

bash-3.1$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'CentOS-6.3-x86_64-v20130101'...
==> default: Matching MAC address for NAT networking...
(snip)
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => C:/vagrants/jenkins

鍵交換

proxy 環境化の CentOS に Ansible で Redmine をインストール - Qiita を参照して、作業マシンの公開鍵を対象マシンに登録します。

プロビジョニング

以下のようにして作業マシンに playbook を clone します。

# vagrant at precise64 in ~ [13:22:25]
$ g clone https://github.com/garbagetown/ansible-jenkins.git
Cloning into 'ansible-jenkins'...
remote: Reusing existing pack: 75, done.
remote: Total 75 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (75/75), done.

clone したディレクトリに移動し、プロキシサーバの情報を設定します。your.proxy.host9999 は自身の環境に読み替えてください。

認証が必要な場合は http://username:password@your.proxy.host:9999/ のように設定します。

# vagrant at precise64 in ~ [13:23:18]
$ ansible-jenkins

# vagrant at precise64 in ~/ansible-jenkins on git:master o [13:24:12]
$ echo 'http_proxy: http://your.proxy.host:9999' >> roles/proxy/vars/main.yml

続いて、hosts ファイルの内容を確認します。対象マシンの IP アドレスと異なる場合は適宜修正してください。

# vagrant at precise64 in ~/ansible-jenkins on git:master x [13:24:28]
$ cat hosts
[jenkins]
192.168.33.200

最後に playbook を実行します。

# vagrant at precise64 in /vagrant/ansible-jenkins on git:master x [13:29:50]
$ ansible-playbook -i hosts site.yml

PLAY [install jenkins] ********************************************************

GATHERING FACTS ***************************************************************
ok: [192.168.33.200]
(snip)
NOTIFIED: [jenkins | restart httpd] *******************************************
changed: [192.168.33.200]

PLAY RECAP ********************************************************************
192.168.33.200             : ok=19   changed=17   unreachable=0    failed=0


# vagrant at precise64 in /vagrant/ansible-jenkins on git:master x [13:34:35]

確認

プロビジョニングが正常に完了したら、ブラウザから 192.168.33.200 にアクセスし、Jenkins の画面が表示されることを確認します。

20140408_001.JPG

Jenkins 自体の使い方については、下記書籍や Java - Jenkins使い方メモ - Qiita などが参考になるでしょう。

まとめ

以上のように、とても簡単な手順でプロキシサーバの存在する企業 LAN 内に Jenkins を構築することができました。

はじめに書いた通り、Jenkins 自体のインストールはとても簡単ですが、それでもプロキシサーバや apache との連携は自分で設定しなければなりません。また、apache と連携する際にサブドメインでアクセスするのか、サブディレクトリでアクセスするのか、またはサーバ自体を Jenkins 専用としてしまうのかなど、判断に困る場合もあるでしょう。

これらの作業や判断をコード化、自動化することで、もともと簡単な Jenkins のインストールを更に簡単にすることができます。

なにより、どれだけ簡単な作業でもコード化し、バージョン管理していくという方針を徹底することが肝要です。パラメータを少し変更するだけでも playbook を修正し、serverspec によるテストを追加し、バージョン管理するとなると、とても負荷が高く感じますが、これを徹底することでサーバ構築作業の属人化を排除することができます。

クラウド、ブルーグリーンデプロイ、イミュータブルインフラストラクチャなどの単語が飛び交う昨今、サーバ構築作業のコード化、自動化の価値はとても高く、導入を検討する価値は充分にあると思います。

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
5