GitLabのインストールは簡単になりました。そのGitLab Omnibusでも利用されている
Cookbookは簡単にSSLが設定されたGitLabをインストールすることができます。
Prepare
最初にマシン
とドメイン
と証明書
を準備します。
Machne
AWSやさくらのVPS等でパブリックにマシンを作ります。
(今回のOS
はUbuntu 12.04
を利用します。)
SSH
ローカルとリモートのSSHの設定をします。リモートのパスワード認証を禁止するには
sshd_config
のPasswordAuthentication
をno
に編集します。
$ ssh ubuntu@example.com mkdir .ssh
$ scp ~/.ssh/id_rsa.pub ubuntu@example.com:.ssh/authorized_keys
$ cat << __EOS__ >> ~/.ssh/config
Host example.com
User ubuntu
IdentityFile ~/.ssh/id_rsa
__EOS__
$ ssh example.com
ubuntu@example:~$ sudo editor /etc/ssh/sshd_config
ubuntu@example:~$ sudo service ssh restart
Domain
お名前.comやDoレジ等でドメインを取得します。
(DNS
の設定でSPFレコードを登録しましょう。)
Sender Policy Framework
nslookup
コマンドでTXTレコードを確認します。
$ nslookup -q=txt example.com
Server: 192.168.0.1
Address: 192.168.0.1#53
Non-authoritative answer:
example.com text = "v=spf1 ip4:93.184.216.119 -all"
Certificate
サイバートラストやBIZCERT等でサーバ証明書を取得します。
(今回は自己署名証明書を利用します。)
Self-signed certificate
openssl
コマンドで自己署名証明(オレオレ証明書)を作成します。
$ openssl genrsa -out server.key 2048
$ openssl req -new -key server.key -out server.csr
$ openssl rsa -in server.key -out server.key
$ openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
秘密鍵
と証明書
のファイルは後ほど利用します。
Files | 内容 | 補足 |
---|---|---|
server.key | RSA PRIVATE KEY | 秘密鍵 |
server.csr | CERTIFICATE REQUEST | 証明書署名要求 |
server.crt | CERTIFICATE | 証明書 |
Delivered
Chef Solo
次はChefのツールでGitLabをインストールします。
Download
インストールにはknife-soloとBerkshelfを利用します。
$ gem install berkshelf
$ gem install knife-solo
$ knife configure
$ knife solo init ./gitlab_chef
$ cd ./gitlab_chef/
$ curl -o Berksfile https://gitlab.com/gitlab-org/cookbook-gitlab/raw/master/Berksfile
$ sed -i.bak '/^metadata$/d' Berksfile
$ echo "cookbook 'gitlab', git: 'https://gitlab.com/gitlab-org/cookbook-gitlab.git'" >> Berksfile
$ berks vendor
Provision
ssl_certificate
とssl_certificate_key
に証明書
と秘密鍵
の内容を編集します。(改行は\n
です。)
knife solo
コマンドでGitLabがインストールされます。
$ cat << __EOS__ > ./nodes/example.com.json
{
"gitlab": {
"host": "example.com",
"port": "443",
"email_from": "gitlab@example.com",
"url": "https://git.example.com/",
"ssl_certificate": "-----BEGIN CERTIFICATE-----\nfoo\nbar\nbaz\n-----END CERTIFICATE-----",
"ssl_certificate_key": "-----BEGIN RSA PRIVATE KEY-----\nqux\nquux\ncorge\n-----END RSA PRIVATE KEY-----"
}
"run_list": [
"gitlab::default"
]
}
__EOS__
$ knife solo prepare example.com --bootstrap-version 11.4.4
$ knife solo cook example.com
Self-signed certificate
自己署名証明はconfig.yml
のself_signed_cert
をtrue
に編集します。
$ ssh example.com
ubuntu@example:~$ sudo editor /home/git/gitlab-shell/config.yml
Mail(SMTP)
Postfix
メールの送信にPostfix
を利用します。main.cf
を編集してリスタートします。
$ ssh example.com
ubuntu@example:~$ sudo apt-get install postfix
ubuntu@example:~$ sudo editor /etc/postfix/main.cf
ubuntu@example:~$ sudo service postfix restart
Gitlab
production.rb
のconfig.action_mailer.delivery_method = :sendmail
の
次行に下記のconfig.action_mailer.sendmail_settings
を追加します。
config.action_mailer.sendmail_settings = {
location: '/usr/sbin/sendmail',
arguments: '-i -t'
}
production.rb
を編集してリスタートします。
$ ssh example.com
ubuntu@example:~$ sudo editor /home/git/gitlab/config/environments/production.rb
ubuntu@example:~$ sudo service gitlab restart
Inspect
新しいユーザを作成して、プロジェクトを作成します。
さらに公開鍵を追加すると3通のメールが受信されます。
Actions | Mail Subject |
---|---|
New User | Account was created for you |
New project | Access to project was granted |
Add SSH Key | SSH key was added to your account |
これで オレオレGitLab が完成です。
Tips
Vagrant
VagrantとAmazon EC2ではもっとに簡単にGitLabがインストールできます。
Download
Vagrantfile
のaccess_key_id
、secret_access_key
やprivate_key_path
、keypair_name
を編集します。
$ 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
$ git clone https://gitlab.com/gitlab-org/cookbook-gitlab.git ./gitlab
$ cd ./gitlab/
$ cp ./example/Vagrantfile_aws ./Vagrantfile
$ editor ./Vagrantfile
Provision
Vagrantfile
のchef.json
やchef.run_list
をChef Solo
と同じように編集します。
vagrant provision
コマンドでGitLabがインストールされます。
$ vagrant up --provider=aws
$ eval $(vagrant ssh-config | awk '/HostName/ {print "HostName=" $2}')
$ sed -i.bak "s/example.com/$HostName/g" Vagrantfile
$ sed -i.bak 's/chef.run_list = \[\]/chef.run_list = \["gitlab::default"\]/g' Vagrantfile
$ vagrant provision
GitLab.orgのProductionも参考にしてください。