Documentación
Ejemplo de escenario de uso
Alon quiere refrescar todo TurnKey Linux appliances con las últimas actualizaciones de seguridad.
Escribe un script que acepta el nombre de un appliance como argumento, descarga la última versión de Sourceforge, extrae el sistema de archivos raíz, instala la seguridad actualizaciones, reempaca el sistema de archivos raíz en un appliance ISO y carga una nueva versión de la appliance de vuelta a Sourceforge.
Después de probar el script en su estación de trabajo Ubuntu local, pide al Hub que inicie una nueva instancia TurnKey Core (88.1.2.3), transfiere su script e instala cualquier dependencia una vez que todo se prueba para trabajar, crea una nueva copia de seguridad TKLBAM con captura el estado de su servidor maestro de trabajadores.
Alon ejecuta su primera prueba de nubes:
echo core | cloudtask --workers=88.1.2.3 refresh-iso-security-updates
Una vez que confirma que este trabajo de prueba funcionó correctamente, está listo para el gran trabajo de lote que se ejecutará en 10 servidores en paralelo.
Como esta es una tarea rutinaria Alon espera repetir regularmente, crea una plantilla de cloudtask preconfigurada para ella en $HOME/cloudtasks:
$ mkdir $HOME/cloudtasks
$ cd $HOME/cloudtasks
$ cat > refresh-iso << 'EOF'
from cloudtask import Task
class RefreshISO(Task):
DESCRIPTION = "This task refreshes security updates on an ISO"
BACKUP_ID = 123
COMMAND = 'refresh-iso-security-updates'
SPLIT = 10
REPORT = 'mail: cloudtask@example.com alon@example.com liraz@example.com'
HUB_APIKEY = 'BRDUKK3WDXY3CFQ'
RefreshISO.main()
EOF
$ chmod +x ./refresh-iso
$ cat $PATH_LIST_APPLIANCES | ./refresh-iso
About to launch 10 cloud servers to execute the following task:
Parameter Value
--------- -----
jobs 40 (appengine .. zimbra)
command refresh-iso-security-updates
hub-apikey 5YGVPEMHJHU5EA
ec2-region us-east-1
ec2-size m1.small
ec2-type s3
user root
backup-id 123
workers -
overlay -
post -
pre -
timeout -
report mail: cloudtask@turnkeylinux.org liraz@turnkeylinux.org
Is this really what you want? [yes/no] yes
session 11 (pid 29709)
88.178.132.231 (29721): launched new worker
88.214.141.175 (29722): launched new worker
88.15.179.7 (29724): launched new worker
88.229.38.128 (29723): launched new worker
...
45 minutos más tarde, Alon recibe un correo electrónico de Cloudtask que el trabajo ha terminado. En el cuerpo está el registro de sesión detallando si se detectaron errores en cualquier trabajo (por ejemplo, código de salida no cero), cuánto tiempo se llevó a cabo la sesión, etc.
Si lo hubiera querido, Alon podría haber seguido la ejecución de los trabajos de tarea en tiempo real siguiendo los archivos de registro de los trabajadores:
tail -f ~/.cloudtask/11/workers/29721