はじめに
どうも!生産技術部のエンジニアです。弊社ではエクセルで作った台帳を用いた、ナウいプログラムの管理を行っています。
最近までは、これで問題なく運用出来ていましたが、人手が介在する事による品質トラブルが重なり、この度、システマチックに管理する事となりましたw
社内で発生する品質トラブルに立ち向かうため、Gitサーバを立ち上げましたので作業手順をここに残します。
(電気メカ系の生技にとって、GitとかLinuxとかオーパーツ。。。)
GitLab関連の投稿済み内容
- Docker Composeを用いてCentOS7上でGitLab Runner Dockerを作成
- GitLab Mattermostの導入 - SSO設定、"webhook is blocked"対応
- GitLab CIでGitのブランチを自動生成
- 生産技術部のGit開発環境はこれだ!(オンプレミス環境/Gitブランチモデル)
- Git タグを自動更新 〜マージされるトピックブランチ毎に更新ルールを変える〜
- Dockerで立ち上げたGitLabの定期バックアップ方法
- Dockerで立ち上げたGitLab MattermostでMattermost CLIを利用する
- mattermostでBOTから複数のチームに通知を一斉送信する
環境
- CentOS : 7.6.1810
- Docker-CE : 19.03.1
- Docker Compose : 1.25.0
- GitLab-CE Docker: 12.2.0-ce.0
各種プロキシ設定
プロキシ環境下で外部にアクセスする場合、各コマンド毎にプロキシ設定が必要になる。
gitlabをインストールするまでに、yum、curl、dockerを利用するため、各々のプロキシ設定を行う。
- OS全体にプロキシを適用
PROXY='proxy.example.com:8888' # proxyサーバのドメインとポートを指定
export http_proxy=$PROXY
export HTTP_PROXY=$PROXY
export https_proxy=$PROXY
export HTTPS_PROXY=$PROXY
ファイルを保存し以下を実行して設定を反映
$ source /etc/profile
- yumのプロキシ設定
proxy=http://proxy.example.com:8888
- curlのプロキシ設定
proxy = http://proxy.example.com:8888
- dockerのプロキシ設定
Docker公式のプロキシ設定マニュアルに従い設定する。
$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ vim /etc/systemd/system/docker.service.d/http-proxy.conf
http-proxy.conf
を編集する。
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8888" "NO_PROXY=localhost"
設定を再読み込み
$ systemctl daemon-reload
Firewallの設定
gitlabを外部に公開するために、Firewallの設定を行う。CentOS7におけるファイアウォールの設定コマンド一覧は、ここを参照する。http,ssh等の80、22番ポートを使用するサービスが起動中の場合は、gitlabで利用するポートを80から4080番ポート、22から4022番ポートに変更する。もしくは、サービスを停止する。今回は、22番のみポートの変更を行います。
項目 | 値 | 概要 |
---|---|---|
gitlab:ports | 80:80 | 外部に公開するポート番号 |
gitlab:ports | 4022:22 | 外部に公開するポート番号 |
変更にあたり、利用するポートのファイアウォールを設定する。
$ firewall-cmd --add-port=80/tcp --zone=public --permanent
$ firewall-cmd --add-port=4022/tcp --zone=public --permanent
$ firewall-cmd --reload
success
Dockerのインストール
Docker公式のマニュアルに従ってインストールする。
古いバージョンのDockerがインストールされている場合は削除する。
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
- 必要なパッケージのインストール
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- レポジトリの追加
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Dockerのインストール
$ sudo yum install docker-ce docker-ce-cli containerd.io
GPG keyを許可するように求められたら、以下と一致する事を確認し許可する。
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
- Dockerの起動
$ sudo systemctl start docker
サーバ起動時に、自動的にDocker Engineも起動したい場合は、こちらのコマンドも実行
$ systemctl enable docker
Docker Composeの最新版をインストールする。最新版はここを参照する。
# Docker Composeの最新版をダウンロードする
# `1.25.0` の値はバージョンに応じて変更する
$ curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
GitLabのインストール・起動
GitLab公式のマニュアルをベースにdocker-compose.yml
を作成する。docker-compose.yml
とは、Dockerコンテナの起動オプションを記載したファイルです。
公式からの変更点を以下に示します。
項目 | 値 | 概要 |
---|---|---|
gitlab:ports | 80:80 | 外部に公開するポート番号 |
gitlab:ports | 4022:22 | 外部に公開するポート番号 |
docker-compose.yml
は以下の様に記載する。
web:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.example.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com'
gitlab_rails['gitlab_shell_ssh_port'] = 4022
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '4022:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
docker-compose.yml
のあるディレクトリで実行し、構築完了
# Dockerの起動およびリロード
$ docker-compose up -d
# Dockerの停止
$ docker-compose down
ログの確認
GitLabが正常に立ち上がっている事を確認するため、起動中のDockerコンテナのログを表示する。
GitLabが立ち上がるまでに5分程度かかります。
- 現在起動中のコンテナの一覧を表示
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxxxxx gitlab/gitlab-ce:latest "/assets/wrapper" About a minute ago Up About a minute (health: starting) 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4022->22/tcp gitlab_web_1
- ログの確認
# リアルタイムで表示
$ docker logs -f gitlab_web_1
# タイムスタンプを追加して表示
$ docker logs -t gitlab_web_1
立ち上がった後、ローカルからhttp://localhost
または、外部からhttp://gitlab.example.com
にアクセスしログインページが表示されることを確認する。
#GitLabの設定(オプション)
docker-compose.yml
にGitLabの設定を追加することも出来ますが、gitrab.rb
の設定を反映したい場合の方法を説明します。gitrab.rb
とは、GitLabの各種設定を記載したファイルです。まず、Docker ComposeでGitLabのコンテナを作成した場合、GitLabのコマンドは以下の様に実行する必要があります。
# 通常のgitlab-ctlコマンド
$ gitlab-ctl [command and options...]
↓
# dockerを使った場合のgitlab-ctlコマンド
$ docker exec -it gitlab_web_1 gitlab-ctl [command and options...]
gitrab.rb
に追加したい設定を記入し、設定を反映する。
$ docker exec -it gitlab_web_1 gitlab-ctl reconfigure
最後に
知識が足りない部分は先人の力を借りて、無事に立ち上げる事ができました。間違っている内容があれば連絡ください!
今回は、GitLabの立上げまでを取り上げましたが、GitLabから社内メールサーバへ通知メールを送る設定やGitLabに同封されたチャットアプリ(Mattermost)との連携を行いました。また、GitLab Runnnerの導入も実施予定となっています。そして、一番重要な生産技術の業務フローにあったGitの運用手順についても検討しています。
うまく運用出来ましたら、記事にしたいと思います。