一緒に働くpublic_attributes.json

Chefは再設定終了時にノードの属性のコピーを/opt/gitlab/embedded/nodes/$NODE_NAME.json に保存します。いくつかの属性は機密性が高いため、rootユーザーしか読めません。これを回避するために、非 root サービスが使用できるようにホワイトリスト化した属性のセットを含むファイル(デフォルトは/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']