Contenu connexe
Similaire à Redmine Ansible (20)
Redmine Ansible
- 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
- 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
- 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