PostgreSQLHosting
view release on metacpan or search on metacpan
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 )