Gerenciamento de DNS para VirtualHosts no Apache

Share

Vamos descrever como gerenciar um DNS dinamicamente para reconhecer VirtualHosts recém-criados. Novamente, isso pode não ser a melhor maneira ou a mais eficiente para implementar isso, mas com certeza irá funcionar muito bem. Depois de criar um VirtualHosts no Apache, isso é que você precisa para atualizar o DNS de forma que seus novos VirtualHosts começem a trabalhar. Para atualizar o DNS de forma dinâmica, seu provedor de DNS deve ter alguma forma (como API) que permitem que você manipule seus registros. Há poucos fornecedores que oferecem esta facilidade. Para esta experiência, eu selecionei DNSMadeEasy que fornece APIs para adicionar / remover / atualizar registros em tempo real usando scripts.

Você pode ver o script abaixo escrito em php:

<?php
date_default_timezone_set("GMT");
$reqDate = date("D, d M Y H:i:s T",mktime(date("H"),date("i"),date("s")-45,date("m"),date("d"),date("y")));
$apiKey = "my-api-key";
$secretKey = 'my-secret-key';
$secretKey2 = hash_hmac('sha1', $reqDate, $secretKey);

$URL = "http://api.dnsmadeeasy.com/V1.2/domains/example.com/records";
echo "<b>Endpoint :</b> ".$URL;

$headers = array(
'x-dnsme-requestId: '.time(),
'x-dnsme-apiKey: '.$apiKey,
'x-dnsme-requestDate: '.$reqDate,
'x-dnsme-hmac: '.$secretKey2,
'accept:application/xml',
'content-type:application/xml'
);

echo "<br><br><b>Request Headers</b><br>";
echo 'x-dnsme-requestId: '.time()."<br>".
'x-dnsme-apiKey: '.$apiKey."<br>".
'x-dnsme-requestDate: '.$reqDate."<br>".
'x-dnsme-hmac: '.$secretKey2."<br>".
'accept:application/xml'."<br>".
'content-type:application/xml';

$body = '
<record>
<data>xx.xx.xx.xx</data>
<gtdLocation>Default</gtdLocation>
<id>123456</id>
<name>dummy</name>
<ttl>1800</ttl>
<type>A</type>
</record>
';

echo "<br><br>".$body;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URL);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//curl_setopt($ch, CURLOPT_PUT, 1);
//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$ResponseStr = curl_exec($ch);
curl_close ($ch);
echo "<pre>";
echo $ResponseStr;
?>

Este é um script básico para atualização de registro DNS dinamicamente.Você pode estendê-lo ainda mais para incorporar mais funções.

Então, basicamente, para gerir virtalhosts Apache dinamicamente, você precisa seguintes funcionalidades: 
. * Script para criar / atualizar / removê-las do arquivo de configuração do Apache (httpd) 
. * Atualizar Apache para aplicar as novas configurações que pode ser feito através de uma entrada simples no cron 
Script para * atualizar registros de DNS para refletir as mudanças.

 

Fonte: http://linuxadminzone.com