PostgreSQLHosting

 view release on metacpan or  search on metacpan

Rexfile  view on Meta::CPAN

use utf8;
binmode(STDOUT, ":utf8");

use open qw/:std :utf8/;
use Rex -feature => ['1.6', 'disable_strict_host_key_checking'];
use Rex::Config;
use Rex::Logger;
use YAML ();
use PostgreSQLHosting::Provider;
use Time::HiRes qw(time);

use constant ALLOWED_PROVIDERS => qw(linode digitalocean h_cloud);
use feature 'say';

$Rex::Logger::debug  = 0;
$Rex::Logger::format = '%D - [%l] - {%h} - %s';

$|++;

my $conf = YAML::LoadFile($ENV{DEPLOY_CONFIG} || 'config.yml');
#

die('Missing providers')
  unless scalar grep { exists $conf->{providers}->{$_} } ALLOWED_PROVIDERS;

BEGIN {
  user 'root';
  private_key($ENV{PRIVATE_KEY} || die 'Missing PRIVATE_KEY');
  public_key(
    (
      -r $ENV{PRIVATE_KEY} . '.pub'
      ? $ENV{PRIVATE_KEY} . '.pub'
      : $ENV{PUBLIC_KEY}
    )
      || die 'Missing PUBLIC_KEY'
  );

  key_auth;
}

my @providers = map {
  PostgreSQLHosting::Provider->make_instance(
    {
      %$conf,
      provider => $_,
      secret   => $conf->{providers}->{$_}->{secret},
      hosts    => [
        (
          map {
            +{
              type => 'master',
              size => $_->{size},
              name => $conf->{prefix} . '_' . $_->{name}
              }
          } ($conf->{providers}->{$_}->{master})
        ),
        (
          map {
            +{
              type => 'slave',
              size => $_->{size},
              name => $conf->{prefix} . '_' . $_->{name}
              }
          } (@{$conf->{providers}->{$_}->{slaves}})
        ),
      ]
    }
    )
} keys %{$conf->{providers}};


sub _generate_ssl_keys {
  Rex::Logger::info('Installing openssl');
  file '/etc/ssl/postgres', ensure => 'directory';
  pkg 'openssl',            ensure => 'present';
  Rex::Logger::info('Generating ssl keys');
  run 'openssl req \
    -new \
    -newkey rsa:4096 \
    -days 3650 \
    -nodes \
    -x509 \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
    -keyout /etc/ssl/postgres/pgserver.key \
    -out /etc/ssl/postgres/pgserver.cert';

  file '/etc/ssl/postgres/pgserver.key',
    owner => "postgres",



( run in 0.672 second using v1.01-cache-2.11-cpan-39bf76dae61 )