freelinuxdistrodeployed / LDT

Linux Deployed Tool
http://freelinuxdistrodeployed.github.io/LDT
Apache License 2.0
6 stars 2 forks source link

Envío de información del host al servidor. #17

Closed juanAFernandez closed 9 years ago

juanAFernandez commented 9 years ago

A la hora de usar LDT contamos con que ya disponemos de la información de los hosts, principalmente ip y nombre de host. Entonces surge el siguiente problema: Cuando un nuevo equipo se conecte, ¿debemos de apuntar a mano su ip (teniendo en cuenta que puede estar tras un DHCP y a mucha distancia fisicamente) y nombre y llevarlos e introducirlos al servidor a mano? Obviamente debemos de poder automatizar esto, deberíamos tener algún mecanismo, un socket (Java) o algo parecido que esté escuchando en el servidor para así desde cualquier host conociendo la ip del servidor poder enviarle la información y que sea el servidor el que se encargue de escribir los datos en el fichero host, hacer una prueba de ping y enviar el resultado de vuelta al host.

Si nos ponemos en situación:

Se conecta un equipo a la red (este equipo solo contiene un fichero con la clave pública del servidor y su ip), entonces envía una petición de registro a LDT (este la escucha, escribe en hosts , prueba la conectividad y envia un Hello, welcome!), el usuario ve el saludo verificando que ese equipo ya se encuentra bajo el control de LDT.

¿Qué os parece? ¿Alguna idea? Creo recordar que en alguna asignatura vimos Socket Java que nos podrían servir, seguro que también se pueden implementar en python y que habrá otras muchas alternativas. Sería interesante poder desarrollarlo para el próximo hito.

juanAFernandez commented 9 years ago

He estado echándole un vistazo JSON (intercambio ligero de datos con JavaScript), hay módulos para codificar y decodificar en Python. Pero lo mejor parece que es sockets en python. He hecho alguna prueba, hay código en en el repositorio en envioInfoClienteServidor.

juanAFernandez commented 9 years ago

Existía un problema en las máquinas de Azure para realizar la conexión y es que los puertos debían de abrirse a mano en el cortafuegos que pone delante de todas la máquinas y en el que por defecto sólo se habilita el n. 22 para SSH. El proceso de comunicación de sockets funcionará en principio a través del puerto 12345 que deberá estar habilitado en todas las máquinas.

juanAFernandez commented 9 years ago

Había un problema para la conexión ya que era difícil obtener el nombre de dominio completo de un hots para añadirlo al inventario de equipos de ansible (parecía que era necesario). No es necesario añadir este, se puede añadir un alias que si es fácil de conseguir como el nombre de la máquina (info que se envía con el socket). Entonces lineas como Host22014.cloudapp.net ansible_ssh_host=23.102.31.130 ansible_ssh_user=usuario quedarán como Host2 ansible_ssh_host=23.102.31.130 ansible_ssh_user=usuario

donde Host2 es sólo un alias.

juanantc commented 9 years ago

Se ha conseguido resolver los problemas: client.py server.py