• Stars
    star
    98
  • Rank 345,882 (Top 7 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 10 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fog for Google Cloud Platform

Fog::Google

Gem Version Build Status codecov Dependabot Status Doc coverage

The main maintainers for the Google sections are @icco, @Temikus and @plribeiro3000. Please send pull requests to them.

Important notices

  • As of v1.0.0, fog-google includes google-api-client as a dependency, there is no need to include it separately anymore.

  • Fog-google is currently supported on Ruby 2.7+ See supported ruby versions for more info.

See MIGRATING.md for migration between major versions.

Sponsors

We're proud to be sponsored by MeisterLabs who are generously funding our CI stack. A small message from them:

"As extensive users of fog-google we are excited to help! Meister is the company behind the productivity tools MindMeister, MeisterTask, and MeisterNote. We are based in Vienna, Austria and we have a very talented international team who build our products on top of Ruby on Rails, Elixir, React and Redux. We are constantly looking for great talent in Engineering, so If you feel like taking on a new Ruby or Elixir challenge. get in touch, open jobs can be found here."

Usage

Storage

There are two ways to access Google Cloud Storage. The old S3 API and the new JSON API. Fog::Storage::Google will automatically direct you to the appropriate API based on the credentials you provide it.

Compute

Google Compute Engine is a Virtual Machine hosting service. Currently it is built on version v1 of the GCE API.

As of 2017-12-15, we are still working on making Fog for Google Compute engine (Fog::Compute::Google) feature complete. If you are using Fog to interact with GCE, please keep Fog up to date and file issues for any anomalies you see or features you would like.

SQL

Fog implements v1beta4 of the Google Cloud SQL Admin API. As of 2017-11-06, Cloud SQL is mostly feature-complete. Please file issues for any anomalies you see or features you would like as we finish adding remaining features.

DNS

Fog implements v1 of the Google Cloud DNS API. We are always looking for people to improve our code and test coverage, so please file issues for any anomalies you see or features you would like.

Monitoring

Fog implements v3 of the Google Cloud Monitoring API. As of 2017-10-05, we believe Fog for Google Cloud Monitoring is feature complete for metric-related resources and are working on supporting groups.

We are always looking for people to improve our code and test coverage, so please file issues for any anomalies you see or features you would like.

Pubsub

Fog mostly implements v1 of the Google Cloud Pub/Sub API; however some less common API methods are missing. Pull requests for additions would be greatly appreciated.

Installation

Add the following two lines to your application's Gemfile:

gem 'fog-google'

And then execute:

$ bundle

Or install it yourself as:

$ gem install fog-google

Testing

Integration tests can be kicked off via following rake tasks. Important note: As those tests are running against real API's YOU WILL BE BILLED.

rake test               # Run all integration tests
rake test:parallel      # Run all integration tests in parallel

rake test:compute       # Run Compute API tests
rake test:monitoring    # Run Monitoring API tests
rake test:pubsub        # Run PubSub API tests
rake test:sql           # Run SQL API tests
rake test:storage       # Run Storage API tests

Since some resources can be expensive to test, we have a self-hosted CI server. Due to security considerations a repo maintainer needs to add the label integrate to kick off the CI.

Setup

Credentials

Follow the instructions to generate a private key. A sample credentials file can be found in .fog.example in this directory:

cat .fog.example >> ~/.fog # appends the sample configuration
vim ~/.fog                 # edit file with yout config

As of 1.9.0 fog-google supports Google application default credentials (ADC) The auth method uses Google::Auth.get_application_default under the hood.

Example workflow for a GCE instance with service account scopes defined:

> connection = Fog::Compute::Google.new(:google_project => "my-project", :google_application_default => true)
=> #<Fog::Compute::Google::Real:32157700...
> connection.servers
=> [  <Fog::Compute::Google::Server ...  ]

CarrierWave integration

It is common to integrate Fog with Carrierwave. Here's a minimal config that's commonly put in config/initializers/carrierwave.rb:

CarrierWave.configure do |config|
    config.fog_provider = 'fog/google'
    config.fog_credentials = {
        provider: 'Google',
        google_project: Rails.application.secrets.google_cloud_storage_project_name,
        google_json_key_string: Rails.application.secrets.google_cloud_storage_credential_content
        # can optionally use google_json_key_location if using an actual file;
    }
    config.fog_directory = Rails.application.secrets.google_cloud_storage_bucket_name
end

This needs a corresponding secret in config/secrets.yml, e.g.:

development:
    google_cloud_storage_project_name: your-project-name
    google_cloud_storage_credential_content: '{
        "type": "service_account",
        "project_id": "your-project-name",
        "private_key_id": "REDACTED",
        "private_key": "-----BEGIN PRIVATE KEY-----REDACTED-----END PRIVATE KEY-----\n",
        "client_email": "[email protected]",
        "client_id": "REDACTED",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://accounts.google.com/o/oauth2/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/REDACTED%40your-project-name.iam.gserviceaccount.com"
    }'
    google_cloud_storage_bucket_name: your-bucket-name

SSH-ing into instances

If you want to be able to bootstrap SSH-able instances, (using servers.bootstrap,) be sure you have a key in ~/.ssh/id_rsa and ~/.ssh/id_rsa.pub

Quickstart

Once you've specified your credentials, you should be good to go!

$ bundle exec pry
[1] pry(main)> require 'fog/google'
=> true
[2] pry(main)> connection = Fog::Compute::Google.new
[3] pry(main)> connection.servers
=> [  <Fog::Compute::Google::Server
    name="xxxxxxx",
    kind="compute#instance",

Supported Ruby Versions

Fog-google is currently supported on Ruby 3.0+.

In general we support (and run our CI) for Ruby versions that are actively supported by Ruby Core - that is, Ruby versions that are not end of life. Older versions of Ruby may still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.

Contributing

See CONTRIBUTING.md in this repository.

More Repositories

1

fog

The Ruby cloud services library.
Ruby
4,318
star
2

fog-aws

Module for the 'fog' gem to support Amazon Web Services http://aws.amazon.com/
Ruby
300
star
3

fog-openstack

Fog for OpenStack Platform
Ruby
68
star
4

fog-core

fog's core, shared behaviors without API and provider specifics
Ruby
45
star
5

fog-aliyun

Fog provider for aliyun
Ruby
37
star
6

fog-vsphere

Fog for vSphere
Ruby
36
star
7

fog-azure-rm

Fog for Azure Resource Manager
Ruby
35
star
8

fog-proxmox

Fog module for Proxmox VE Platform
Ruby
31
star
9

fog-backblaze

Integration library for gem fog and Backblaze B2 Cloud Storage
Ruby
19
star
10

fog-azure

Ruby
19
star
11

fog-digitalocean

Fog for DigitalOcean Platform — Edit
Ruby
17
star
12

fog-local

Module for the 'fog' gem to support local filesystem storage
Ruby
17
star
13

fog-libvirt

libvirt provider for fog
Ruby
16
star
14

fog-xenserver

Module for the 'fog' gem to support XENSERVER
Ruby
16
star
15

fog-sakuracloud

Module for the 'fog' gem to support Sakura no Cloud
Ruby
13
star
16

fog-dropbox

Module for the 'fog' gem to support Dropbox http://dropbox.com
Ruby
12
star
17

fog-ovirt

Ruby
11
star
18

fog-rackspace

Rackspace provider gem for Fog ecosystem
Ruby
8
star
19

fog.github.com

fog.io documentation website
JavaScript
8
star
20

fog-dnsimple

Module for the 'fog' gem to support DNSimple.
Ruby
7
star
21

fog-openstack-core

fog's core openstack behaviors without API and cloud provider specifics
Ruby
6
star
22

fog-brightbox

Brightbox Cloud support for the fog gem. Officially supported.
Ruby
5
star
23

fog-radosgw

Ruby
5
star
24

fog-oraclecloud

Fog library for the Oracle Cloud
Ruby
5
star
25

fog-kubevirt

Module for the 'fog' gem to support Kubevirt.
Ruby
5
star
26

fog-powerdns

Module for the 'fog' gem to support PowerDNS
Ruby
4
star
27

fog-internet-archive

Internet Archive Storage support for Fog
Ruby
4
star
28

fog-akamai

Module for the 'fog' gem to support Akamai http://www.akamai.com/
Ruby
3
star
29

fog-profitbricks

Module for the 'fog' gem to support ProfitBricks
Ruby
3
star
30

fog-dynect

Module for the 'fog' gem to support Dyn Managed DNS http://dyn.com/
Ruby
3
star
31

fog-xml

Shared XML related functionality for fog
Ruby
2
star
32

fog-hadoop

Fog connector for Hadoop
Ruby
2
star
33

fog-cloudatcost

Module for the 'fog' gem to support CloudAtCost Services http://panel.cloudatcost.com/
Ruby
2
star
34

fog-linode

Fog provider for Linode
Ruby
2
star
35

fog-riakcs

Module for the 'fog' gem to support RiakCS
Ruby
2
star
36

fog-json

Shared JSON related functionality for fog
Ruby
2
star
37

fog-packet

Fog for Packet
Ruby
2
star
38

fog-cloudstack

Ruby
1
star
39

fog-joyent

Module for the 'fog' gem to support Joyent
Ruby
1
star
40

fog-softlayer

Ruby
1
star
41

fog-ecloud

Module for the 'fog' gem to support Terremark Enterprise Cloud
Ruby
1
star
42

fog-vmfusion

Module for the 'fog' gem to support VMWARE Fusion
Ruby
1
star
43

fog-dnsmadeeasy

Fog DNS Made Easy Module
Ruby
1
star