Hi ! I’m working on an automation script with the DO API and Ansible. I can create a lot of droplets but how to know if the created droplets has been active ?
The first ( naive ) approach uses the following process :
A. Create droplet with the Digital Ocean API
B. Call the API to get the created droplet informations
1. is active ?
yes :
no : go to B
In the best world, after the droplet creation, I will be notified ( like a webhoock executed when the droplet creation is finished ). Is it possible ?
Many thanks
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
This is the answer from SO :
Another method would be to modify the droplet as it is created. With Digital ocean you can pass User Data, previously I have used this to configure servers automatically, here is an example.
$user_data = <<<EOD
#!/bin/bash
apt-get update
apt-get -y install apache2
apt-get -y install php5
apt-get -y install php5-mysql
apt-get -y install unzip
service apache2 restart
cd /var/www/html
mkdir pack
cd pack
wget --user {$wgetUser} --password {$wgetPass} http://x.x.x.x/pack.tar.gz
tar -xvf pack.tar.gz
php update.php
EOD;
//Start of the droplet creation
$data = array(
"name"=>"AutoRes".$humanProv.strtoupper($lang),
"region"=>randomRegion(),
"size"=>"512mb",
"image"=>"ubuntu-14-04-x64",
"ssh_keys"=>$sshKey,
"backups"=>false,
"ipv6"=>false,
"user_data"=>$user_data,
"private_networking"=>null,
);
$chDroplet = curl_init('https://api.digitalocean.com/v2/droplets');
curl_setopt($chDroplet, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($chDroplet, CURLOPT_POSTFIELDS, json_encode($data) );
curl_setopt($chDroplet, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer '.$apiKey,
'Content-Type: application/json',
'Content-Length: ' . strlen(json_encode($data)),
));
Basically once the droplet is active it will run these commands and then download a tar.gz file from my server and execute it, you could potentially create update.php to call your server and therefore update it that the droplet is online.
So, with the User Data we can run a wget command to launch a webhook. With this solution we can have an “event based” notification.
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.