はじめに
動機
GitLabを自宅で使いはじめてみたのだが、初期設定でいくつかハマったところがあったのでメモしておく。
他に優れた記事がたくさんあるので自分のメモにしかならないかもしれないが記録として残しておく。
構成
練習用のサーバを2つ用意。自己署名の証明書によりHTTPSでつつけるようにする。
OSはubuntu 16.04を使用。リソースの都合上、ちょっと非力なサーバを用意したが、本来はrequirementsに従いサーバ確保すること。
- GitLab : サーバp1b1に入れる
- VMのスペック : 2core , 4GB memory , 40GB HDD
- バージョン : 11.5.3-ce.0
$ dpkg -l gitlab-ce
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-========================-=================-=================-======================================================
ii gitlab-ce 11.5.3-ce.0 amd64 GitLab Community Edition (including NGINX, Postgres, R
$
- GitLab runner : サーバp1b3にいれる
- VMのスペック : 2core , 4GB memory , 40GB HDD
- バージョン : 11.5.1
# gitlab-runner --version
Version: 11.5.1
Git revision: 7f00c780
Git branch: 11-5-stable
GO version: go1.8.7
Built: 2018-12-06T13:25:34+0000
OS/Arch: linux/amd64
#
GitLabインストール
いわゆるOmnibus packageというやつを使う。
(何入っているか調べようと下手にdpkg -L gitlab-ceなんて実行すると膨大なファイルリストが出力されます。。なかなか終わらない)
パッケージのインストール、インストール用スクリプトのダウンロード
$ sudo apt-get update
$ sudo apt-get install -y curl openssh-server ca-certificates
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
秘密鍵、CSR(Certificate Signing Request)、SSL証明書(crtファイル)の作成
opensslコマンドにより秘密鍵、CSR, SSL証明書を作成する。
opensslのバージョンは、「1.0.2g-1ubuntu4.1」を使用。
各ファイル、catしてみると、先頭に -- BEGIN ...という行があるのでPEM形式で出力されていることがわかる。
$ openssl genrsa 2048 > server.key
$ openssl req -new -key server.key > server.csr
・・・略。以下の入力はサンプルであり適当なのでちゃんと入力すること・・・
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Tokyo
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:hoge.example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
$ openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt
$
生成したファイルの配置
$ sudo mkdir -p /etc/pki/tls/private
$ sudo mkdir -p /etc/pki/tls/certs
$ sudo cp server.key /etc/pki/tls/private/server.key
$ sudo cp server.crt /etc/pki/tls/certs/server.crt
$ sudo chmod 400 /etc/pki/tls/private/server.key
$ sudo chmod 400 /etc/pki/tls/certs/server.crt
GitLabインストール実行
$ sudo EXTERNAL_URL="http://hoge.example.com" apt-get install gitlab-ce
GitLab設定ファイルの変更と、GitLabへの反映
$ sudo su
# cp /etc/gitlab/gitlab.rb /etc/gitlab/_gitlab.rb.org
# vi /etc/gitlab/gitlab.rb
#
# diff /etc/gitlab/gitlab.rb /etc/gitlab/_gitlab.rb.org
以下の3つを編集
< external_url 'https://hoge.example.com'
---
> external_url 'http://hoge.example.com'
< nginx['ssl_certificate'] = "/etc/pki/tls/certs/server.crt"
< nginx['ssl_certificate_key'] = "/etc/pki/tls/private/server.key"
---
> # nginx['ssl_certificate'] = "/etc/gitlab/ssl/#{node['fqdn']}.crt"
> # nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/#{node['fqdn']}.key"
# exit
$ sudo gitlab-ctl reconfigure
画面にアクセスし、パスワードなどアカウント情報の登録
https://hoge.example.com/users/password/edit?reset_password_token=xxxxxxxxx
→ パスワード変更
https://hoge.example.com/users/sign_in
→ ユーザ登録
適当に自分の使うユーザ情報を入力
Full name : Hoge Raccho
Username : hoge
email : hoge@example.com
password : foobar
GitLab runnerインストール
Gitlab-runnerのインストール
GitLab runnerのLinuxへのインストール手順をもとにインストール。
$ sudo wget -O /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
$ sudo chmod +x /usr/local/bin/gitlab-runner
$ curl -sSL https://get.docker.com/ | sh
$ sudo useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
$ sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
$ sudo gitlab-runner start
$
runnerの登録
登録前に以下2点を満たすこと。1点目は上記で済なので2点目を実施する
- Install it on a server separate than where GitLab is installed on
- Obtain a token for a shared or specific Runner via GitLab’s interface
GitLab画面
https://hoge.example.com/
にログインして
Go to Settings > CI/CD to obtain the token
に遷移
以下のようなことがSpecific Runnerのところに書いてあるので
その情報をもとにしてrunnerの登録を実施することになる
Set up a specific Runner manually
Install GitLab Runner
Specify the following URL during the Runner setup:
https://hoge.example.com/
Use the following registration token during setup:
xxxxyyyyzzzzwwww
Start the Runner!
runnerの登録にしたがい作業する。
が、その前に、自己署名証明書を使っている場合、このままだとgitlab-runner register時に以下のようなエラーが出るので、回避のため少しここで準備がいる。
$ sudo gitlab-runner register
・・・略・・・
ERROR: Registering runner... failed runner=xxxxx status=couldn't execute POST against https://hoge.example.com/api/v4/runners: Post https://hoge.example.com/api/v4/runners: x509: certificate signed by unknown authority
PANIC: Failed to register this runner. Perhaps you are having network problems
$
自己署名証明書の時のエラーへの対処に従って、gitlabのサーバからもってきたcrtファイルを、Runnerを入れるマシンに以下のような名前、パーミッション、ディレクトリ、ファイル名で配置する。
つまり、GitLabのURLが https://hoge.example.com/ の場合、/etc/gitlab-runner/certs/hoge.example.com.crt というファイルとして配置する。
# ls -lR /etc/gitlab-runner/
/etc/gitlab-runner/:
total 8
drwxr-xr-x 2 root root 4096 Dec 10 15:25 certs
-rw------- 1 root root 77 Dec 10 14:58 config.toml
/etc/gitlab-runner/certs:
total 4
-r-------- 1 root root 1281 Dec 10 15:25 hoge.example.com.crt
#
ここまで準備できたらregister実行。
途中で入力しないで1ラインで一気に実行するコマンドもあるようだ。
$ sudo gitlab-runner register
Runtime platform arch=amd64 os=linux pid=4723 revision=7f00c780 version=11.5.1
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://hoge.example.com/
Please enter the gitlab-ci token for this runner:
xxxxyyyyzzzzwwww
Please enter the gitlab-ci description for this runner:
[p1b3]:
Please enter the gitlab-ci tags for this runner (comma separated):
hogetag
Registering runner... succeeded runner=xxxxx
Please enter the executor: docker-ssh, parallels, shell, virtualbox, kubernetes, docker, ssh, docker+machine, docker-ssh+machine:
docker
Please enter the default Docker image (e.g. ruby:2.1):
ubuntu:16.04
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
$
その他
runnerのconfig.toml
ここで、runnerの設定ファイルconfig.tomlについて、どのような設定が書かれているか内容を確認しておく。
# cat config.toml
concurrent = 1
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "pub1b3"
url = "https://hoge.example.com/"
token = "ppppqqqrrrssss"
executor = "docker"
[runners.docker]
tls_verify = false
image = "ubuntu:16.04"
privileged = false
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
#
GitLabのregistry, mattermostの有効化
簡単にできそうだったので、レジストリと mattermost (いわゆる slack っぽい何か)も有効化してみる。
名前、ポートは環境にあわせて適当に変える。
$ diff gitlab.rb _gitlab.rb.org2
494c494
< registry_external_url 'https://hoge.example.com:5002/'
---
> # registry_external_url 'https://registry.example.com'
1221c1221
< mattermost_external_url 'https://hoge.example.com:5001/'
---
> # mattermost_external_url 'http://mattermost.example.com'
$
$ sudo gitlab-ctl reconfigure
この記事ではとりあえずここまで。