LoginSignup
1
1

More than 5 years have passed since last update.

Ansibleのtagsを使ってJenkins ver.2をセットアップする

Last updated at Posted at 2016-07-03

はじめに

AnsibleでJenkinsをインストールし、さらにプラグインの組み込を行う方法を紹介します。
Jenkins CLIは利用しません。

検証環境:Jenkins ver.2.11

Ansibleのインストールは下記の記事を参考にしてください。
 Ansible 最初の一歩

PlayBookとconfig.xml

Ansibleのtagsを利用して、Step1, Step2に分けて操作します。

  • PlayBookの流れ
    1. Step1
      • Jenkinsの初回の起動を実行し、各種ファイルを展開させます。
      • Jenkinsを停止させます。
    2. 手動で認証操作を行います。
      • 初回起動後、/var/lib/jenkins/secrets/initialAdminPassword をAdministrator passwordを入力する必要がありました。この認証をパスしていないと、config.xmlを上書きしても再起動すると初期状態に戻ってしまうようです。
    3. Step2
      • セキュリティを無効に設定したconfig.xmlと差し替えます。
      • プラグイン(hpiファイル)をpluginsディレクトリに格納します。
      • Jenkinsを起動させ、プラグイン(hpiファイル)を展開します。
      • Jenkinsのセキュリティを無効にする方法については、下記の記事を参照してください。
         Jenkinsのセキュリティを無効にする  
  • ファイルの配置
    以下のように配置してください。
    playbook.yml
     └templates/
       └config.xml

     

  • PlayBook

playbook.yml
- hosts: all
  remote_user: ec2-user
  become: true
  tasks:
    #****************************************************
    # Step1
    #****************************************************
    - name: download jenkins.repo
      get_url: >
        url="http://pkg.jenkins-ci.org/redhat/jenkins.repo"
        dest=/etc/yum.repos.d/jenkins.repo
      tags:
        - step1

    - name: import jenkins-ci.org.key
      rpm_key: >
        key="https://jenkins-ci.org/redhat/jenkins-ci.org.key"
        state=present
      tags:
        - step1

    - name: install jenkins
      yum: name=jenkins
      tags:
        - step1

    - name: enable jenkins
      service: >
        name=jenkins
        enabled=yes
      tags:
        - step1

    - name: start jenkins
      service: >
        name=jenkins
        state=started
      tags:
        - step1

    #****************************************************
    # Step2
    #****************************************************
    - name: stop jenkins
      service: >
        name=jenkins
        state=stopped
      tags:
        - step2

    - name: disable security
      copy: >
        src=./templates/config.xml
        dest=/var/lib/jenkins/config.xml
        owner=jenkins
        group=jenkins
        mode=0644
      tags:
        - step2

    - name: install "Exclusive Execution Plugin"
      get_url: >
        url=http://updates.jenkins-ci.org/latest/exclusive-execution.hpi
        dest=/var/lib/jenkins/plugins/exclusive-execution.hpi
        owner=jenkins
        group=jenkins
        mode=0766
      tags:
        - step2

    - name: install "stepcounter Plugin"
      get_url: >
        url=http://updates.jenkins-ci.org/latest/stepcounter.hpi
        dest=/var/lib/jenkins/plugins/stepcounter.hpi
        owner=jenkins
        group=jenkins
        mode=0766
      tags:
        - step2

    - name: start jenkins
      service: >
        name=jenkins
        state=started
      tags:
        - step2
  • config.xml
config.xml
<?xml version='1.0' encoding='UTF-8'?>
<hudson>
  <disabledAdministrativeMonitors/>
  <version>1.0</version>
  <numExecutors>2</numExecutors>
  <mode>NORMAL</mode>
  <useSecurity>false</useSecurity>
  <disableRememberMe>false</disableRememberMe>
  <projectNamingStrategy class="jenkins.model.ProjectNamingStrategy$DefaultProjectNamingStrategy"/>
  <workspaceDir>${JENKINS_HOME}/workspace/${ITEM_FULLNAME}</workspaceDir>
  <buildsDir>${ITEM_ROOTDIR}/builds</buildsDir>
  <jdks/>
  <viewsTabBar class="hudson.views.DefaultViewsTabBar"/>
  <myViewsTabBar class="hudson.views.DefaultMyViewsTabBar"/>
  <clouds/>
  <scmCheckoutRetryCount>0</scmCheckoutRetryCount>
  <views>
    <hudson.model.AllView>
      <owner class="hudson" reference="../../.."/>
      <name>すべて</name>
      <filterExecutors>false</filterExecutors>
      <filterQueue>false</filterQueue>
      <properties class="hudson.model.View$PropertyList"/>
    </hudson.model.AllView>
  </views>
  <primaryView>すべて</primaryView>
  <slaveAgentPort>-1</slaveAgentPort>
  <label></label>
  <crumbIssuer class="hudson.security.csrf.DefaultCrumbIssuer">
    <excludeClientIPFromCrumb>false</excludeClientIPFromCrumb>
  </crumbIssuer>
  <nodeProperties/>
  <globalNodeProperties/>
</hudson>

ansible-playbook

実行してみます。

・Step1

$ ansible-playbook -t step1 playbook.yml

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

TASK [setup] *******************************************************************
ok: [target01]

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

TASK [import jenkins-ci.org.key] ***********************************************
changed: [target01]

TASK [install jenkins] *********************************************************
changed: [target01]

TASK [enable jenkins] **********************************************************
ok: [target01]

TASK [start jenkins] ***********************************************************
changed: [target01]

PLAY RECAP *********************************************************************
target01                   : ok=6    changed=4    unreachable=0    failed=0

・手動操作
  Web画面で認証操作を行います。

・Step2

$ ansible-playbook -t step2 playbook.yml

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

TASK [setup] *******************************************************************
ok: [target01]

TASK [stop jenkins] ************************************************************
changed: [target01]

TASK [disable security] ********************************************************
changed: [target01]

TASK [install "Exclusive Execution Plugin"] ************************************
changed: [target01]

TASK [install "stepcounter Plugin"] ********************************************
changed: [target01]

TASK [start jenkins] ***********************************************************
changed: [target01]

PLAY RECAP *********************************************************************
target01                   : ok=5    changed=4    unreachable=0    failed=0

おわりに

今回の記事は、プラグインのインストールまででしたが、セキュリティの設定も元に戻すのであれば、一旦、config.xmlを退避させておき、プラグインのインストールが終わったら、退避させておいたconfig.xmlを戻してあげてください。

1
1
0

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
1
1