GitLab を AWS 上の RDS に接続する
AWS の RDS を利用して立ち上げた PostgreSQL に GitLab を接続します。
PostgreSQL の設定
事前準備として、AWS コンソールなどを利用して PostgreSQL を立ち上げます。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html
GitLab サーバにpsqlをインストールします。
sudo apt-get install postgresql-client-common
sudo apt-get install postgresql-client
以下、PostgreSQL サーバに設定を入れていきます。
https://docs.gitlab.com/ee/administration/postgresql/external.html
AWS コンソール上に表示される DB のエンドポイントを控えておき、デフォルトで用意されているpostgresユーザを使って PostgreSQL に接続します。
psql \
--host=${PostgreSQLのエンドポイント} \
--port=5432 \
--username=postgres \
--password
以下のように、PostgreSQL 上の操作で GitLab 用のユーザおよびデータベースを用意します。
-- ユーザを作成
CREATE USER gitlab WITH PASSWORD 'gitlab_secret' CREATEDB;
-- extensionの作成
CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS btree_gist;
-- マスタユーザをgitlabのメンバにする
GRANT gitlab TO postgres;
-- データベースの作成
CREATE DATABASE gitlabhq_production OWNER gitlab;
-- gitlabユーザにスーパーユーザの権限を付与
GRANT rds_superuser TO gitlab;
以降は、以下のコマンドで直接 GitLab 用のデータベースに接続できます。
psql \
--host=${PostgreSQLのエンドポイント} \
--port=5432 \
--username=gitlab \
--dbname=gitlabhq_production \
--password
GitLab の設定
docker で動かすため、docker-compose.yamlを以下で作成します。
version: "3"
services:
gitlab:
image: gitlab/gitlab-ee:latest
container_name: gitlab-test
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url "http://${IP address}:80"
# Disable the built-in Postgres
postgresql['enable'] = false
# Fill in the connection details for database.yaml
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = 'gitlab_secret'
gitlab_rails['db_encoding'] = 'utf8'
gitlab_rails['db_host'] = '${DBのエンドポイント}'
ports:
- "80:80"
- "2022:22"
volumes:
- "/srv/gitlab/config:/etc/gitlab"
- "/srv/gitlab/logs:/var/log/gitlab"
- "/srv/gitlab/data:/var/opt/gitlab"
起動
docker-compose upで OK。初期パスワードは以下で確認できます。
sudo docker exec -it gitlab-test grep 'Password:' /etc/gitlab/initial_root_password