Amazon AWS es una herramienta muy poderosa, tan poderosa que ha sido la que hemos elegido en Wuaki.tv para llevar el servicio a todos los usuarios.
En las últimas semanas he estado trabajando muy duro con Amazon y Puppet, ya que quiero lograr que nuestra arquitectura sea automatizada y eficiente. Una de las tareas que aun estoy elaborando es la integración entre el Auto-Scalling de Amazon y Puppet ya que cuando se crea un nuevo servidor deseo que puppet lo configure completamente y lo asocie al balanceador correspondiente. Para esto es necesario realizar consultas al API de AWS, mediante el comando ec2-describe-instances. En mi caso lo he realizado así:
ec2-describe-instances --filter "group-name=webservers" --filter "instance-state-code=16" | grep ^INSTANCE | awk '{print $5}'
Este comando me permite obtener los hostnames de nuestras instancias de Amazon que tengan estado “Running”, y que pertenezcan al Grupo de seguridad “webservers”, que luego podemos manipular con un script hecho en bash, perl, ruby, python o cualquier otro lenguaje de nuestra preferencia para agregarlos a nuestro servidor Puppetmaster. Actualmente hago de forma un tanto rudimentaria la provisión de servidores en mi entorno de Puppet consultando cada 10 minutos si se ha creado una nueva instancia y si es así la agrego a al entorno de puppet.