tfrb

Ruby DSL for Terraform

Installation

Add this line to your application's Gemfile:

gem 'tfrb'

And then execute:

$ bundle

Or install it yourself as:

$ gem install tfrb

Usage

$ tfrb --help

Configuration

tfrb is configured using a tfrb.rb file in the current working directory where you run tfrb similar to:

::Tfrb::Config[:environment_name] = 'dev'
::Tfrb::Config[:path] = ::File.join(::File.dirname(::Chef::Config.environment_path), 'infrastructure')
::Tfrb::Config[:temp_path] = ::File.join(::File.dirname(::Chef::Config.environment_path), '.infrastructure')
::Tfrb::Config[:files] = ::Chef::Config[:knife][:infrastructure_environments]

::Tfrb::Config[:extra_modules] = [
  Atlas::Aws,
  Atlas::Chef
]

::Tfrb::Config[:overrides] = {
  'provider' => {
    'aws' => {
      'access_key' => ::Chef::Config[:knife][:aws_access_key_id],
      'secret_key' => ::Chef::Config[:knife][:aws_secret_access_key],
      'token' => ::Chef::Config[:knife][:aws_session_token]
    }
  },
  'resource' => {}
}

# Require everything in lib/tfrb/resource/
::Dir[::File.join(::File.dirname(__FILE__), 'lib', 'tfrb', '*', '*.rb')].each { |file| require file }

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/Granicus/tfrb.

Please feel free to fork and modify if it does not suit your needs!