はじめに
AnsibleでJenkinsをインストールし、さらにプラグインの組み込を行う方法を紹介します。
Jenkins CLIは利用しません。
検証環境:Jenkins ver.2.11
Ansibleのインストールは下記の記事を参考にしてください。
Ansible 最初の一歩
PlayBookとconfig.xml
Ansibleのtagsを利用して、Step1, Step2に分けて操作します。
-
PlayBookの流れ
-
Step1
- Jenkinsの初回の起動を実行し、各種ファイルを展開させます。
- Jenkinsを停止させます。
-
手動で認証操作を行います。
- 初回起動後、
/var/lib/jenkins/secrets/initialAdminPassword
をAdministrator passwordを入力する必要がありました。この認証をパスしていないと、config.xmlを上書きしても再起動すると初期状態に戻ってしまうようです。
- 初回起動後、
-
Step2
- セキュリティを無効に設定したconfig.xmlと差し替えます。
- プラグイン(hpiファイル)をpluginsディレクトリに格納します。
- Jenkinsを起動させ、プラグイン(hpiファイル)を展開します。
- Jenkinsのセキュリティを無効にする方法については、下記の記事を参照してください。
Jenkinsのセキュリティを無効にする
-
Step1
-
ファイルの配置
以下のように配置してください。
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を戻してあげてください。