Zend_Service_Rackspace_Servers es una clase que proporciona una
API simple para administrar los Rackspace
Cloud Servers. Usando esta clase puede:
Crear nuevos servidores
Listar y obtener información de cada servidor
Eliminar un servidor
Administrar las direcciones IP públicas/privadas de un servidor
Redimensionar la capacidad del servidor
Reiniciar un servidor
Crear nuevas imágenes para un servidor
Administrar la copia de seguridad de un servidor
Crear un grupo de servidores para compartir las direcciones IP para una arquitectura de alta disponibilidad
Un servidor es una instancia de máquina virtual en el sistema Cloud Servers. Flavor e imagen son elementos obligatorios al crear un servidor.
Un servidor se administra usando la clase Zend_Service_Rackspace_Servers_Server.
Un flavor es una configuración de hardware disponible para un servidor. Cada flavor tiene una combinación única de espacio en disco, capacidad de memoria y prioridad de tiempo de CPU.
Una imagen es una colección de archivos usados para crear o reconstruir un servidor. Rackspace proporciona de forma predeterminada varias imágenes de sistema operativo prediseñadas. También puede crear imágenes personalizadas a partir de servidores cloud que haya lanzado. Estas imágenes personalizadas son útiles para propósitos de copia de seguridad o para producir imágenes de servidor “de oro” si planea desplegar una configuración de servidor particular con frecuencia.
Una imagen se administra usando la clase Zend_Service_Rackspace_Servers_Image.
Se puede definir una programación de copia de seguridad para crear imágenes del servidor a intervalos regulares (diarios y semanales). Las programaciones de copia de seguridad son configurables por servidor.
Las direcciones IP públicas pueden compartirse entre varios servidores para su uso en distintos escenarios de alta disponibilidad. Cuando una dirección IP se comparte con otro servidor, las restricciones de red de la nube se modifican para permitir que cada servidor escuche y responda en esa dirección IP (opcionalmente puede especificar que se modifique también la configuración de red del servidor de destino). Las direcciones IP compartidas pueden usarse con muchas utilidades estándar de heartbeat (por ejemplo, keepalived) que monitorean fallos y gestionan el failover de IP.
Un grupo de IP compartida es una colección de servidores que pueden compartir IPs con otros miembros del grupo. Cualquier servidor de un grupo puede compartir una o más IPs públicas con cualquier otro servidor del grupo. Con la excepción del primer servidor de un grupo de IP compartida, los servidores deben lanzarse dentro de grupos de IP compartida. Un servidor solo puede ser miembro de un grupo de IP compartida.
Un grupo de IP compartida se administra usando la clase Zend_Service_Rackspace_Servers_SharedIpGroup.
Para usar esta clase debe pasar el nombre de usuario y la clave de la API de Rackspace en la construcción de la clase.
$user = 'username'; $key = 'secret key'; $rackspace = new Zend_Service_Rackspace_Servers($user,$key);
Para crear un nuevo servidor puede usar el método createServer.
$data = array (
'name' => 'test',
'imageId' => '49',
'flavorId' => '1',
);
$server= $rackspace->createServer($data);
if (!$rackspace->isSuccessful()) {
die('ERROR: '.$rackspace->getErrorMsg());
}
printf("Server name : %s\n",$server->getName());
printf("Server Id : %s\n",$server->getId());
printf("Admin password : %s\n",$server->getAdminPass());
Este ejemplo crea un servidor con nombre test, imageId 49, y
flavorId 1. Los atributos name, imageId y
flavorId son obligatorios para crear un nuevo servidor. El resultado de
createServer es una instancia de
Zend_Service_Rackspace_Servers_Server.
Para obtener las direcciones IP pública y privada de un servidor puede usar el método getServerIp.
$id = '20054631';
$ips = $rackspace->getServerIp($id);
if (!$rackspace->isSuccessful()) {
die('ERROR: '.$rackspace->getErrorMsg());
}
echo "Private IPs:\n";
print_r($ips['private']);
echo "Public IPs:\n";
print_r($ips['public']);
Este ejemplo obtiene las direcciones IP del servidor con Id 20054631. El resultado de getServerIp es un arreglo asociativo con las claves 'private' y 'public' que contienen todas las direcciones IP privadas y las direcciones IP públicas del servidor.
Para obtener la lista de todos los servidores disponibles puede usar el método listServers.
$servers= $rackspace->listServer(true);
if (!$rackspace->isSuccessful()) {
die('ERROR: '.$rackspace->getErrorMsg());
}
foreach ($servers as $srv) {
printf("Name : %s\n",$srv->getName());
printf("Server Id : %s\n",$srv->getId());
printf("Image Id : %s\n",$srv->getImageId());
printf("Flavor Id : %s\n",$srv->getFlavorId());
printf("Status : %s (%d\%)\n",$srv->getStatus(),$srv->getProgress());
}
-
changeBackupSchedule(string $id, string $weekly, string $daily); -
Esta operación crea una nueva programación de copia de seguridad o actualiza una existente para el servidor especificado. Devuelve true en caso de éxito, false en caso de error.
$id es el ID del servidor
$weekly, el día de la semana para la copia de seguridad (por ejemplo "THURSDAY")
$daily, especifica las horas para la copia de seguridad (por ejemplo "H_0400_0600")
-
changeServerName(string $id, string $name); -
Cambia el nombre de un servidor. Devuelve true en caso de éxito, false en caso de error.
$id es el ID del servidor
$name es un parámetro opcional que especifica el nuevo nombre del servidor
-
changeServerPassword(string $id, string $password); -
Cambia la contraseña de administrador de un servidor. Devuelve true en caso de éxito, false en caso de error.
$id es el ID del servidor
$password es un parámetro opcional que especifica la nueva contraseña de administrador del servidor
-
confirmResizeServer(string $id); -
Confirma el redimensionamiento de un servidor. Durante una operación de redimensionamiento, el servidor original se guarda durante un período de tiempo para permitir la reversión si hay algún problema. Una vez que el servidor redimensionado ha sido probado y se ha confirmado que funciona correctamente, use esta operación para confirmar el redimensionamiento. Tras la confirmación, el servidor original se elimina y no se puede revertir. Todos los redimensionamientos se confirman automáticamente después de 24 horas si no se confirman o revierten explícitamente. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
-
createImage(string $serverId,string $name); -
Crea una imagen a partir de un servidor. Devuelve una nueva instancia de
Zend_Service_Rackspace_Servers_Image. En caso de error el retorno es false.$serverId es el Id del servidor a usar para crear la imagen.
$name, es el nombre de la imagen a crear
-
createSharedIpGroup(string $name, string $serverId); -
Esta operación crea un nuevo grupo de IP compartida. Tenga en cuenta que, en una solicitud de creación, el grupo de IP compartida puede crearse vacío o puede poblarse inicialmente con un único servidor. Devuelve el grupo de IP compartida como instancia de
Zend_Service_Rackspace_Servers_SharedIpGroupEn caso de error el retorno es false.$name es el nombre del grupo de IP compartida a crear.
$serverId es el Id del servidor.
-
createServer(array $data, $metadata=array(),$files=array()); -
Crea un servidor con los atributos especificados en $data. También puede especificar parámetros opcionales: metadata y files. Metadata es un arreglo que contiene clave/valor de metadatos relacionados con el servidor y files es un arreglo que contiene las rutas de algunos archivos a subir al servidor. La sintaxis usada para la subida de los archivos es 'serverPath' => 'localPath'. Devuelve una nueva instancia de
Zend_Service_Rackspace_Servers_Server. En caso de error el retorno es false.$data contiene los parámetros para el servidor. Los atributos obligatorios para crear un nuevo servidor son:
name, contiene el nombre del servidor
flavorId, contiene el Id del flavor a usar
imageId, contiene el Id de la imagen a usar
$metadata, contiene el arreglo de información de metadatos
$files, contiene la ruta de los archivos a subir en el servidor usando la sintaxis 'serverPath' => 'localPath'.
-
disableBackupSchedule(string $id); -
Deshabilita la copia de seguridad de un servidor. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
-
deleteImage(string $id); -
Elimina una imagen. Devuelve true en caso de éxito, false en caso de error.
$id es el Id de la imagen.
-
deleteSharedIpGroup(string $id); -
Elimina un grupo de IP compartida. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del grupo de IP compartida.
-
deleteServer(string $id); -
Elimina un servidor. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
-
getBackupSchedule(string $id); -
Devuelve la programación de copia de seguridad de un servidor. El retorno es un arreglo asociativo con los siguientes valores: enabled, weekly, daily. En caso de error el retorno es false.
$id es el Id del servidor.
-
getFlavor(string $flavorId); -
Devuelve la información sobre un flavor. El retorno es un arreglo asociativo con los siguientes valores: id, ram, disk, name. En caso de error el retorno es false.
$flavorId es el Id del flavor.
-
getImage(string $id); -
Devuelve una imagen como instancia de
Zend_Service_Rackspace_Servers_Image. En caso de error el retorno es false.$id es el Id de la imagen.
-
getSharedIpGroup(string $id); -
Devuelve el grupo de IP compartida como instancia de
Zend_Service_Rackspace_Servers_SharedIpGroupEn caso de error el retorno es false.$id es el Id del grupo de IP compartida.
-
getServer(string $id); -
Devuelve el servidor especificado por el Id como instancia de
Zend_Service_Rackspace_Servers_Server. En caso de error el retorno es false.$id es el Id del servidor.
-
getServerIp(string $id); -
Devuelve las direcciones IP pública y privada de un servidor. Devuelve un arreglo asociativo que contiene las claves 'public' y 'private' para las direcciones IP. En caso de error el retorno es false.
$id es el Id del servidor.
-
getServerPrivateIp(string $id); -
Devuelve las direcciones IP privadas del servidor. Devuelve un arreglo asociativo que contiene las direcciones IP. En caso de error el retorno es false.
$id es el Id del servidor.
-
getServerPublicIp(string $id); -
Devuelve las direcciones IP públicas del servidor. Devuelve un arreglo asociativo que contiene las direcciones IP. En caso de error el retorno es false.
$id es el Id del servidor.
-
listFlavors(boolean $details=false); -
Devuelve todos los flavors disponibles como arreglo asociativo. En caso de error el retorno es false.
Si $details es true devuelve una lista detallada, si es false devuelve solo el name y el Id del flavor.
-
listImages(boolean $details=false); -
Devuelve todas las imágenes disponibles como instancia de
Zend_Service_Rackspace_Servers_ImageListEn caso de error el retorno es false.Si $details es true devuelve una lista detallada, si es false devuelve solo el name y el Id de la imagen.
-
listServer(boolean $details=false); -
Devuelve todos los servidores disponibles con una nueva instancia de
Zend_Service_Rackspace_Servers_ServerList. En caso de error el retorno es false.Si $details es true devuelve una lista detallada, si es false devuelve solo el name y el Id del servidor.
-
listSharedIpGroups(boolean $details=false); -
Devuelve todos los grupos de IP compartida como instancia de
Zend_Service_Rackspace_Servers_SharedIpGroupListEn caso de error el retorno es false.Si $details es true devuelve una lista detallada, si es false devuelve solo el name y el Id del grupo de IP compartida.
-
rebootServer(string $id, boolean $hard=false); -
Reinicia un servidor. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
Si $hard es false (predeterminado) el servidor se reinicia en modo suave. Esto significa que se señaliza al sistema operativo para reiniciarse, lo que permite un apagado ordenado de todos los procesos. Si $hard es true el servidor se reinicia en modo forzado. Un reinicio forzado equivale a un ciclo de apagado y encendido del servidor.
-
rebuildServer(string $id, string $imageId); -
Reconstruye un servidor. La función de reconstrucción elimina todos los datos del servidor y los reemplaza con la imagen especificada, el Id del servidor y las direcciones IP se mantendrán iguales. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
$imageId es el nuevo Id de imagen del servidor.
-
resizeServer(string $id, string $flavorId); -
Redimensiona un servidor. La función de redimensionamiento convierte un servidor existente a un flavor diferente, en esencia, escalando el servidor hacia arriba o hacia abajo. El servidor original se guarda durante un período de tiempo para permitir la reversión si hay algún problema. Todos los redimensionamientos deben probarse y confirmarse explícitamente, momento en el cual el servidor original se elimina. Todos los redimensionamientos se confirman automáticamente después de 24 horas si no se confirman o revierten explícitamente. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
$flavorId es el nuevo Id de flavor del servidor.
-
revertResizeServer(string $id); -
Revierte el redimensionamiento de un servidor. Durante una operación de redimensionamiento, el servidor original se guarda durante un período de tiempo para permitir la reversión si hay algún problema. Si determina que hay un problema con un servidor recién redimensionado, use esta operación para revertir el redimensionamiento y volver al servidor original. Todos los redimensionamientos se confirman automáticamente después de 24 horas si no se han confirmado explícitamente ni revertido. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
-
shareIpAddress(string $id, string $ip, string $groupId, boolean $configure=true); -
Comparte una dirección IP para un servidor. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
$ip es la dirección IP a compartir.
$groupId es el Id del grupo a usar.
Si el atributo $configure se establece como true, el servidor se configura con la nueva dirección, aunque la dirección no queda habilitada. Tenga en cuenta que configurar el servidor sí requiere un reinicio.
-
unshareIpAddress(string $id, string $ip); -
Deja de compartir una dirección IP de un servidor. Devuelve true en caso de éxito, false en caso de error.
$id es el Id del servidor.
$ip es la dirección IP a compartir.
-
updateServer(string $id,string $name=null,string $password=null); -
Cambia el nombre y/o la contraseña de administrador de un servidor. En caso de error el retorno es false.
$id es el ID del servidor
$name es un parámetro opcional que especifica el nuevo nombre del servidor
$password es un parámetro opcional que especifica la nueva contraseña de administrador del servidor
Ejemplo 64.115. Autenticar
Comprueba si el nombre de usuario y la clave son válidos para la autenticación de Rackspace.
$user = 'username';
$key = 'secret key';
$rackspace = new Zend_Service_Rackspace_Servers($user,$key);
if ($rackspace->authenticate()) {
printf("Authenticated with token: %s",$rackspace->getToken());
} else {
printf("ERROR: %s",$rackspace->getErrorMsg());
}
Ejemplo 64.116. Crear un servidor con información de metadatos y subida de un archivo
Crea un servidor con información de metadatos y sube el archivo build.sh desde la ruta local /home/user a la ruta remota /root.
$data = array (
'name' => 'test',
'imageId' => '49',
'flavorId' => '1',
);
$metadata = array (
'foo' => 'bar',
);
$files = array (
'/root/build.sh' => '/home/user/build.sh',
);
$server= $rackspace->createServer($data,$metadata,$files);
if (!$rackspace->isSuccessful()) {
die('ERROR: '.$rackspace->getErrorMsg());
}
$publicIp= $server->getPublicIp();
printf("Server name : %s\n",$server->getName());
printf("Server Id : %s\n",$server->getId());
printf("Public IP : %s\n",$publicIp[0]);
printf("Admin password : %s\n",$server->getAdminPass());
Ejemplo 64.117. Reiniciar un servidor
Reinicia un servidor en modo forzado (equivale a un ciclo de apagado y encendido del servidor).
$flavors= $rackspace->rebootServer('server id',true)
if (!$rackspace->isSuccessful()) {
die('ERROR: '.$rackspace->getErrorMsg());
}
echo "The server has been rebooted successfully";
Ejemplo 64.118. Listar todos los flavors disponibles
Lista todos los flavors disponibles con toda la información detallada.
$flavors= $rackspace->listFlavors(true);
if (!$rackspace->isSuccessful()) {
die('ERROR: '.$rackspace->getErrorMsg());
}
print_r($flavors);