Contents
自己証明書を使ってGitLabを構築しGitLab Runnerを動かす手順になります。
環境
項目 | バージョン |
---|---|
GitLab EE | 14.6.2 |
GitLab Runner | 14.6.0 |
Ansible Core | 2.12.1 |
Ansible | 5.2.0 |
CentOS | 8.5.2111 |
自己証明書作成
ここでは、以下のPlaybookをAnsibleで実行して自己証明書を作成します。
任意の名前で以下の内容のPlaybookを作成してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
--- - hosts: localhost gather_facts: false vars: dir_path: "証明書を保存するディレクトリパス" privatekey_password: "秘密鍵のパスワード" overwrite_privatekey_password: "秘密鍵のパスワードを解除するかどうか(true|false)" subject_alt_name: "SANの値を書く(e.g. DNS:*.example.com,IP:192.0.2.1)" common_name: "GitLabのコモンネーム(FQDN or IP)" tasks: - name: Make a directory for saving certificate files ansible.builtin.file: path: "{{ dir_path }}" mode: 0755 state: directory - name: Generate a private key community.crypto.openssl_privatekey: path: "{{ dir_path }}/{{ common_name }}.key" passphrase: "{{ privatekey_password }}" cipher: auto type: RSA size: 4096 - name: Generate a certificate signing request community.crypto.openssl_csr: path: "{{ dir_path }}/{{ common_name }}.csr" privatekey_passphrase: "{{ privatekey_password }}" privatekey_path: "{{ dir_path }}/{{ common_name }}.key" common_name: "{{ common_name }}" subject_alt_name: "{{ subject_alt_name }}" key_usage: - digitalSignature - keyEncipherment extended_key_usage: - clientAuth - serverAuth - name: Generate a self signed certificate community.crypto.x509_certificate: path: "{{ dir_path }}/{{ common_name }}.crt" privatekey_passphrase: "{{ privatekey_password }}" privatekey_path: "{{ dir_path }}/{{ common_name }}.key" csr_path: "{{ dir_path }}/{{ common_name }}.csr" provider: selfsigned selfsigned_not_after: "{{ certificate_term | default('+3650d') }}" ownca_not_after: "{{ ca_certificate_term | default('+3650d') }}" - name: Overwrite private key password command: "openssl rsa -in {{ dir_path }}/{{ common_name }}.key -out {{ dir_path }}/{{ common_name }}.key -passin pass:{{ privatekey_password }}" changed_when: true when: - overwrite_privatekey_password is sameas true |
Playbookを実行して証明書を作成します。
1 2 |
$ ansible-playbook generate_self_sign_certificate.yml |
証明書を使ってGitLab Runnerを接続させる場合は SAN付き
になっている必要があります。
そのため以下のコマンドで X509v3 Subject Alternative Name
が存在しているか確認します。
1 2 3 4 |
$ openssl x509 -text -in certificate/192.168.10.103.crt | grep "X509v3 Subject Alternative Name" -A 1 X509v3 Subject Alternative Name: IP Address:192.168.10.103 |
GitLabインストール
証明書のコピー
GitLabサーバに以下のディレクトリを作成します。
1 2 3 |
# mkdir -p /etc/gitlab/ssl # chmod 700 /etc/gitlab/ssl |
GitLabサーバに作成した自己証明書をコピーします。
1 2 |
$ scp -r certificate/*{.key,.crt} root@192.168.10.103:/etc/gitlab/ssl/ |
インストール
GitLabのリポジトリを登録してインストールします。
1 2 3 |
# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash # EXTERNAL_URL="https://192.168.10.103" dnf install -y gitlab-ee |
アクセス確認
GitLabサーバにブラウザでアクセスして確認します。
root
の初期パスワードは以下のコマンドで確認できます。
1 2 |
# grep "Password:" /etc/gitlab/initial_root_password |
GitLab Runnerインストール
Dockerのインストール
ここでは、ExecutorはDockerを使用するためインストールして起動します。
1 2 3 4 5 6 7 8 |
# dnf install -y yum-utils # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # dnf -y install docker-ce docker-ce-cli containerd.io # systemctl enable docker # systemctl start docker # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES |
インストール
GitLab Runnerのリポジトリを登録してインストールします。
1 2 3 |
# curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | bash # dnf -y install gitlab-runner |
証明書のコピー
GitLabで使用した自己証明書をコピーします。
1 2 3 |
# mkdir /etc/gitlab-runner/certs # openssl s_client -showcerts -connect 192.168.10.103:443 < /dev/null 2>/dev/null | openssl x509 -outform PEM > /etc/gitlab-runner/certs/192.168.10.103.crt |
上記の証明書で問題なくアクセスできるか確認します。
1 2 |
# echo | openssl s_client -CAfile /etc/gitlab-runner/certs/192.168.10.103.crt -connect 192.168.10.103:443 |
Runnerの登録
GitLabへRunnerを登録します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# gitlab-runner register --tls-cert-file /etc/gitlab-runner/certs/192.168.10.103.crt Runtime platform arch=amd64 os=linux pid=9424 revision=5316d4ac version=14.6.0 Running in system-mode. Enter the GitLab instance URL (for example, https://gitlab.com/): https://192.168.10.103/ Enter the registration token: [Tokenをコピペ] Enter a description for the runner: [blog-gitlab-runner]: Enter tags for the runner (comma-separated): Registering runner... succeeded runner=mhiGASx9 Enter an executor: docker, docker-ssh, shell, docker+machine, docker-ssh+machine, kubernetes, custom, parallels, ssh, virtualbox: docker Enter the default Docker image (for example, ruby:2.6): centos:8 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! |
RunnerがGitLabに登録されているか確認します。
以下は、共有Runnerとして登録した例です。
これで自己証明書を使ったGitLab/Runnerの環境構築は完了です。