查看 API 文档https://developers.digitalocean.com/documentation/v2/ https://developers.digitalocean.com/documentation/v2/
您应该能够看到 Droplet 的状态(请参阅 Droplet 部分)。
使用你的逻辑你可以:
- 创建 Droplet 并将 id 存储在变量中
- 睡眠 1 分钟
- 使用 ID /v2/droplets/$DROPLET_ID 调用 Droplet。
- 测试响应状态(指示 Droplet 实例状态的状态字符串。这可能是“new”、“active”、“off”或“archive”。)。
- 如果状态==新做某事
UPDATE
另一种方法是在液滴创建时对其进行修改。有了数字海洋,你就可以通过User Data
,之前我用它来自动配置服务器,这里是一个例子。
$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)),
));
基本上,一旦 Droplet 处于活动状态,它将运行这些命令,然后从我的服务器下载 tar.gz 文件并执行它,您可能会创建 update.php 来调用您的服务器,从而更新 Droplet 是否在线。