创建Droplet后,不会执行用户数据命令

时间:2014-11-23 16:48:43

标签: php api digital-ocean

使用Digital Ocean api我遇到了user_data错误。创建了一个droplet后,没有安装nginx。在使用用户数据创建Droplet之后,我希望在我的服务器上运行以下代码。

!/bin/bash
apt-get -y update
apt-get -y install nginx

所以我在以下代码中使用了该代码:

$userData = "#!/bin/bash
apt-get -y update
apt-get -y install nginx";

为了将数据传递给api,我使用下面的代码:

$data = array(
    "name" => "NewDroplet",  
    "region" => "ams3", 
    "size" => "512mb", 
    "image" => "ubuntu-14-04-x64", 
    "user_data" => $userData
);

我是api的新编码:-)如果我错了,请纠正我。

2 个答案:

答案 0 :(得分:1)

如果没有看到其余代码或错误日志,很难确切知道错误的位置。一般来说,你似乎朝着正确的方向前进。这是一个有效的例子:

<?php
$user_data = <<<EOD
#!/bin/bash

apt-get -y update
apt-get -y install nginx
EOD;

$data = array(
    'name'               => 'nginx-droplet',
    'region'             => 'nyc3',
    'size'               => '512mb',
    'image'              => 'ubuntu-14-04-x64',
    'user_data'          => $user_data
);

$data_string = json_encode($data);

$ch = curl_init('https://api.digitalocean.com/v2/droplets');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer YOUR_TOKEN_API_HERE',
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);

$result = curl_exec($ch);
print_r($result);
?>

有关DigitalOcean元数据服务的更多信息,请参阅:An Introduction to Droplet Metadata

您可能还想查看community contributed PHP bindings for DgitialOcean's APIv2.

完全披露,其中包括我是Digitalocean的社区经理

答案 1 :(得分:0)

来自Dropbox网站:

  
    

user_data
字符串

    Droplet所需用户数据的字符串。用户数据目前仅在其功能中列出元数据的区域中可用。

  

这只是存储在元数据服务中的信息,后来可以在obtained中存储,例如bash脚本。

我无法通过digitalocean api找到自动安装程序的方法。我假设您需要在数字海洋配置面板中设置基于密钥的授权。然后,您可以使用ssh从使用。

创建Droplet的同一脚本连接并执行命令