SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
インターネット非接続環境で、
Redmine & Subversion の
インストール&設定を、
Ansible を使って自動化してみた
第8回 redmine.tokyo 勉強会
2015-05-16 (土)
伊藤 喜一 (@glad2121)
自己紹介
• ハンドルネーム:
GLAD!! (@glad2121)
• 氏名:
伊藤 喜一(いとう よしいち)
• 所属:
株式会社オージス総研
エンタープライズオープンソースセンター (EOSC)
• 主な仕事:
▫ アーキテクトとして案件の立ち上げと支援
▫ OSS を活用したビジネスの拡大
2
1年前
• とあるお客様(銀行)で、開発ツール(Redmine、
Subversion、Jenkins 等)の導入・標準化支援をする
ことに
3
インストールをどうしようか・・・
• ALMinium
▫ https://github.com/alminium/alminium
▫ Redmine、Subversion、Jenkins、Backlogs プラグイン
等のインストールが簡単にできる
▫ インターネット接続が必要 ⇒ 断念
• Redmine JP のインストール手順
▫ http://redmine.jp/install/
▫ これもインターネット接続が必要 ⇒ 断念
• BitNami Redmine Stack
▫ https://bitnami.com/stack/redmine
▫ スタンドアローンで実行可能 ⇒ 採用
4
BitNami Redmine Stack の特徴
• プラットフォーム
▫ Linux、Windows、OS X、VMware、Clouds
• メリット
▫ Apache、MySQL、Ruby on Rails など必要なもの一式
がインストールされる
• デメリット、問題点
▫ Linux 版はサービスとして登録されない
▫ Subversion は svnserve (svn://) が起動しており、
Apache と連携 (http://) していない
▫ Windows 版 Apache 2.4 が mod_perl に対応しておら
ず、Redmine.pm によるアカウントの連携ができない
5
案件の方は・・・
• Redmine 採用プロジェクトの増加、社内標準化
• 商用構成管理ツールから Subversion への移行
• お客様の状況や要望に応えたカスタマイズ
• 独自プラグインも作成
⇒ サーバーを何台もセットアップするのは面倒
6
インストール作業を自動化したい
1. BitNami Redmine Stack のインストール
2. Redmine の初期設定
3. Redmine のパッチ(カスタマイズ)適用
4. Redmine のプラグインのインストール
Banner、SCM Creator、Issue Importer、
Wiki Extensions、独自プラグイン、etc.
5. Redmine のテーマのインストール
6. Subversion と Redmine のアカウント連携
7. LDAP 認証の設定
8. バックアップ、ログローテーションの設定
7
サーバー構成管理ツール?
• サーバーの構成情報を管理し、構築を自動化する
ツール
8
構成管理ツール
実行環境
管理対象サーバー
管理対象サーバー
管理対象サーバー
構成情報
- Redmine
- 初期設定
- Subversion
- etc.
Redmine
初期設定
Subversion
etc.
Ansible vs Chef
9
Ansible Chef
実行環境 Python 2.6 以上 Ruby
構成情報の
記述
YAML で記述
比較的シンプル
Playbook
DSL (Ruby) で記述
若干複雑
Cookbook、Recipe
管理対象
サーバー
エージェントの
インストール不要
Python が動作し、SSH
で接続できればOK
エージェントの
インストールが必要
chef-client
chef-solo
アーキテクチャ Push 型 Pull 型
共有リポジトリ Ansible Galaxy Supermarket
BitNami インストーラの自動起動
• installer --help でオプションが確認できる
▫ --mode unattended :非対話形式で実行
▫ --prefix <dir> :インストールディレクトリ
▫ --base_user<user> :管理者アカウント
▫ --redmine_language <lang> :使用言語
▫ --optionfile <file> :オプションをファイルに記述
• ところが・・・
肝心な --redmine_language ja が効かない
⇒ しかたがないので、非対話形式での実行を断念
10
expect
• 対話形式のプログラムを
自動実行するためのツール
• Tcl 言語を拡張
• expect <pattern> で
指定の出力を待って、
send <text> で
自動入力を行う
11
#!/usr/bin/expect --
set installer [lindex $argv 0]
set optionfile [lindex $argv 1]
spawn $installer --optionfile $optionfile
while {1} {
expect {
"Please choose an option ?4] :" {
send “9¥n“
}
"Press ?Enter] to continue:" {
send “¥n“
break
}
…
"]:" {
send "¥n“
}
}
}
4 (English)? と聞かれたら、
9 (Japanese) と訂正する
最後の質問で、
ループを抜ける
Ansible のインストール
1. yum downloadonly プラグインのインストール
# yum install yum-plugin-downloadonly
2. RPM ファイルのダウンロード
# yum install ansible --downloadonly --downloaddir=<directory>
3. createrepo のインストール
# yum install createrepo
4. ローカルリポジトリの作成
# createrepo <repodir>
5. ZIP に固めてサーバーへ
6. .repo ファイルの作成
eg. /etc/yum.repos.di/local.repo
7. Ansible のインストール
# yum install ansible –disablerepo=* --enablerepo=local
※ ローカルリポジトリが作成できれば、BitNami じゃなくてもいいんだけどね (^^;)
12
[local]
name=Local
baseurl=file:///var/local/repo
Ansible の基本概念
• Inventory ファイル
▫ 管理対象のサーバーを記述したファイル
▫ サーバーの用途、種類などでグルーピングが可能
• Playbook
▫ サーバーの構成情報、構築手順を記述したもの
▫ 1ファイルでも記述できるが、分割も可能
• Role
▫ サーバーが持つ役割ごとに、構成情報、構築手順を
まとめたもの、再利用の単位になる
13
Ansible の基本的なモジュール
• copy
▫ ファイルを管理対象サーバーへコピーする
• template
▫ テンプレートを元にファイルを作成する
• file
▫ ファイルの所有者、モードの変更、ディレクトリの作成など
• lineinfile / replace
▫ 管理対象サーバー上のファイルを編集する
• service
▫ サービスの起動、停止、再起動など
• command
▫ 任意のコマンドを実行する、パイプやリダイレクトは利用不可
• shell
▫ 任意のコマンドを実行する、パイプやリダイレクトも利用可能
14
Playbook の作成
15
---
- hosts: redmine-servers
sudo: yes
pre_tasks:
- debug: var=bitnami_home
roles:
- common
- expect
- bitnami
- redmine-settings
- redmine-patches
- redmine-plugins
- redmine-themes
- subversion
bitnami-redmine.yml
- roles/
- common/
- expect/
- bitnami/
- tasks/
- main.yml
- handlers/
- files/
- templates/
- redmine-settings/
…
- name: copy installer
copy: …
- name: install bitnami-redmine
command: …
Playbook の実行
• よく使うオプション
▫ -i <inventory> :インベントリファイルの指定
▫ -v :詳細表示
▫ -k :SSH パスワードの問合せ(プロンプトを表示)
▫ -K :sudo パスワードの問合せ(プロンプトを表示)
▫ -u <user> :リモートユーザーの指定
▫ --check :チェックモード(実際の変更は行われない)
• こんな感じで実行
ansible-playbook bitnami-redmine.yml –i hosts –vkK
• 何回実行しても OK(冪等性)
16
Tips: DB パスワードの取得
• database.yml に記載されているパスワードを取得する
• grep | sed ⇒ register ⇒ set_fact
• チェックモード (--check) でも実行&変更扱いしない
- name: get bitnami mysql password
shell: >-
grep -E '^¥s+password¥:¥s+¥w+' {{ redmine_home }}/config/database.yml |
sed -E 's/¥s+password¥:¥s+//'
always_run: yes
register: bitnami_mysql_password_result
changed_when: false
- name: set bitnami_mysql_password
set_fact:
bitnami_mysql_password: "{{ bitnami_mysql_password_result.stdout }}"
17
Tips: Redmine の設定変更
• Rake タスクで DB を変更(でよい?)
• $REDMINE_HOME/lib/tasks/redmine_setup.rake
を作成
• 普通に Redmine (Rails) の model が使用できる
• 設定の変更は Setting[key] = value で OK
• $REDMINE_HOME で以下のコマンドを実行
bundle exec rake redmine_setup RAILS_ENV=production
18
desc "Setup Redmine."
task :redmine_setup => :environment do
Setting[:repositories_encodings] = 'utf-8,cp932,euc-jp'
Setting[:user_format] = :lastname_firstname
…
end
まとめ
• Ansible はシンプル!
• インターネット非接続環境でも使える!
• 一度 Playbook を作成すれば、構成の変更やサーバー
の追加が簡単!
19
参考: Redmine 関連①
• Redmine
▫ http://www.redmine.org
• Redmine JP
▫ http://redmine.jp
• BitNami Redmine Stack
▫ https://bitnami.com/stack/redmine
• BitNami Redmine Documentation
▫ https://wiki.bitnami.com/Applications/BitNami_Redmine
• ALMinium
▫ https://github.com/alminium/alminium
• Redmine SCM Creator
▫ http://projects.andriylesyuk.com/project/redmine/scm-
creator
20
参考: Redmine 関連②
• BitNami Redmine 2.4.2 初期設定
▫ http://ossfan.net/setup/redmine-02.html
• Subversion の Apache 経由アクセスの設定
▫ http://sc1h5r.cswiki.jp/index.php?SubversionのApache経由
アクセスの設定
• 閉鎖環境で Redmine をインストールする
▫ https://github.com/glad2121/bitnami-redmine-ext/wiki
• Rails でバッチ処理を作成してみる(Rake のタスクの場合)
▫ http://d.hatena.ne.jp/yk5656/20140803/1407569988
21
参考: Ansible 関連
• Ansible
▫ http://www.ansible.com
• Ansible Documentation
▫ http://docs.ansible.com
• Ansible チュートリアル
▫ http://yteraoka.github.io/ansible-tutorial/
• 構成管理ツール Ansible を使ってみる
▫ http://dev.classmethod.jp/tool/ansible/
• Ansible マジック変数の一覧と内容
▫ http://qiita.com/h2suzuki/items/15609e0de4a2402803e9
• Ansible 入門
▫ http://dotinstall.com/lessons/basic_ansible
22
参考: その他
• Expect 入門
▫ http://nsa.kpu-m.ac.jp/gijutu/expect/doc-expect.php
• yum を使用して、パッケージをインストールせずにダウンロードだけ
を行う方法
▫ https://access.redhat.com/ja/node/395763
• yum リポジトリのセットアップ方法 (createrepo)
▫ http://darutk-oboegaki.blogspot.jp/2012/11/yum.html
• sed コマンド
▫ http://hydrocul.github.io/wiki/commands/sed.html
23
24
ご清聴どうもありがとうございました。
本日の発表の成果物はこちら
https://github.com/glad2121/bitnami-ansible

Más contenido relacionado

La actualidad más candente

Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Yoshinori Nakanishi
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Takashi Kanai
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!Tamie YAMAMOTO
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較Sugawara Genki
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0NIFTY Cloud
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 Hideo Takahashi
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-akira6592
 
Chef windows linux環境構築
Chef windows linux環境構築Chef windows linux環境構築
Chef windows linux環境構築靖 小田島
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Kazuto Ohara
 
クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0NIFTY Cloud
 
Ansibleを使ってみよう ~Windowsターゲット編~
Ansibleを使ってみよう~Windowsターゲット編~Ansibleを使ってみよう~Windowsターゲット編~
Ansibleを使ってみよう ~Windowsターゲット編~Takeshi Kuramochi
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-賢 秋穂
 
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方666oh666
 
Chefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについてChefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについてYuuki Namikawa
 
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割Takashi Honda
 
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)CLARA ONLINE, Inc.
 

La actualidad más candente (20)

Chef社内勉強会(第1回)
Chef社内勉強会(第1回)Chef社内勉強会(第1回)
Chef社内勉強会(第1回)
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!
 
ChefとPuppetの比較
ChefとPuppetの比較ChefとPuppetの比較
ChefとPuppetの比較
 
20130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.020130723 ecシステムにchefを導入してみた v1.0
20130723 ecシステムにchefを導入してみた v1.0
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
Ansible入門
Ansible入門Ansible入門
Ansible入門
 
Chef windows linux環境構築
Chef windows linux環境構築Chef windows linux環境構築
Chef windows linux環境構築
 
Chef概論とレシピ実践入門
Chef概論とレシピ実践入門Chef概論とレシピ実践入門
Chef概論とレシピ実践入門
 
クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0
 
Ansibleを使ってみよう ~Windowsターゲット編~
Ansibleを使ってみよう~Windowsターゲット編~Ansibleを使ってみよう~Windowsターゲット編~
Ansibleを使ってみよう ~Windowsターゲット編~
 
Apache Module
Apache ModuleApache Module
Apache Module
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
 
誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方誰でも出来るローカル開発環境の作り方
誰でも出来るローカル開発環境の作り方
 
Chefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについてChefを利用した運用省力化とDevOpsの取り組みについて
Chefを利用した運用省力化とDevOpsの取り組みについて
 
Ansible softlayer
Ansible softlayer Ansible softlayer
Ansible softlayer
 
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割
 
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
 

Destacado

Redmine 300 310_new_feature
Redmine 300 310_new_featureRedmine 300 310_new_feature
Redmine 300 310_new_featureJun Naitoh
 
チケットの棚卸し ウチではこうしてます
チケットの棚卸し ウチではこうしてますチケットの棚卸し ウチではこうしてます
チケットの棚卸し ウチではこうしてます靖宏 田中
 
『うわ、Redmineバージョンが上がった!へなちょこプラグイン開発者はどうするか?』
『うわ、Redmineバージョンが上がった!へなちょこプラグイン開発者はどうするか?』『うわ、Redmineバージョンが上がった!へなちょこプラグイン開発者はどうするか?』
『うわ、Redmineバージョンが上がった!へなちょこプラグイン開発者はどうするか?』akiko_pusu
 
情報システム部門のタスク管理~ITS応答性能の調査結果と対策 編~ #RxTstudy #6 #Redmine
情報システム部門のタスク管理~ITS応答性能の調査結果と対策 編~ #RxTstudy #6 #Redmine情報システム部門のタスク管理~ITS応答性能の調査結果と対策 編~ #RxTstudy #6 #Redmine
情報システム部門のタスク管理~ITS応答性能の調査結果と対策 編~ #RxTstudy #6 #RedmineKuniharu(州晴) AKAHANE(赤羽根)
 
Redmineによるwebサポート窓口の実装と運用
Redmineによるwebサポート窓口の実装と運用Redmineによるwebサポート窓口の実装と運用
Redmineによるwebサポート窓口の実装と運用Go Maeda
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Go Maeda
 
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Kuniharu(州晴) AKAHANE(赤羽根)
 

Destacado (7)

Redmine 300 310_new_feature
Redmine 300 310_new_featureRedmine 300 310_new_feature
Redmine 300 310_new_feature
 
チケットの棚卸し ウチではこうしてます
チケットの棚卸し ウチではこうしてますチケットの棚卸し ウチではこうしてます
チケットの棚卸し ウチではこうしてます
 
『うわ、Redmineバージョンが上がった!へなちょこプラグイン開発者はどうするか?』
『うわ、Redmineバージョンが上がった!へなちょこプラグイン開発者はどうするか?』『うわ、Redmineバージョンが上がった!へなちょこプラグイン開発者はどうするか?』
『うわ、Redmineバージョンが上がった!へなちょこプラグイン開発者はどうするか?』
 
情報システム部門のタスク管理~ITS応答性能の調査結果と対策 編~ #RxTstudy #6 #Redmine
情報システム部門のタスク管理~ITS応答性能の調査結果と対策 編~ #RxTstudy #6 #Redmine情報システム部門のタスク管理~ITS応答性能の調査結果と対策 編~ #RxTstudy #6 #Redmine
情報システム部門のタスク管理~ITS応答性能の調査結果と対策 編~ #RxTstudy #6 #Redmine
 
Redmineによるwebサポート窓口の実装と運用
Redmineによるwebサポート窓口の実装と運用Redmineによるwebサポート窓口の実装と運用
Redmineによるwebサポート窓口の実装と運用
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定
 
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
 

Similar a Redmine Ansible

ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門Mahito Ogura
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #EShuji Watanabe
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalkBIGLOBE Tech Talk
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門Hori Tasuku
 
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようVM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようMasayuki Ozawa
 
Softlayerを申込んでみた参考資料 140730
Softlayerを申込んでみた参考資料 140730Softlayerを申込んでみた参考資料 140730
Softlayerを申込んでみた参考資料 140730YoshiyukiKonno
 
Active directory の移行 (2011年6月の資料)
Active directory の移行 (2011年6月の資料)Active directory の移行 (2011年6月の資料)
Active directory の移行 (2011年6月の資料)wintechq
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介gree_tech
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていくRyo Mitoma
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
Devとopsをつなぐchat ops
Devとopsをつなぐchat opsDevとopsをつなぐchat ops
Devとopsをつなぐchat opsikikko
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発Yoshitaka Seo
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜Naotoshi Seo
 
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!IIJ
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理Oshitari_kochi
 
プロのためのNode-RED再入門
プロのためのNode-RED再入門プロのためのNode-RED再入門
プロのためのNode-RED再入門Makoto SAKAI
 

Similar a Redmine Ansible (20)

ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門ChefユーザのためのAnsible入門
ChefユーザのためのAnsible入門
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #Eプロビジョニングの今 ーフルマネージド・サービスを目指してー  #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門アプリ屋もDockerをドカドカ使おう ~ Docker入門
アプリ屋もDockerをドカドカ使おう ~ Docker入門
 
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようVM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみよう
 
Softlayerを申込んでみた参考資料 140730
Softlayerを申込んでみた参考資料 140730Softlayerを申込んでみた参考資料 140730
Softlayerを申込んでみた参考資料 140730
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
Active directory の移行 (2011年6月の資料)
Active directory の移行 (2011年6月の資料)Active directory の移行 (2011年6月の資料)
Active directory の移行 (2011年6月の資料)
 
Fluentd casual
Fluentd casualFluentd casual
Fluentd casual
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Devとopsをつなぐchat ops
Devとopsをつなぐchat opsDevとopsをつなぐchat ops
Devとopsをつなぐchat ops
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
 
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
 
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
SQL Beginners Day #1 - SQL Server および Azure SQL のインストールと管理
 
プロのためのNode-RED再入門
プロのためのNode-RED再入門プロのためのNode-RED再入門
プロのためのNode-RED再入門
 

Redmine Ansible

  • 1. インターネット非接続環境で、 Redmine & Subversion の インストール&設定を、 Ansible を使って自動化してみた 第8回 redmine.tokyo 勉強会 2015-05-16 (土) 伊藤 喜一 (@glad2121)
  • 2. 自己紹介 • ハンドルネーム: GLAD!! (@glad2121) • 氏名: 伊藤 喜一(いとう よしいち) • 所属: 株式会社オージス総研 エンタープライズオープンソースセンター (EOSC) • 主な仕事: ▫ アーキテクトとして案件の立ち上げと支援 ▫ OSS を活用したビジネスの拡大 2
  • 4. インストールをどうしようか・・・ • ALMinium ▫ https://github.com/alminium/alminium ▫ Redmine、Subversion、Jenkins、Backlogs プラグイン 等のインストールが簡単にできる ▫ インターネット接続が必要 ⇒ 断念 • Redmine JP のインストール手順 ▫ http://redmine.jp/install/ ▫ これもインターネット接続が必要 ⇒ 断念 • BitNami Redmine Stack ▫ https://bitnami.com/stack/redmine ▫ スタンドアローンで実行可能 ⇒ 採用 4
  • 5. BitNami Redmine Stack の特徴 • プラットフォーム ▫ Linux、Windows、OS X、VMware、Clouds • メリット ▫ Apache、MySQL、Ruby on Rails など必要なもの一式 がインストールされる • デメリット、問題点 ▫ Linux 版はサービスとして登録されない ▫ Subversion は svnserve (svn://) が起動しており、 Apache と連携 (http://) していない ▫ Windows 版 Apache 2.4 が mod_perl に対応しておら ず、Redmine.pm によるアカウントの連携ができない 5
  • 6. 案件の方は・・・ • Redmine 採用プロジェクトの増加、社内標準化 • 商用構成管理ツールから Subversion への移行 • お客様の状況や要望に応えたカスタマイズ • 独自プラグインも作成 ⇒ サーバーを何台もセットアップするのは面倒 6
  • 7. インストール作業を自動化したい 1. BitNami Redmine Stack のインストール 2. Redmine の初期設定 3. Redmine のパッチ(カスタマイズ)適用 4. Redmine のプラグインのインストール Banner、SCM Creator、Issue Importer、 Wiki Extensions、独自プラグイン、etc. 5. Redmine のテーマのインストール 6. Subversion と Redmine のアカウント連携 7. LDAP 認証の設定 8. バックアップ、ログローテーションの設定 7
  • 9. Ansible vs Chef 9 Ansible Chef 実行環境 Python 2.6 以上 Ruby 構成情報の 記述 YAML で記述 比較的シンプル Playbook DSL (Ruby) で記述 若干複雑 Cookbook、Recipe 管理対象 サーバー エージェントの インストール不要 Python が動作し、SSH で接続できればOK エージェントの インストールが必要 chef-client chef-solo アーキテクチャ Push 型 Pull 型 共有リポジトリ Ansible Galaxy Supermarket
  • 10. BitNami インストーラの自動起動 • installer --help でオプションが確認できる ▫ --mode unattended :非対話形式で実行 ▫ --prefix <dir> :インストールディレクトリ ▫ --base_user<user> :管理者アカウント ▫ --redmine_language <lang> :使用言語 ▫ --optionfile <file> :オプションをファイルに記述 • ところが・・・ 肝心な --redmine_language ja が効かない ⇒ しかたがないので、非対話形式での実行を断念 10
  • 11. expect • 対話形式のプログラムを 自動実行するためのツール • Tcl 言語を拡張 • expect <pattern> で 指定の出力を待って、 send <text> で 自動入力を行う 11 #!/usr/bin/expect -- set installer [lindex $argv 0] set optionfile [lindex $argv 1] spawn $installer --optionfile $optionfile while {1} { expect { "Please choose an option ?4] :" { send “9¥n“ } "Press ?Enter] to continue:" { send “¥n“ break } … "]:" { send "¥n“ } } } 4 (English)? と聞かれたら、 9 (Japanese) と訂正する 最後の質問で、 ループを抜ける
  • 12. Ansible のインストール 1. yum downloadonly プラグインのインストール # yum install yum-plugin-downloadonly 2. RPM ファイルのダウンロード # yum install ansible --downloadonly --downloaddir=<directory> 3. createrepo のインストール # yum install createrepo 4. ローカルリポジトリの作成 # createrepo <repodir> 5. ZIP に固めてサーバーへ 6. .repo ファイルの作成 eg. /etc/yum.repos.di/local.repo 7. Ansible のインストール # yum install ansible –disablerepo=* --enablerepo=local ※ ローカルリポジトリが作成できれば、BitNami じゃなくてもいいんだけどね (^^;) 12 [local] name=Local baseurl=file:///var/local/repo
  • 13. Ansible の基本概念 • Inventory ファイル ▫ 管理対象のサーバーを記述したファイル ▫ サーバーの用途、種類などでグルーピングが可能 • Playbook ▫ サーバーの構成情報、構築手順を記述したもの ▫ 1ファイルでも記述できるが、分割も可能 • Role ▫ サーバーが持つ役割ごとに、構成情報、構築手順を まとめたもの、再利用の単位になる 13
  • 14. Ansible の基本的なモジュール • copy ▫ ファイルを管理対象サーバーへコピーする • template ▫ テンプレートを元にファイルを作成する • file ▫ ファイルの所有者、モードの変更、ディレクトリの作成など • lineinfile / replace ▫ 管理対象サーバー上のファイルを編集する • service ▫ サービスの起動、停止、再起動など • command ▫ 任意のコマンドを実行する、パイプやリダイレクトは利用不可 • shell ▫ 任意のコマンドを実行する、パイプやリダイレクトも利用可能 14
  • 15. Playbook の作成 15 --- - hosts: redmine-servers sudo: yes pre_tasks: - debug: var=bitnami_home roles: - common - expect - bitnami - redmine-settings - redmine-patches - redmine-plugins - redmine-themes - subversion bitnami-redmine.yml - roles/ - common/ - expect/ - bitnami/ - tasks/ - main.yml - handlers/ - files/ - templates/ - redmine-settings/ … - name: copy installer copy: … - name: install bitnami-redmine command: …
  • 16. Playbook の実行 • よく使うオプション ▫ -i <inventory> :インベントリファイルの指定 ▫ -v :詳細表示 ▫ -k :SSH パスワードの問合せ(プロンプトを表示) ▫ -K :sudo パスワードの問合せ(プロンプトを表示) ▫ -u <user> :リモートユーザーの指定 ▫ --check :チェックモード(実際の変更は行われない) • こんな感じで実行 ansible-playbook bitnami-redmine.yml –i hosts –vkK • 何回実行しても OK(冪等性) 16
  • 17. Tips: DB パスワードの取得 • database.yml に記載されているパスワードを取得する • grep | sed ⇒ register ⇒ set_fact • チェックモード (--check) でも実行&変更扱いしない - name: get bitnami mysql password shell: >- grep -E '^¥s+password¥:¥s+¥w+' {{ redmine_home }}/config/database.yml | sed -E 's/¥s+password¥:¥s+//' always_run: yes register: bitnami_mysql_password_result changed_when: false - name: set bitnami_mysql_password set_fact: bitnami_mysql_password: "{{ bitnami_mysql_password_result.stdout }}" 17
  • 18. Tips: Redmine の設定変更 • Rake タスクで DB を変更(でよい?) • $REDMINE_HOME/lib/tasks/redmine_setup.rake を作成 • 普通に Redmine (Rails) の model が使用できる • 設定の変更は Setting[key] = value で OK • $REDMINE_HOME で以下のコマンドを実行 bundle exec rake redmine_setup RAILS_ENV=production 18 desc "Setup Redmine." task :redmine_setup => :environment do Setting[:repositories_encodings] = 'utf-8,cp932,euc-jp' Setting[:user_format] = :lastname_firstname … end
  • 19. まとめ • Ansible はシンプル! • インターネット非接続環境でも使える! • 一度 Playbook を作成すれば、構成の変更やサーバー の追加が簡単! 19
  • 20. 参考: Redmine 関連① • Redmine ▫ http://www.redmine.org • Redmine JP ▫ http://redmine.jp • BitNami Redmine Stack ▫ https://bitnami.com/stack/redmine • BitNami Redmine Documentation ▫ https://wiki.bitnami.com/Applications/BitNami_Redmine • ALMinium ▫ https://github.com/alminium/alminium • Redmine SCM Creator ▫ http://projects.andriylesyuk.com/project/redmine/scm- creator 20
  • 21. 参考: Redmine 関連② • BitNami Redmine 2.4.2 初期設定 ▫ http://ossfan.net/setup/redmine-02.html • Subversion の Apache 経由アクセスの設定 ▫ http://sc1h5r.cswiki.jp/index.php?SubversionのApache経由 アクセスの設定 • 閉鎖環境で Redmine をインストールする ▫ https://github.com/glad2121/bitnami-redmine-ext/wiki • Rails でバッチ処理を作成してみる(Rake のタスクの場合) ▫ http://d.hatena.ne.jp/yk5656/20140803/1407569988 21
  • 22. 参考: Ansible 関連 • Ansible ▫ http://www.ansible.com • Ansible Documentation ▫ http://docs.ansible.com • Ansible チュートリアル ▫ http://yteraoka.github.io/ansible-tutorial/ • 構成管理ツール Ansible を使ってみる ▫ http://dev.classmethod.jp/tool/ansible/ • Ansible マジック変数の一覧と内容 ▫ http://qiita.com/h2suzuki/items/15609e0de4a2402803e9 • Ansible 入門 ▫ http://dotinstall.com/lessons/basic_ansible 22
  • 23. 参考: その他 • Expect 入門 ▫ http://nsa.kpu-m.ac.jp/gijutu/expect/doc-expect.php • yum を使用して、パッケージをインストールせずにダウンロードだけ を行う方法 ▫ https://access.redhat.com/ja/node/395763 • yum リポジトリのセットアップ方法 (createrepo) ▫ http://darutk-oboegaki.blogspot.jp/2012/11/yum.html • sed コマンド ▫ http://hydrocul.github.io/wiki/commands/sed.html 23