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

執筆者:

関連記事

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

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

スタンドアロンモードのPgAdmin4が開くデフォルトブラウザを変更

PostgreSQL公式GUIクライアントツールの「PgAdmin4」。 PostGISのgeometry型をWeb地図上に表示出来たり、サーバモードで起動すればチーム内で共通的に使えるPostgre …

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

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

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

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

GitLab12.2.1をCentOS7.6にインストール

会社のコンプライアンス的にgithubが使えない個人開発しているプログラムを完全にプライベートで管理したい GitLabを家庭や社内でオンプレで使えばこれらのニーズを満たすことが出来ます。 留意点とし …

 

shingo.nakanishi
 

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