LoginSignup
12
10

More than 5 years have passed since last update.

JenkinsからAnsibleを実行(2/2)

Last updated at Posted at 2016-11-23

前回でAnsibleの環境の構築と直接Ansibleを実行させてLinuxとWindowsでの実行を確認しました。今回は前回作ったAnsible環境にJenkinsを導入しておじさんにAnsibleを実行してもらいます


前回のリンク:JenkinsからAnsibleを実行(1/2)
http://qiita.com/yo_dazy/items/08ed86f53e3233fe14bb


■内容
項目 server1 Client-lin Client-win
OS RHEL7 RHEL7 Win2k12
package Ansible(前回導入)
Jenkins(今回導入)
考え中 考え中

■Jenkins導入

前回Ansibleを導入した「Server1」にJenkinsを導入します。Jenkinsを入れることでWEBページからAnsible実行を目指します
ちなみにJenkinsではデフォルトで8080を使いますので事前にポートを開放しておきます

  • Javaの導入
    Jenkinsの前提条件。JenkinsはJavaで動いているから必要
[root@server1 yum.repos.d]# yum -y install java-1.7.0-openjdk
<中略>
Complete!
[root@server1 yum.repos.d]# java -version
java version "1.7.0_121"
OpenJDK Runtime Environment (rhel-2.6.8.0.el7_3-x86_64 u121-b00)
OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode)
[root@server1 yum.repos.d]#
  • Jenkinsの導入
    YUMで入れたいため、リポジトリから登録します
/etc/yum.repos.d
[jenkins]
name=Jenkins
baseurl=http://pkg.jenkins.io/redhat
gpgcheck=1
[root@server1 /]# rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
[root@server1 /]# yum -y install jenkins
<中略>
Complete!
[root@server1 /]#
  • Jenkinsサービス設定 再起動後も自動起動させます
[root@server1 /]# systemctl start jenkins
[root@server1 /]# chkconfig jenkins on
  • Jenkins起動
     ブラウザから下記にアクセス
http://<PublicIP>:8080

■Jenkinsセットアップ

1)ブラウザに記載しているパスを確認しアンロックする。

[root@server1 /]# cat /var/lib/jenkins/secrets/initialAdminPassword
XXXXXXXXXXXXXXXXXXXXXX (内容コピー)
[root@server1 /]# 

01.png

2) [Install suggested plugin]を選択
02.png

3)Plugin インストール中
03.png

4)ユーザ名等入力

項目 設定値
ユーザ名 Adomin(間違えた(笑))
パスワード 内緒
本名 hogehoge
メール hogehoge@hogehoge

04.png

5) Save and Finishで次へ
05.png

6)新規ジョブを作成
06.png

Jenkinsのインストールは出来ました。次はAnsibleジョブを作ってJenkinsから実行します!!!


■Job実行事前作業

通常JenkinsではJenkinsユーザをもって実行しますがjenkinsではAnsibleの実行が出来ません。そのためAnsibleもJenkinsも実行できるrootに実行ユーザを変更します。
(rootじゃなくても実行できればOK!!)

  • jenkins実行ユーザ変更
[root@server1 /]# vi /etc/sysconfig/jenkins
/etc/sysconfig/jenkins
(def)JENKINS_USER="jenkins"
(edi)JENKINS_USER="root"
  • Jenkinsのディレクトリの所有者を変更
#変更前確認
[root@server1 /]# ls -la /var/lib/ |grep jenkins
drwxr-xr-x. 13 jenkins jenkins 4096 Nov 23 04:26 jenkins
[root@server1 /]# ls -la /var/log/ | grep jenkins
drwxr-x---.  2 jenkins jenkins     25 Nov 23 04:05 jenkins
[root@server1 /]# ls -la /var/cache | grep jenkins
drwxr-x---.  3 jenkins jenkins   17 Nov 23 04:05 jenkins
#オーナー変更
[root@server1 /]# chown -R root: /var/lib/jenkins /var/log/jenkins /var/cache/jenkins
#変更後確認
[root@server1 /]# ls -la /var/log/ | grep jenkins
drwxr-x---.  2 root   root       25 Nov 23 04:05 jenkins
[root@server1 /]# ls -la /var/lib/ |grep jenkins
drwxr-xr-x. 13 root    root    4096 Nov 23 04:26 jenkins
[root@server1 /]# ls -la /var/cache | grep jenkins
drwxr-x---.  3 root root   17 Nov 23 04:05 jenkins
[root@server1 /]#

これでrootから実行できる環境が整いました。次はいよいよジョブを作ってAnsibleを実行します


  • ジョブの登録と実行
    JenkinsWebページからAnsibleを実行するジョブを作成します

1)jenkins(http://:8080)へアクセスしログイン
ユーザー名:adomin
パスワード:
07.png

2)新規ジョブ作成

「新規ジョブの作成」を選択

06.png

3)下記設定後「OK」をクリックしてジョブを作成

Enter an item name     : ジョブの名前
フリースタイル・プロジェクト : 選択

9.png

4)ビルド内容の作成

  • ビルド手順の追加
  • シェルの実行 10.png

5)シェルスクリプトの作成
下記コマンドを記載後「保存」する

whoami
ansible-playbook -i /playbook/hosts /playbook/sitelin.yml
ansible-playbook -i /playbook/hosts /playbook/sitewin.yml

11.png

6) 作成したプロジェクトを実行する

「ビルドの実行」を選択

12.png

7)実行結果を確認

「ビルド履歴」を確認
青 ・・・ 成功
赤 ・・・ 失敗

15.png

8)詳細を確認する

「ビルド履歴」より表示されているビルドを選択
「コンソール出力」を選択
成功例(#1)

16.png

Started by user hogehoge
Building in workspace /var/lib/jenkins/workspace/test_Ansible
[test_Ansible] $ /bin/sh -xe /tmp/hudson1412063715726393661.sh
+ whoami
root
+ ansible-playbook -i /playbook/hosts /playbook/sitelin.yml

PLAY [Linux Playbook] **********************************************************

TASK [setup] *******************************************************************
ok: [client-lin]

TASK [linrole : For Linux] *****************************************************
ok: [client-lin]

PLAY RECAP *********************************************************************
client-lin                 : ok=2    changed=0    unreachable=0    failed=0   

+ ansible-playbook -i /playbook/hosts /playbook/sitewin.yml

PLAY [Windows Playbook] ********************************************************

TASK [setup] *******************************************************************
ok: [ec2-35-164-42-228.us-west-2.compute.amazonaws.com]

TASK [winrole : For Windows] ***************************************************
ok: [ec2-35-164-42-228.us-west-2.compute.amazonaws.com]

PLAY RECAP *********************************************************************
ec2-35-164-42-228.us-west-2.compute.amazonaws.com : ok=2    changed=0    unreachable=0    failed=0   

Finished: SUCCESS
失敗例(#2)
Started by user hogehoge
Building in workspace /var/lib/jenkins/workspace/test_Ansible
[test_Ansible] $ /bin/sh -xe /tmp/hudson1612836430103786086.sh
+ b
/tmp/hudson1612836430103786086.sh: line 2: b: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

成功!!!


まとめ
1回目と2回目に分けてJenkinsからAnsibleを実行するをテーマに初投稿してみました。感想としては結構面白かった!!
今度はClient-linにGitLab乗っけてWindowクライアントからの操作を考えてます。気合が入ってたらプレイブックで環境作るのも面白そうです!!

12
10
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
12
10