This module provides a re-usable and environment agnostic control of Repose
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gemfiles
files
manifests
spec
templates
tests
.fixtures.yml
.gitignore
.travis.yml
Gemfile
Makefile
ModuleFile
README.rdoc
Rakefile
puppet-module-repose.spec

README.rdoc

Repose

Build Status

This module provides a re-usable and environment agnostic control of Repose Power Proxy


Usage of Module

Installing Repose with basic keystone auth and http logging

# Setup the basic information about the API you are putting Repose in front of
$app_name     = 'myapp'
$api_protocol = 'https'
$api_host     = "api-internal.${::domain}"
$api_port     = '443'
$api_uri      = "${api_protocol}://${api_host}/${app_name}"
$repose_nodes = [ "repose-n01.${::domain}",
                  "repose-n02.${::domain}" ]

# Your service account for verifying identities against keystone
$auth = {
  'user' => 'service_admin',
  'pass' => 'somepassword',
  'uri'  => 'https://keystone.${::domain}/v2.0',
}
$client_maps = [ ".*/${app_name}/(\d+)" ]
$white_lists = [ '/application\.wadl$' ]

# Your http logging definitions
$log_files = [
  { 'id'     => 'http',
    'format' => 'Response Code Modifiers=%200,201U\tModifier Negation=%!401a\tRemote IP=%a\tLocal IP=%A\tResponse Size(bytes)=%b',
  },
]

# Your definitions for the system model
$filters = {
    10 => { 'name'      => 'slf4j-http-logging' },
    20 => { 'name'      => 'client-auth',
            'uri-regex' => "/${app_name}/.*" },
    30 => { 'name'      => 'default-router' },
}
$endpoints = [
  { 'id'        => $app_name,
    'protocol'  => $api_protocol,
    'hostname'  => $api_host,
    'root-path' => '',
    'port'      => $api_port,
    'default'   => true,
  },
]

# Bringing it all together
class { 'repose::valve': }
repose::filter::slf4j_http_logging { 'default':
  log_files => $log_files,
}
repose::filter::client_auth_n { 'default':
  auth        => $auth,
  client_maps => $client_maps,
  white_lists => $white_lists,
}
repose::filter::system_model { 'default':
  app_name  => $app_name,
  nodes     => $repose_nodes,
  filters   => $filters,
  endpoints => $endpoints,
}

Removing Repose

class { 'repose::valve': ensure => absent }

Installing this module

via GIT

git clone http://github.com/rackerlabs/puppet-repose.git /etc/puppet/modules/repose

Running tests

Requirements

Must have:

  • ruby 2.1.5

  • rspec-core 3.1.7

  • puppet 3.7.4

With bundler

git clone http://github.com/rackerlabs/puppet-repose.git 
cd puppet-repose
bundle install
bundle exec rake validate
bundle exec rake spec

Straight rake

git clone http://github.com/rackerlabs/puppet-repose.git 
cd puppet-repose
rvm use ruby-2.1.5@repose --create
gem install rspec-core:3.1.7 puppet:3.7.4 rspec-puppet rspec-puppet-utils puppet puppetlabs_spec_helper puppet-lint rake --no-ri --no-rdoc
rake validate
rake spec

Authors

Alex Schultz

alex.schultz@rackspace.com

Greg Swift

greg.swift@rackspace.com