CentOS6にJenkins2.2をAnsibleでインストールしてブラウザからJenkins2にログインするまで

# はじめに
CentOS6にJenkins2.2-1.1(2016/05/10時点で最新)をAnsibleのplaybookでインストールをして、ブラウザからJenkins2にログインするまでをまとめたものです。
別途Jenkins2とGitlab連携についても書く予定です。

## 環境
|種別|名称|ver.|
|:-:|:-:|:-:|
|Ansible Server|OS|CentOS release 6.7 (Final) minimum|
|Ansible Server|Ansible|ansible 2.1.0 (devel d358a22542) last updated 2016/04/04 23:43:05 (GMT +900)　git install|
|Jenkins Server|OS|CentOS release 6.7 (Final) minimum|
|Jenkins Server|java|openjdk version "1.8.0_91"|
|Jenkins Server|Jenkins|jenkins-2.2-1.1|

なお、インターネット接続についてはproxyを利用しない環境です。

## Ansible playbook
plyabookについて

+ Ansibleの`yumrepo`モジュールがうまく動作しなかったので今回は使用していません。
+ Jenkinsのインストールで`jenkins-2.2-1.1`とバージョン指定をしていますが、`yum: name=jenkins state=latest`のようにするとその時点での最新版(2.x)がインストールされます。
+ `git`や`openssh-server`のインストールは必須ではありません。
+ 必要に応じてyum updateのコメントアウトを外してください。

``` a_jenkins2_install_noproxy.yml
---
# Please use the OS of centOS6 and RHEL6. Also, please use in an environment that does not care about the HTTP_PROXY.
# yumrepo module you can use in Ansible version 2.1 or higher.
# In the case of Ansible version 2.0 or less, and then comment out the yumrepo block,
# please remove the comment "download jenkins.repo" and "rpm import jenkins-ci.org.key".

# Setting the destination inventory host
- hosts: all
  become: yes
  become_method: sudo
  become_user: root

# Don't gather hosts facts for performance
  gather_facts: no

# Setting the task
  tasks:
#    - name: yum update         should have been updated(latest)
#      yum: name=* state=latest

    - name: openssh-server     should have been installed(latest)
      yum: name=openssh-server state=latest

    - name: java-1.8.0-openjdk should have been installed(latest)
      yum: name=java-1.8.0-openjdk state=latest

    - name: git                should have been installed(latest)
      yum: name=git state=latest

#    - name: Add jenkins repo
#      yumrepo: name=jenkins baseurl=http://pkg.jenkins-ci.org/redhat gpgcheck=yes gpgkey=http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

    - name: download jenkins.repo
      get_url: url=http://pkg.jenkins-ci.org/redhat/jenkins.repo dest=/etc/yum.repos.d/jenkins.repo

    - name: rpm import jenkins-ci.org.key
      command: rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
      register: raw_result
    - debug: var=raw_result.stdout_lines

    - name: jenkins-2.2-1.1   should have been installed
      yum: name=jenkins-2.2-1.1 state=present

    - name: jenkins           should have been running
      service: name=jenkins state=started enabled=yes

    - name: lokkit -p 8080:tcp
      command: lokkit -p 8080:tcp
      register: raw_result
    - debug: var=raw_result.stdout_lines
```

## Ansible インベントリファイル
hosts

``` hosts
[vmservers]
jenkins2 ansible_host=xxx.xxx.xxx.xxx

[vmservers:vars]
ansible_user=foo
```

## Ansible Playbook 実行結果

```
# ansible-playbook -i hosts a_jenkins2_install_noproxy.yml

PLAY [all] *********************************************************************

TASK [openssh-server     should have been installed(latest)] *******************
changed: [jenkins2]

TASK [java-1.8.0-openjdk should have been installed(latest)] *******************
changed: [jenkins2]

TASK [git                should have been installed(latest)] *******************
changed: [jenkins2]

TASK [download jenkins.repo] ***************************************************
changed: [jenkins2]

TASK [rpm import jenkins-ci.org.key] *******************************************
changed: [jenkins2]
 [WARNING]: Consider using yum, dnf or zypper module rather than running rpm


TASK [debug] *******************************************************************
ok: [jenkins2] => {
    "raw_result.stdout_lines": []
}

TASK [jenkins-2.2-1.1   should have been installed] ****************************
changed: [jenkins2]

TASK [jenkins           should have been running] ******************************
changed: [jenkins2]

TASK [lokkit -p 8080:tcp] ******************************************************
changed: [jenkins2]

TASK [debug] *******************************************************************
ok: [jenkins2] => {
    "raw_result.stdout_lines": []
}

PLAY RECAP *********************************************************************
jenkins2                   : ok=10   changed=8    unreachable=0    failed=0

#
```

## Jenkins2 初期設定
1. ブラウザでjenkinsサーバへ接続します。Jenkins2よりUnlockが必要となったのでWeb画面に書いてある通り
Administrator passwordを確認(rootユーザでjenknisサーバへログインして`cat /var/lib/jenkins/secrets/initialAdminPassword`等)し、
ブラウザ上で入力し`Continue`ボタンを押下します。
![jenkins2_01.png](https://qiita-image-store.s3.amazonaws.com/0/117986/42c6b9c9-2a7c-7749-a8ff-002e51cadd02.png)
1. pluginをインストールします。
![jenkins2_02.png](https://qiita-image-store.s3.amazonaws.com/0/117986/92c72b6c-240c-c9ba-208d-bca860c999c0.png)
1. 今回は`Install Suggested plugins`を選択します。
![jenkins2_03sugest.png](https://qiita-image-store.s3.amazonaws.com/0/117986/6fb49a9e-58f5-431c-2c78-737c7450a22f.png)
1. 初期の管理者アカウントを作成します。（ログインで利用します。）
ユーザー名等を入力して`Save and Finish`ボタンを押下します。
![jenkins2_04create_1st_admin.png](https://qiita-image-store.s3.amazonaws.com/0/117986/aea09c56-ca72-5611-e60c-9c1807180813.png)
1. これでJenkins2の初期設定は完了です。
`Start using Jenkins`ボタンを押下してログイン画面に遷移します。
![jenkins2_05setupcomplete.png](https://qiita-image-store.s3.amazonaws.com/0/117986/65b41f6c-de57-b7f7-cd09-faa24502d15f.png)

## Jenkins2 へログイン
1. さきほど登録した初期管理者のユーザー名とパスワードを入力してログインします。
![jenkins2_06.png](https://qiita-image-store.s3.amazonaws.com/0/117986/f3b4e333-5f73-96f2-5103-7d75b147bb87.png)
1. ログイン完了！
![jenkins2_07login.png](https://qiita-image-store.s3.amazonaws.com/0/117986/6375dc50-f05c-1325-308e-950bd06e2f5c.png)

以上