GClouder
Google Cloud Resource Deployer
Usage
Authentication
Authenticate against the GCP API:
gcloud auth login
gcloud auth application-default login
Examples
# only execute non-state-changing commands (i.e: API queries)
gclouder -c config.yaml --dry-run
# apply the config
gclouder -c config.yaml
# apply the config, also outputting the commands that are run and their output
gclouder -c config.yaml --debug
# apply the config and include stack trace on error
gclouder -c config.yaml --trace
Install
Dependencies
Google Cloud SDK
Please see: https://cloud.google.com/sdk/downloads
Ruby
Requires a modern version of Ruby (>= 2.4), you can use rbenv or brew to install one, e.g:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
. ~/.bashrc
rbenv install 2.4.0
rbenv global 2.4.0 # or `rbenv local 2.4.0` in gclouder dir
Gem Install
Pick one of the following two methods.
RubyGems
Normal installation:
gem install gclouder
Local Source
To install dependencies and run gclouder from source:
gem install bundler
bundle install
./bin/gclouder --help
Testing
Test coverage is currently limited to libraries which are peripheral to the core functionality of this app, i.e: tests only exist for methods which can be independently tested of the GCP API.
There are plans to add integration tests at a later date.
To run the tests use one of the following:
Run once:
rake
To monitor changes to project files during development:
rake guard
Notes
Each resource is designed to do the following:
validation of local configuration by:
- check parameters are valid arguments
- check required parameters are set
- check types are correct
create remote instances which are defined locally
check remote instance dont differs from local instance definitions
remove instances which are no longer defined locally yet exist remotely
Why?
- Google Deployment Manager is unable to manipulate resources not managed by itself
- It's not possible to resize things like clusters without using gcloud(1)
- Not all resources are supported by Google Deployment Manager
- Greater control over the magic that happens between our resource definitions and the remote resources
- Inter-project resources
Gem
To build and install a gem run:
rake build
gem install pkg/gclouder-<version>.gem
To perform a release
# adjust version in lib/gclouder/version.rb then run:
rake release