===============
GitLabはGitHubのクローンでSCM(Software Configuration Management)に利用できます。
Installationは丁寧に記載されているので、これをベースにChefのCookbookを作りました。
GitLabは Ruby on Rails で開発されておりPumaやSidekiqなどの素敵なミドルウェアが利用されています。
また、 Git flow などでブランチを運用するので Network が見やすいのもポイントです。
これで簡単にVirtualBox、Amazon EC2、さくらのVPS、Z Cloud(Joyent Cloud)などにインストールできます。
環境
Vagrant: 1.3.1
Mac: OS X Lion
(Windowsはこちらを参考にして下さい。)
VirtualBox
localhostでアスセスするGitLabは何かと使い勝手があります。
(当たり前ですがネットワークに接続しなくてもGitLabが使えます。)
Gem & Plugin
まずberkshelfとvagrant-berkshelf,vagrant-omnibusをインストールします。
$ gem install berkshelf
$ vagrant plugin install vagrant-berkshelf
$ vagrant plugin install vagrant-omnibus
Download & Edit
後はGitLabのCookbookをダウンロードして、vagrant upコマンドを実施するだけで
GitLabがインストールされます。(簡単ですね!)
$ git clone git://github.com/ogom/cookbook-gitlab ./gitlab
$ cd ./gitlab/
$ vagrant up
http://localhost:8080/にアクセスするとGitLabが表示されます。
UserがogomでProjectがtokyoのGitのURLはgit@localhost:ogom/tokyo.gitです。
Administrator
- Username: admin@local.host
- Password: 5iveL!fe
Amazon EC2
パブリックにGitLabが欲しいときはAWSが簡単です。
Gem & Plugin
berkshelfとvagrant-berkshelf,vagrant-omnibusをインストールします。
vagrant-awsをインストールしてdummyのboxを追加します。
$ gem install berkshelf
$ vagrant plugin install vagrant-berkshelf
$ vagrant plugin install vagrant-omnibus
$ vagrant plugin install vagrant-aws
$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
Download & Edit
GitLabのCookbookをダウンロードして、/example/Vagrantfile_awsをVagrantfileにコピーして編集します。
アクセスキー(access_key_id ,secret_access_key )や秘密鍵(private_key_path)、公開鍵(keypair_name)を変更して下さい。
SSHとHTTPを許可するセキュリティグループはAWSで設定します。(/example/Vagrantfile_awsではvagrantで登録しています。)

vagrant upコマンドに--provider=awsのオプションを追加して実施します。
$ git clone git://github.com/ogom/cookbook-gitlab ./gitlab
$ cd ./gitlab/
$ cp ./example/Vagrantfile_aws ./Vagrantfile
$ vagrant up --provider=aws
DNS
EC2はPublic DNSを設定するのでドメインでGitLabにアクセスできます。
Vagrantfileを編集してvagrant provisionコマンドでインストールを再開します。
('vagrant ssh-config'コマンドでドメインを参照できます。)
$ vagrant ssh-config | awk '/HostName/ {print $2}'
$ editor ./Vagrantfile
$ vagrant provision
長いですがgit@ec2-50-16-8-211.compute-1.amazonaws.com:ogom/girls.gitのURLでgit cloneできます。

インスタンスが不要になればvagrant destroyコマンドでTerminateしてくれます。
Knife Solo
さくらのVPS や Z Cloud はKnife SoloでGitLabをインストールします。
もちろんEC2にもインストールできます。(この例は先ほどのインスタンス)
Gem
berkshelfとknife-soloをインストールします。
$ gem install berkshelf
$ gem install knife-solo
Download
ChefのRepositoryを作りGitLabのCookbookなどをダウンロードします。
$ knife configure
$ knife solo init ./chef-repo
$ cd ./chef-repo/
$ echo 'cookbook "gitlab", github: "ogom/cookbook-gitlab"' >> ./Berksfile
$ berks install --path ./cookbooks
Edit
knife solo prepareコマンドでChefをインンストールします。
knife solo cookコマンドでGitLabをインンストールします。
(nodeのjsonはこちらを参考にして下さい。)
$ knife solo prepare ubuntu@ec2-50-16-8-211.compute-1.amazonaws.com -i ~/.ssh/vagrant_aws.pem
$ editor ./nodes/ec2-50-16-8-211.compute-1.amazonaws.com.json
$ knife solo cook ubuntu@ec2-50-16-8-211.compute-1.amazonaws.com -i ~/.ssh/vagrant_aws.pem --no-chef-check
HTTPのhttp://ec2-50-16-8-211.compute-1.amazonaws.com/ogom/style.gitのURLでもgit cloneできます。
(さくらのVPSは1G、Z CloudはSmall 1GBでインストールを確認しました。)
Tips
VagrantのPluginはGemなのでvagrant-awsのようにJoyent(SDC)を操作する
vagrant-sdcプラグインを作るならsmartdcが利用できそうです。