LoginSignup
0
1

More than 3 years have passed since last update.

Jenkinsインストール(Ansible)

Last updated at Posted at 2019-10-24

はじめに

Ansibleを使用してJenkinsインストールを行う際の手順を記述します
サンプルアプリケーションはgithubになります

前提事項

Ansibleセットアップ手順はREADMEを参照ください
アプリケーション環境構築イメージはアプリケーション環境構築(Ansible)を参照ください

Jenkinsインストール(Ansible)

Jenkinsインストールを行うplaybookを定義します

ファイル 内容
変数ファイル Jenkinsのコンテキストパスとポート番号の変数を定義します
タスクファイル Jenkins関連のパッケージのインストールや設定変更等を定義します

セットアップで使用するパッケージインストール

Jenkinsのセットアップで使用するJDK等のパッケージをインストールします

- name: セットアップで使用するパッケージインストール
  apt:
    force_apt_get: yes
    state: latest
    name:
      - openjdk-8-jdk
      - git
      - wget

各項目の説明は以下のとおり

項目 内容
force_apt_get 警告を回避するためにapt-get使用を指定します
※詳細は#56832を参照ください
state latestを指定して最新バージョンをインストールします
name jdk等の必要なパッケージ名を指定します

apt-key追加

Jenkinsのapt-keyを追加します

- name: Jenkinsのapt-key追加
  apt_key:
    url: https://pkg.jenkins.io/debian/jenkins.io.key
    state: present

各項目の説明は以下のとおり

項目 内容
url apt-keyのURLを指定します
state presentを指定してapt-key追加済の場合はスキップします

ダウンロードリポジトリ追加

Jenkinsのダウンロードリポジトリ設定を追加します

- name: Jenkinsのダウンロードリポジトリ追加
  lineinfile:
    path: /etc/apt/sources.list.d/jenkins.list
    state: present
    owner: root
    group: root
    mode: '0644'
    create: yes
    line: 'deb http://pkg.jenkins.io/debian-stable binary/'

各項目の説明は以下のとおり

項目 内容
path ダウンロードリポジトリ設定を追加するファイルパスを指定します
state presentを指定してファイルパス追加済の場合はスキップします
owner ファイルオーナを指定します
group ファイルグループを指定します
mode ファイル権限を指定します
create yesを指定してファイルが存在しない場合はファイルを作成します
line ファイルに追加するURLパスの文字列を指定します

Jenkinsインストール

Jenkinsインストールを行います

- name: Jenkinsインストール
  apt:
    force_apt_get: yes
    update_cache: yes
    state: latest
    name:
      - jenkins

各項目の説明は以下のとおり

項目 内容
force_apt_get 警告を回避するためにapt-get使用を指定します
※詳細は#56832を参照ください
update_cache yesを指定してインストール可能なパッケージの一覧を更新します
state latestを指定して最新バージョンをインストールします
name jenkinsを指定します

Jenkins設定変更

ヒープサイズやコンテキストパス等の設定変更を行います

- name: ヒープサイズ追加
  lineinfile:
    dest: /etc/default/jenkins
    regexp: '^JAVA_ARGS'
    line: 'JAVA_ARGS="-Xmx2048m -XX:MaxPermSize=512m -Djava.awt.headless=true"'
    state: present

- name: コンテキストパス変更
  lineinfile:
    dest: /etc/default/jenkins
    regexp: '^PREFIX'
    line: "PREFIX=/{{ jenkins_context_path }}"
    state: present

- name: JAVA_HOME追加
  lineinfile:
    dest: /etc/default/jenkins
    line: "JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64"
    state: present

- name: 起動オプション変更
  lineinfile:
    dest: /etc/default/jenkins
    regexp: '^JENKINS_ARGS'
    line: 'JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --prefix=$PREFIX"'
    state: present

- name: sudo権限付与
  lineinfile:
    path: /etc/sudoers
    state: present
    line: 'jenkins ALL=(ALL) NOPASSWD: ALL'

各項目の説明は以下のとおり

項目 内容
dest 変更ファイルのパスを指定します
regexp 変更する文字列を指定します
line 挿入する文字列を指定します
state presentを指定して設定変更済の場合はスキップします

Jenkinsサービス再起動

Jenkinsサービスを再起動します

- name: Jenkinsサービス再起動
  service:
    name: jenkins
    enabled: yes
    state: restarted

各項目の説明は以下のとおり

項目 内容
name jenkinsを指定します
enabled yesを指定してサーバ起動時にサービスの起動を行います
state restartedを指定して再起動を行います

ApacheとJenkins連携の設定ファイル作成

ApacheとJenkinsで連携するためconfファイルを作成します
templateを使用することで変数ファイルで置換したファイルが作成されます

- name: ApacheとJenkins連携の設定ファイル作成
  template:
    src: "{{ role_path }}/files/jenkins.conf"
    dest: /etc/apache2/sites-available/jenkins.conf
    owner: root
    group: root
    mode: '0644'

- name: 設定ファイル有効化
  command: a2ensite jenkins

各項目の説明は以下のとおり

項目 内容
src playbook内の設定ファイルパスを指定します
dest 設定ファイルの格納先を指定します
owner ファイルオーナを指定します
group ファイルグループを指定します
mode ファイル権限を指定します
command a2ensiteコマンドを実行して設定ファイルを有効化します

Apacheモジュール追加

リバースプロキシを使用してApacheとJenkinsの連携を行うためApacheモジュールを追加します

- name: proxyモジュール追加
  apache2_module:
    state: present
    name: proxy

- name: proxy_httpモジュール追加
  apache2_module:
    state: present
    name: proxy_http

各項目の説明は以下のとおり

項目 内容
state presentを指定することでモジュールインストール済の場合はスキップします
name Apacheモジュール名を指定します

Apacheサービス再起動

Apacheサービスを再起動します

- name: Apacheサービス再起動
  service:
    name: apache2
    state: restarted

各項目の説明は以下のとおり

項目 内容
name apache2を指定します
state restartedを指定して再起動を行います

参考情報

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