===============
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が利用できそうです。