Droplet 创建后处于活动状态时如何收到通知

2024-02-16

我正在使用 DO API 和 Ansible 开发自动化脚本。我可以创建很多 Droplet,但是如何知道创建的 Droplet 是否处于活动状态?

第一种(朴素)方法使用以下过程:

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/ https://developers.digitalocean.com/documentation/v2/

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

使用你的逻辑你可以:

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

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 是否在线。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Droplet 创建后处于活动状态时如何收到通知 的相关文章

  • C++标准API

    我是一名学生 也是 C 新手 我正在寻找与 Java API 一样全面的标准 C API 到目前为止我一直在使用cplusplus com http www cplusplus com and cppreference com https
  • jQuery - 解析 JSON 数据 - 变量名称遇到问题

    我第一次深入研究 JSON 数据的使用 不过我有一些使用 jQuery 的经验 我发布到此 URL tumblr api jyoseph com api read json 我想做的是输出返回的 json 到目前为止我所拥有的 docume
  • 将 Django 模型映射到外部 API

    上下文 我有一个外部 API 提供数据并允许发布新数据或修补现有数据 API 响应示例 response requests get http api band 4 print response json id 4 name The Beat
  • 如何使用php api检查电子邮件或手机paypal帐户状态?

    如何使用 php api 检查电子邮件或手机 Paypal 帐户状态 好的 如果我想汇款到此电子邮件贝宝 email protected cdn cgi l email protection 或手机 1234567890 汇款前 我可以检查
  • 使用 C#.net 中的私有存储库的身份验证读取 BitBucket API

    我已经尝试了几天让 BitBucket API 为我工作 但是当涉及到让它为具有身份验证的私有存储库工作时 将问题设置为私有 当它们设置为公开 无需身份验证 一切正常 代码示例如下 static void Main string args
  • 如何在 Google Maps API 中指示语言?

    就像你访问一样maps google com tw or maps google co kr or maps google co jp 您可以看到每个国家 地区都显示自己的语言 我可以在 Google 地图 API 中使用任何属性来动态设置
  • API Gateway POST 方法在测试期间工作,但不适用于邮递员

    我会尽力清楚地解释我的问题 我有一个 API 它使用 Node js 编写的 lambda 函数在 DynamoDB 中编写一些内容 当我在 AWS 控制台中调用它时 API 按预期工作 我发送这样的正文 user id 4dz545zd
  • 如何将 Live API for Contacts 的响应中的哈希值转换为文本

    我集成了 Live JS api 来获取用户的实时联系人 它以哈希格式 email hash 返回电子邮件 我如何使用 javascript 或 c net 转换为可读文本 非常感谢 我遇到了同样的问题 并且找到了解决方案 您所需要做的就是
  • Puppeteer 无法在 VPS (DigitalOcean) 上工作

    我在水滴中数字海洋 https www digitalocean com 我收到这个错误 node 5549 UnhandledPromiseRejectionWarning TimeoutError Navigation Timeout
  • 彭博开放 API

    彭博开放 API最近宣布 http www computerworlduk com news it business 3334375 bloomberg market data api made public 这只是彭博软件开发工具包 ht
  • Twitter 的推文按钮有回调吗?

    有没有办法在 Twitter 的推文按钮上注册回调 我希望能够跟踪我网站上的哪些特定用户在 Twitter 上发布了链接 我无法添加 onClick 事件 因为它是跨域 iFrame 还有其他想法吗 我见过一种方法 https stacko
  • 警告:访问循环依赖内模块导出的不存在属性“MongoError”

    我正在使用节点执行 API 并使用 Mongoose 当我给一个yarn dev启动我的 Nodemon Mongo 出现错误 我不知道如何解决这个问题 有人有什么想法吗 我使用的是 MongoDB Atlas 数据库 就在出现以下错误之后
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 端点按资源 swagger 注释分组?

    我正在使用 Spring 进行 REST API 开发 我有一些 API 其中有很多端点 当我打开 swagger ui 时 它看起来很拥挤 我刚刚读过this https swagger io docs specification gro
  • SSDT SQL Server 数据库项目中用于架构比较的命令行/API?

    在 Visual Studio 2012 中 我们有Schema Compare http msdn microsoft com en us library hh272690 28v vs 103 29 aspx in SSDT http
  • Web 应用程序使用 API 来完成一切?

    我即将开始为我的公司规划一个内部项目管理工具 API 一直让我疑惑 首先创建 API 并使用这些 API 调用构建实际站点而不是实施两次 是否会被视为不好的做法 效率太低 让我知道你的想法 我完全同意开发 API 将为您提供解耦的架构 并且
  • 有没有办法以编程方式访问 Google 的搜索引擎结果? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 谷歌是否提供了一种以编程方式查看特定查询的搜索引擎结果的方法 我想构建一个跟踪应用程序 以便用户可以看
  • 生产者程序中的 kafka 网络处理器错误(ArrayIndexOutOfBoundsException:18)

    我有下面的 kafka Producer Api 程序 我对 kafka 本身是新手 下面的代码从 API 之一获取数据并将消息发送到 kafka 主题 package kafka Demo import java util Propert
  • 由 aws API 制作的 HttpRequest 拦截器

    我正在开发一个项目 该项目使用 cognito 作为身份验证服务来保护使用 nodeJS 制作的无服务器休息 API 我已成功关闭未经身份验证的客户端的 API 现在 每当我从 Angular 客户端发出请求时 我都需要在标头中自动注入一个
  • Laravel 5 通过外部 API 对用户进行身份验证

    我想知道是否可以扩展内置身份验证以使用外部 API 来对用户进行身份验证 我是 Laravel 新手 非常感谢您的帮助 我正在 Laravel 5 2 中为我的客户制作一个自定义应用程序 但我无法直接访问他们的数据库服务器 我只能调用他们的

随机推荐