複数環境のRedmine/RedMicaをアップデートする
2019/12/20 祝!Redmine4.1リリース!
Redmine Advent Calendar 2019の 24日用の記事です。
Redmineサーバの管理者のお役に立てれば幸いです。
※4.0→4.1へのアップデートに本記事では対応できませんので手動でお願いいたします。
背景・意図
AWS/社内/ローカルと全部で10台以上にRedmineを導入しています。
とにかく、Redmineもプラグインも最新リビジョンにしたい派なのですが、すべてを最新化するのはなかなかの手間。
ここまで増える前は各サーバにメンテナンス用のシェルスクリプトを置いていましたが、
- スクリプト改修時に全台に配置し直すのが面倒
- 環境によってRedmineのパスや導入プラグインが違って、微妙にシェルスクリプトを変更するのが面倒
- 複数のRedmineを1サーバに配置してる環境で実行する際にパスの書き換えで事故ったことも…
ということで、
- 環境依存の値を変数定義
- 変数を埋め込んだスクリプトを転送し、リモートで実行
という運用にするためのplaybookを作成しました。1
※シェルスクリプトを使用しないパターンも作成しました。
https://github.com/ryouma-nagare/redmine-update2.git
導入
※git/ansibleがインストール済みであることを前提とします。
1.リポジトリ取得
git clone https://github.com/ryouma-nagare/redmine-update.git
redmine-update/
|-- README.md
|-- ansible.cfg
|-- host_vars
| |-- host1
| `-- host2
|-- inventory
| `-- hosts
|-- keys
| `-- your_key_file
|-- redmine-update.yml
`-- roles
`-- redmine-update
|-- handlers
| `-- main.yml
|-- tasks
| `-- main.yml
`-- templates
`-- upd_redmine.sh.j2
2.inventory/hosts の編集
以下の書式で編集します。
[グループ名]
ホスト名 ansible_host=ホスト情報 認証情報
今回はグループ aws
:鍵認証*2台、グループ intra
:パスワード認証*2台としました。
[aws]
redmine-aws-1 ansible_host=i-XXXXXXXXXXXXXXXXX ansible_user=ec2-user ansible_private_key_file=./keys/aws.pem
redmine-aws-2 ansible_host=i-YYYYYYYYYYYYYYYYY ansible_user=ec2-user ansible_private_key_file=./keys/aws.pem
[intra]
redmine-intra-1 ansible_host=AAA.BBB.CCC.DDD ansible_user=USER1 ansible_password=PASSWORD1
redmine-intra-2 ansible_host=EEE.FFF.GGG.HHH ansible_user=USER2 ansible_password=PASSWORD2
※AWSは、AWS Systems Manager Session Manager + Session Manager Pluginを使用して、ansible_host をインスタンスIDにしています。
3.keys/ に鍵ファイル配置
|-- keys
| `-- aws.pem
※パスワードログインのみの場合は不要です。
4.host_vars/ に変数定義ファイル配置
hosts
に記述したホスト名=ファイル名として、host1
、host2
からリネームコピーしてください。
|-- host_vars
| |-- redmine-aws-1
| |-- redmine-aws-2
| |-- redmine-intra-1
| `-- redmine-intra-2
※パラメータ等の詳細はREADME.mdでご確認ください。
実行
全サーバ対象
ansible-playbook -i ./inventory/hosts redmine-update.yml
グループ指定で実行
ansible-playbook -i ./inventory/hosts redmine-update.yml -l aws
ホスト指定で実行
ansible-playbook -i ./inventory/hosts redmine-update.yml -l redmine-aws-1
ansible-playbook -i ./inventory/hosts redmine-update.yml
ansible-playbook -i ./inventory/hosts redmine-update.yml -l aws
ansible-playbook -i ./inventory/hosts redmine-update.yml -l redmine-aws-1
基本的にはスクリプト実行後のサービス再起動がエラーにならなければ、アップデートに成功していると思いますが、不安なサーバはdebug_stdout
、debud_stderr
をtrue
にして、スクリプトの出力を確認してください。
実行例
debug_stdout: false
debug_stderr: true
※stderrが出力されていますがエラーが起きているわけではありません。
実際に使用する場合は、
- stdout/stderrを有効にした検証用のホストorグループに対して実行
- エラーにならなければ残りのグループごとに実行
とするのがよいかと思います。
明日はアドベントカレンダーの最終日
いよいよ、トリをつとめる Maeda Goさんです!
-
redmine ディレクトリのオーナー/グループを apache:apache としているため、シェルスクリプト内で
sudo su -
に頼らざるをえず、パスワード無しのsudo設定が必要となっています… ↩
Author And Source
この問題について(複数環境のRedmine/RedMicaをアップデートする), 我々は、より多くの情報をここで見つけました https://qiita.com/ryouma_nagare/items/98dc6f244e5dbb69d029著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .