GitLab을 읽기 전용 상태로 설정하기
일부 경우에는 GitLab을 읽기 전용 상태로 설정하려고 할 수 있습니다. 이를 위한 구성은 원하는 결과에 따라 다릅니다.
저장소를 읽기 전용으로 만들기
먼저 원하는 것은 저장소에 변경 사항을 가할 수 없도록 하는 것입니다. 이를 달성하는 방법은 두 가지가 있습니다:
-
내부 API에 액세스할 수 없도록 Puma를 중지하는 방법:
sudo gitlab-ctl stop puma
-
또는 Rails 콘솔을 열기:
sudo gitlab-rails console
그리고 모든 프로젝트의 저장소를 읽기 전용으로 설정:
Project.all.find_each { |project| project.update!(repository_read_only: true) }
일부 저장소만 읽기 전용으로 설정하려면 다음을 실행하세요:
# 읽기 전용으로 설정할 프로젝트 ID 목록 projects = [1,2,3] projects.each do |p| project = Project.find p project.update!(repository_read_only: true) rescue ActiveRecord::RecordNotFound puts "프로젝트 ID #{p}을(를) 찾을 수 없음" 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_production
-
gitlab_read_only
사용자를 생성하세요. 비밀번호는mypassword
로 설정되어 있지만, 원하는 대로 변경하세요:-- 참고: 이전에 정의한 비밀번호를 사용하세요 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; -- "gitlab"이 생성한 테이블은 "gitlab_read_only"을 위해 자동으로 읽기 전용으로 설정됩니다. 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
사용자를 데이터베이스에서 제거하세요.