Sha256: 42ba51d2bde61d1c0295ebf8e6afe1709eef4c34291b82f62d6b51309d89a62b

Contents?: true

Size: 1.56 KB

Versions: 21

Compression:

Stored size: 1.56 KB

Contents

module Souls
  module Gcloud
    class << self
      def create_service_account(args)
        service_account = args[:service_account] || "souls-app"
        system(
          "gcloud iam service-accounts create #{service_account} \
        --description='Souls Service Account' \
        --display-name=#{service_account}"
        )
      end

      def create_service_account_key(args)
        service_account = args[:service_account] || "souls-app"
        project_id = args[:project_id] || "souls-app"
        system(
          "gcloud iam service-accounts keys create ./config/keyfile.json \
          --iam-account #{service_account}@#{project_id}.iam.gserviceaccount.com"
        )
      end

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

      def add_permissions(args)
        service_account = args[:service_account] || "souls-app"
        roles = [
          "roles/cloudsql.serviceAgent",
          "roles/containerregistry.ServiceAgent",
          "roles/pubsub.serviceAgent",
          "roles/firestore.serviceAgent",
          "roles/iam.serviceAccountUser"
        ]
        roles.each do |role|
          add_service_account_role(service_account: service_account, role: role)
        end
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
souls-0.25.7 lib/souls/gcloud/iam.rb
souls-0.25.6 lib/souls/gcloud/iam.rb
souls-0.25.5 lib/souls/gcloud/iam.rb
souls-0.25.4 lib/souls/gcloud/iam.rb
souls-0.25.3 lib/souls/gcloud/iam.rb
souls-0.25.2 lib/souls/gcloud/iam.rb
souls-0.25.1 lib/souls/gcloud/iam.rb
souls-0.25.0 lib/souls/gcloud/iam.rb
souls-0.24.14 lib/souls/gcloud/iam.rb
souls-0.24.13 lib/souls/gcloud/iam.rb
souls-0.24.12 lib/souls/gcloud/iam.rb
souls-0.24.11 lib/souls/gcloud/iam.rb
souls-0.24.10 lib/souls/gcloud/iam.rb
souls-0.24.9 lib/souls/gcloud/iam.rb
souls-0.24.8 lib/souls/gcloud/iam.rb
souls-0.24.7 lib/souls/gcloud/iam.rb
souls-0.24.6 lib/souls/gcloud/iam.rb
souls-0.24.5 lib/souls/gcloud/iam.rb
souls-0.24.4 lib/souls/gcloud/iam.rb
souls-0.24.3 lib/souls/gcloud/iam.rb