#はじめに
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を指定して再起動を行います |
#参考情報