Sha256: b1548fe4f8c2ed8248975c7e1c85ce1a1f47d60a3ffcdb7c4837d4f7e9fd60ee

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

module Souls
  module Gcloud
    def self.create_service_account(service_account: "souls-app")
      `gcloud iam service-accounts create #{service_account} \
      --description="Souls Service Account" \
      --display-name="#{service_account}"`
    end

    def self.create_service_account_key(service_account: "souls-app")
      project_id = Souls.configuration.project_id
      `gcloud iam service-accounts keys create ./config/keyfile.json \
        --iam-account #{service_account}@#{project_id}.iam.gserviceaccount.com`
    end

    def self.add_service_account_role(service_account: "souls-app", role: "roles/firebase.admin")
      project_id = Souls.configuration.project_id
      `gcloud projects add-iam-policy-binding #{project_id} \
      --member="serviceAccount:#{service_account}@#{project_id}.iam.gserviceaccount.com" \
      --role="#{role}"`
    end

    def self.add_permissions(service_account: "souls-app")
      add_service_account_role(service_account: service_account, role: "roles/cloudsql.serviceAgent")
      add_service_account_role(service_account: service_account, role: "roles/containerregistry.ServiceAgent")
      add_service_account_role(service_account: service_account, role: "roles/pubsub.serviceAgent")
      add_service_account_role(service_account: service_account, role: "roles/firestore.serviceAgent")
      add_service_account_role(service_account: service_account, role: "roles/iam.serviceAccountUser")
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
souls-0.23.8 lib/souls/gcloud/iam.rb
souls-0.23.7 lib/souls/gcloud/iam.rb
souls-0.23.6 lib/souls/gcloud/iam.rb