gpt4 book ai didi

api - 如何在 Droplet 创建后处于事件状态时收到通知

转载 作者:行者123 更新时间:2023-12-05 02:21:17 25 4
gpt4 key购买 nike

我正在使用 DO API 和 Ansible 编写自动化脚本。我可以创建很多液滴,但如何知道创建的液滴是否已激活?

第一种(天真的)方法使用以下过程:

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

在最好的世界里,在创建 droplet 之后,我会收到通知(就像在 droplet 创建完成时执行的 webhook)。可能吗?

最佳答案

查看 API 文档 https://developers.digitalocean.com/documentation/v2/

您应该能够看到 Droplet 的状态(参见 Droplet 部分)。

使用您的逻辑您可以:

  1. 创建 droplet 并将 id 存储在变量中
  2. 睡一分钟
  3. 调用 ID 为/v2/droplets/$DROPLET_ID 的 Droplet。
  4. 测试响应状态(指示 Droplet 实例状态的状态字符串。这可能是"new"、“事件”、“关闭”或“存档”)。
  5. 如果 status == new 做某事

更新

另一种方法是在创建液滴时对其进行修改。使用 Digital ocean 你可以传递 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 在线。

关于api - 如何在 Droplet 创建后处于事件状态时收到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35454961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com