Ansibleで作るGitlab+Redmine


Merry Christmas!!
Ansible Advent Calendar2013も、とうとう最終日です！
ご参加の皆様、ご覧の皆様、ありがとうございます！
[あうとー](http://dic.nicovideo.jp/a/%E9%A0%93%E6%8C%AB%E3%81%97%E3%81%9F%E6%8A%80%E8%A1%93%E7%B3%BB%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%81%AE%E4%B8%80%E8%A6%A7(2013%E5%B9%B4))に載らなくて良かったです(笑)

さて、これまで24件の記事は、Ansibleの内部まで踏み込んだ記事(プラグインや記法、Tips)が多くありました。
今回はタイトル通り、私個人がAnsibleで構築しているものを、ご紹介しようと思います。
決してクリスマスが忙しくて、適当になったわけではありません。。
こんなものを作れるんだー、くらいに見ていただければと思います。

## インストールするもの。 
+ Gitlab  
Ruby on Rails製のGitリポジトリです。Githubのクローン版です。
+ Redmine  
Ruby on Rails製のバグ管理ソフトウェアです。

Ansibleは2つに分割していますが、1台のサーバ上で動作します。

## Ansibleで作る理由
+ 1つ目は、あとで簡単に作り直せること。  
勤務先では約3年前からTrac+Subversionを構築していたのですが、変更に次ぐ変更で何をいつ修正加したのか分からない状況でした。
バックアップを取っていましたが、壊れた場合には悲惨な状況になっていたことでしょう。Ansibleであれば、簡単に構築できます(たぶん)。
+ 2つ目は、誰にでも配れること。  
ChefやPuppetも同様ですが、テキストベースなのでバージョン管理・配布しやすいです。加えて、AnsibleはChefなどと比較してもわかりやすいYAMLで書けることはメリットだと思います。勤務先の全員がLinuxやRubyが分かる訳ではなかったりするので、少しでも取っ付き易いほうが良いです。(自部署以外に展開しようとして躓くことが。。)

# Gitlab 手順
ソースコード
---
https://github.com/volanja/ansible-Gitlab

ソフトウェア構成図
-----
![ansible-Gitlab.png](https://qiita-image-store.s3.amazonaws.com/0/29901/0f5f85bc-30af-05e5-97fa-4985487b0f33.png "ansible-Gitlab.png")


対象環境
-----
CentOS 6.4 64bit   (virtualbox + vagrantで構築)

実行環境
-----
	$ ansible --version  
	ansible 1.4.1 (1.4.1 7bf799af65) last updated 2013/11/30 14:23:28 (GMT +900)

	$ ruby -v  
	ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin11.4.2]

	$ gem list |grep serverspec  
	serverspec (0.13.2)

インストールするもの
------
+ ruby 2.0.0p353  (/home/git配下にrbenvでインストール)
+ git 1.7.10+
+ redis 2.0+
+ MariaDB 5.5.33a
+ Gitlab 6.3
+ Nginx

実行手順
----
1 . hostsファイルの設定変更  
clone後、hostsファイル内の対象サーバのIPアドレスを変更してください。

2 . SSH公開鍵認証の準備  
対象サーバにSSH公開鍵認証方式でログイン出来るように準備してください。

3 . ansible playbook 実行  
対象サーバのドメイン名を次のファイルに定義(デフォルトはcadence)してください。  
Windows/Linuxからはhostsファイルの書き換えにより、アクセスするようにします。

```
+----------------------------------------------------------------------------+
|             File             |          Key          |        Value        |
+----------------------------------------------------------------------------+
| roles/gitlab/vars/main.yml   | server_name           | cadence             |
| roles/hostname/vars/main.yml | server_name           | cadence             |
+----------------------------------------------------------------------------+
```

次のコマンドで実行します。  

```
$ ansible-playbook setup.yml -i hosts  
```

4 . テストの準備  
Serverspecで行います。  
spec/properties.ymlのIPアドレス、秘密鍵を修正してください。

```spec/spec.yml
root:
  roles:
    - Packages
    - gitlab
  ip: 192.168.0.108
  private_key: ~/.ssh/id_rsa
```

5 . テストの実行  
次のコマンドで実行します。  

```
$ rake serverspec       # Run serverspec to all hosts
```

6 . Gitlabへのアクセス  
あらかじめアクセスするPCのhostsファイルを次のように変更しておきます。  
Windows... C:/Windows/System32/drivers/etc/hosts  
Linux,Mac... /etc/hosts

```
192.168.0.108 gitlab.cadence
```

次のURLでアクセスできます。  

```
http://gitlab.cadence/  
ID...admin@local.host  
パスワード...5iveL!fe
```

# Redmine 手順
ソースコード
---
https://github.com/volanja/ansible-Redmine

ソフトウェア構成図
-----
![ansible-Redmine.png](https://qiita-image-store.s3.amazonaws.com/0/29901/e6f9814e-7496-9912-28af-47db07b6a330.png "ansible-Redmine.png")

対象環境
-----
CentOS 6.4 64bit   (virtualbox + vagrantで構築)

実行環境
-----
	$ ansible --version  
	ansible 1.4.1 (1.4.1 7bf799af65) last updated 2013/11/30 14:23:28 (GMT +900)

	$ ruby -v  
	ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin11.4.2]

	$ gem list |grep serverspec  
	serverspec (0.13.2)

インストールするもの
------
+ ruby 2.0.0p353 (/home/redmine配下にrbenvでインストール)
+ MariaDB 5.5.33a
+ Redmine 2.4.1
+ Nginx

実行手順
----
1 . hostsファイルの設定変更  
clone後、hostsファイル内の対象サーバのIPアドレスを変更してください。

2 . SSH公開鍵認証の準備  
対象サーバにSSH公開鍵認証方式でログイン出来るように準備してください。

3 . ansible playbook 実行  
対象サーバのドメイン名を次のファイルに定義(デフォルトはcadence)してください。  
Windows/Linuxからはhostsファイルの書き換えにより、アクセスするようにします。  

```
+----------------------------------------------------------------------------+
|             File             |          Key          |        Value        |
+----------------------------------------------------------------------------+
| roles/redmine/vars/main.yml  | server_name           | cadence             |
| roles/hostname/vars/main.yml | server_name           | cadence             |
+----------------------------------------------------------------------------+
```
次のコマンドで実行します。  

```
$ ansible-playbook setup.yml -i hosts  
```

4 . テストの準備  

Serverspecで行います。  
spec/properties.ymlのIPアドレス、秘密鍵を修正してください。  

```spec/spec.yml
root:
  roles:
    - Packages
    - redmine
  ip: 192.168.0.108
  private_key: ~/.ssh/id_rsa
```

5 . テストの実行  
次のコマンドで実行します。  

```
$ rake serverspec       # Run serverspec to all hosts
```

6 . Redmineへのアクセス  
あらかじめアクセスするPCのhostsファイルを次のように変更しておきます。  
Windows... C:/Windows/System32/drivers/etc/hosts  
Linux,Mac... /etc/hosts

```
192.168.0.108 redmine.cadence
```
次のURLでアクセスできます。  

```
http://redmine.cadence/  
ID...admin
パスワード...admin
```

以上になります。なにかご指摘あればコメントorプルリクエスト頂けると嬉しいです。  
マシンを再起動すると、Gitlabが起動していないことがあったりするので、そこは後で修正します。。