GitLabを読み取り専用状態にする
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
GitLabを読み取り専用状態にする推奨される方法は、メンテナンスモードを有効にすることです。
場合によっては、GitLabを読み取り専用状態にすることがあります。そのための設定は、目的の結果によって異なります。
リポジトリを読み取り専用にする
まず、リポジトリに変更を加えることができないようにする必要があります。これを実現するには、2つの方法があります:
Pumaを停止して、内部APIにアクセスできないようにします:
sudo gitlab-ctl stop pumaまたは、Railsコンソールを開きます:
sudo gitlab-rails consoleそして、すべてのプロジェクトのリポジトリを読み取り専用に設定します:
Project.all.find_each { |project| project.update!(repository_read_only: true) }読み取り専用にするリポジトリのサブセットのみを設定するには、次を実行します:
# List of project IDs of projects to set to read-only. projects = [1,2,3] projects.each do |p| project = Project.find p project.update!(repository_read_only: true) rescue ActiveRecord::RecordNotFound puts "Project ID #{p} not found" endこれを元に戻す準備ができたら、プロジェクトの
repository_read_onlyをfalseに変更します。たとえば、次を実行します:Project.all.find_each { |project| project.update!(repository_read_only: false) }
GitLab UIをシャットダウンする
GitLab UIをシャットダウンしてもかまわない場合は、sidekiqとpumaを停止するのが最も簡単な方法です。これにより、GitLabに変更を加えることができなくなります:
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop pumaこれを元に戻す準備ができたら:
sudo gitlab-ctl start sidekiq
sudo gitlab-ctl start pumaデータベースを読み取り専用にする
ユーザーがGitLab UIを使用できるようにする場合は、データベースが読み取り専用であることを確認してください:
予期しない事態に備えて、GitLabのバックアップを取ります。
管理者ユーザーとして、コンソールでPostgreSQLに入ります:
sudo \ -u gitlab-psql /opt/gitlab/embedded/bin/psql \ -h /var/opt/gitlab/postgresql gitlabhq_productiongitlab_read_onlyユーザーを作成します。パスワードはmypasswordに設定されています。必要に応じて変更してください:-- NOTE: Use the password defined earlier CREATE USER gitlab_read_only WITH password 'mypassword'; GRANT CONNECT ON DATABASE gitlabhq_production to gitlab_read_only; GRANT USAGE ON SCHEMA public TO gitlab_read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO gitlab_read_only; GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO gitlab_read_only; -- Tables created by "gitlab" should be made read-only for "gitlab_read_only" -- automatically. ALTER DEFAULT PRIVILEGES FOR USER gitlab IN SCHEMA public GRANT SELECT ON TABLES TO gitlab_read_only; ALTER DEFAULT PRIVILEGES FOR USER gitlab IN SCHEMA public GRANT SELECT ON SEQUENCES TO gitlab_read_only;gitlab_read_onlyユーザーのハッシュ化されたパスワードを取得し、結果をコピーします:sudo gitlab-ctl pg-password-md5 gitlab_read_only/etc/gitlab/gitlab.rbを編集し、前の手順のパスワードを追加します:postgresql['sql_user_password'] = 'a2e20f823772650f039284619ab6f239' postgresql['sql_user'] = "gitlab_read_only"GitLabを再構成し、PostgreSQLを再起動します:
sudo gitlab-ctl reconfigure sudo gitlab-ctl restart postgresql
読み取り専用状態を元に戻す準備ができたら、/etc/gitlab/gitlab.rbに追加した行を削除し、GitLabを再構成してPostgreSQLを再起動します:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart postgresqlすべてが期待どおりに動作することを確認したら、データベースからgitlab_read_onlyユーザーを削除します。