The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

WebService::DigitalOcean

Build Status

Implements the Perl module for accessing the v2 of the DigitalOcean API.

See main documentation on MetaCPAN.

Patches welcome!

````perl

use WebService::DigitalOcean;

my $do = WebService::DigitalOcean->new({ token => $TOKEN });

#

Upload your public ssh key

#

open my $fh, '<', $ENV{HOME} . '/.ssh/id_rsa.pub'; my $key = $do->key_create({ name => 'Andre Walker', public_key => do { local $/ = <$fh> }, }); close $fh;

#

Select a random available region to create a droplet

#

my @regions = grep { $->{available} } @{ $do->regionlist->{content} }; my $random_region = $regions[rand @regions];

#

Create droplets!

#

my $droplet1_res = $do->droplet_create({ name => 'server1.example.com', region => $random_region->{slug}, size => '1gb', image => 'ubuntu-14-04-x64', ssh_keys => [ $key->{content}{fingerprint} ], });

die "Could not create droplet 1" unless $droplet1_res->{is_success};

my $droplet2_res = $do->droplet_create({ name => 'server2.example.com', region => $random_region->{slug}, size => '1gb', image => 'ubuntu-14-04-x64', ssh_keys => [ $key->{content}{fingerprint} ], });

die "Could not create droplet 2" unless $droplet2_res->{is_success};

#

Create domains

#

my $subdomain1_res = $do->domain_record_create({ domain => 'example.com', type => 'A', name => 'server1', data => $droplet1_res->{content}{networks}{v4}{ip_address}, });

die "Could not create subdomain server1" unless $subdomain1_res->{is_success};

my $subdomain2_res = $do->domain_create({ domain => 'example.com', type => 'A', name => 'server2', data => $droplet2_res->{content}{networks}{v4}{ip_address}, });

die "Could not create subdomain server2" unless $subdomain2_res->{is_success};

````