GitLab mattermost PostgreSQL

Omnibus版のGitLab、Mattermostデータベースに外部ホストからJDBCで接続

投稿日:2019年9月1日

Omnibusで入れたPostgreSQLは、

  • Unix Domainソケットで接続待機
  • Peer認証で認証

していて外部からの接続は出来ないことが前回分かりました。

今回はOmnibus版でいれたPostgreSQLに外部から接続出来るように設定していきます。

社内LANでの利用を想定しているのでセキュリティリスクはあまり考えず、TCPでソケット起動してPostgreSQLを外部に公開してしまいます。

設定手順

gitlab.rb設定

GitLabの設定は主に/etc/gitlab/gitlab.rbというRubyファイルで行います。

GitLab公式サイトを参照しながら設定していきます。

外部からPostgreSQLに接続出来るようにする

Unix Domainソケット起動をTCPソケット起動に変え、自ホストIPで公開。

# postgresql['listen_address'] = nil
postgresql['listen_address'] = "0.0.0.0"

外部からのリクエストをパスワード認証出来るようにする

JDBC接続時にパスワード認証して貰えるようにしておく。

# postgresql['md5_auth_cidr_addresses'] = ["127.0.0.1/32"]
postgresql['md5_auth_cidr_addresses'] = ["0.0.0.0/0"]

TCPポートを変更(任意)

GitLabと同じホスト内で別のPostgreSQLが起動しているとポートがバッティングしてしまいます。任意で変更しておきます。

# gitlab_rails['db_port'] = 5432
gitlab_rails['db_port'] = 6543

# postgresql['port'] = 5432
postgresql['port'] = 6543

ポートを変更した場合はファイアウォールを開けておきます。

# firewall-cmd --add-port=6543/tcp --zone=public --permanent
success
# firewall-cmd --reload
success

設定変更をGitLabに反映

「gitlab-ctl reconfigure」コマンドで反映します。
GitLabが起動していないと失敗するので起動したままで。

# gitlab-ctl reconfigure

  (snip)

Recipe: <Dynamically Defined Resource>
  * service[unicorn] action restart
    - restart service service[unicorn]
  * service[sidekiq] action restart
    - restart service service[sidekiq]
  * service[gitlab-monitor] action restart
    - restart service service[gitlab-monitor]
  * service[postgres-exporter] action restart
    - restart service service[postgres-exporter]

Running handlers:
Running handlers complete
Chef Client finished, 17/768 resources updated in 46 seconds
gitlab Reconfigured!

PostgreSQL設定

接続ユーザにパスワードをつける

gitlab.rbからSQLを流す用のユーザが「gitlab」ユーザとして用意されていることが分かります。

# postgresql['sql_user'] = "gitlab"

デフォルトではPeer認証だったのでパスワードが付いていません。
gitlabユーザのパスワードを作ってパスワード認証出来るようにします。

# su gitlab-psql

-sh-4.2$ gitlab-psql -d gitlabhq_production
psql (10.9)
Type "help" for help.

// ユーザ一覧を確認
gitlabhq_production=# \du
                                       List of roles
     Role name     |                         Attributes                         | Member of
-------------------+------------------------------------------------------------+-----------
 gitlab            | <-- このユーザのパスワードを設定                                                           | {}
 gitlab-psql       | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 gitlab_mattermost |                                                            | {}
 gitlab_replicator | Replication                                                | {}

// gitlabユーザのパスワードを設定
gitlabhq_production=# \password gitlab
Enter new password: ここでは"gitlab"と入力
Enter it again: 
gitlabhq_production=#

同じ手順でmattermost_productionデータベースに繋ぎ、gitlab_mattermostユーザにパスワードを付けておくと、MattermostのDBにもJDBC接続出来るようになります。

-sh-4.2$ gitlab-psql -d mattermost_production

mattermost_production=# \password gitlab_mattermost

外部ホストからJDBC接続する為の準備が完了しました。

外部ホストからの接続動作確認

DBクライアント「jailer」で接続してみます。(jailerについては以下参照)

設定してきた下記のパラメータで接続設定。
(Mattermostデータベースに繋ぐ場合は読み替えてください)

  • URL : jdbc:postgresql://GitLabのIP:6543/gitlabhq_production
  • User : gitlab
  • Password : gitlab

GitLab Omuniub版のPostgreSQLに外部ホストからJDBCで接続出来ました。

まとめ

Omnibus版GitLab、Mattermostのデータベースに外部から接続出来ました。

データベース内容をMetabaseで分析して、「mattermostのナレッジ共有チャンネルで誰が一番知識共有に貢献しているか」とか見える化し、月間トップはご褒美、とかの催しを運営するとチームモチベーションも上がって面白いです。

-GitLab, mattermost, PostgreSQL

執筆者:

関連記事

pgcryptoの有効化と共通鍵暗号の動作確認

PostgreSQLで「pgcrypto」拡張機能を有効にすると、PostgreSQLに保存するデータを暗号化出来るようになります。 INSERTする際、共通鍵暗号はpgp_sym_encrypt関数 …

GitLab Omunibus版のPostgreSQLに普通のpsqlコマンドで接続

GitLab Omunibus版でインストールされるビルトインPostgreSQLは、 TCP:5432ではなくホスト内でしか接続出来ないUnix Domain Socketで待機ローカルホストからO …

GitLabのIPを変更したらMattermostにログイン出来なくなった話「the redirect uri included is not valid. 」

目次1 発端2 環境3 GitLabのIP変更設定を開始4 そしてハマる5 解決6 結局どこに設定が保存されていたか7 まとめ 発端 先日オフィスの引っ越しが有りネットワークセグメントが変わる為、Gi …

PostgreSQL11に一般ユーザ権限でサンプルDB「dvdrental」をpg_restore

データベースインストール後にサンプルデータを投入することで、DBをバックエンドにして動作する他ミドルの検証が楽になったりすることがあります。 それぞれのデータベースで代表的なサンプルデータセットの存在 …

ER図自動生成ツール「SchemaSpy」でdvdrentalを可視化

SchemaSpyを使うとDBからデータを吸い上げてテーブルの相関をビジュアライズしてくれます。 本来ER図からDDLを生成出来るようにしておくべきで、出来れば使わない方がいいチート系のツールですがC …

 

shingo.nakanishi
 

東京在勤、1977年生まれ、IT職歴2n年、生涯技術者として楽しく生きることを目指しています。デスマに負けず健康第一。