public_attributes.json 작업

Chef는 노드 속성의 사본을 /opt/gitlab/embedded/nodes/$NODE_NAME.json에 다시 구성(reconfigure)의 끝에 저장합니다. 일부 속성이 민감한 성격을 띄기 때문에 이 파일은 루트 사용자만이 읽을 수 있습니다. 이 문제를 해결하기 위해 기본적으로 /var/opt/gitlab/public_attributes.json에 생성된 파일을 만들었습니다. 이 파일에는 루트 권한이 아닌 서비스의 사용을 위해 화이트리스트로 허용된 일련의 속성이 포함되어 있습니다. gitlab-ctl reconfigure 실행 시마다 이 파일이 다시 생성됩니다.

public_attributes.json에 항목 추가하기

public_attributes.json 파일은 도우미 클래스의 public_attributes 메서드 호출 결과를 병합하여 생성됩니다. 예를 들면:

class TestHelper < BaseHelper
  attr_accessor :node

  def public_attributes
    {
      'gitlab' => {
        'test' => node['gitlab']['test']
      }
    }
  end
end

이 파일은 GitLabHandler의 일부로 생성됩니다.

gitlab-ctl 명령에서 public_attributes.json에서 항목 읽기

공개 노드에 액세스하려면 제공된 GitlabCtl::Util.get_public_node_attributes 메서드를 사용해야 합니다.

attributes = GitlabCtl::Util.get_public_node_attributes

puts attributes['gitlab']['test']