Skip to content

Instantly share code, notes, and snippets.

@fredsted
Created November 2, 2015 13:02
Show Gist options
  • Save fredsted/b60505187ab1c62552ed to your computer and use it in GitHub Desktop.
Save fredsted/b60505187ab1c62552ed to your computer and use it in GitHub Desktop.
Hetzner Robot Ansible inventory script
#!/usr/bin/php
<?php
define('HETZNER_KEY_PATH', '/root/.hetzner_robot_key');
if (!file_exists(HETZNER_KEY_PATH)) die('Key file at '.HETZNER_KEY_PATH.' not found'.PHP_EOL);
$hetzner_key = file_get_contents(HETZNER_KEY_PATH);
if (!strpos($hetzner_key, ':')) die('Key file must be of format "username:password"'.PHP_EOL);
$process = curl_init('https://robot-ws.your-server.de/server');
curl_setopt($process, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($process, CURLOPT_USERPWD, $hetzner_key);
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($process);
curl_close($process);
$servers = json_decode($return);
$inventory = [];
foreach ($servers as $server)
{
$inventory[$server->server->server_name] = [$server->server->server_ip];
}
echo json_encode($inventory, JSON_PRETTY_PRINT);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment