Mejora de cloud-init con usuario dinámico y contraseña cifrada
Este repositorio se basa en terraform-ubuntu-cloudimage-vsphere-deploy, originalmente creado por Vaughan Delport.
- Puedes ingresar el nombre del usuario directamente o usar una variable para definirlo de forma dinámica en distintos entornos.
- Se añadió una contraseña cifrada utilizando el método SHA-512, en conjunto con
lock_passwd: false, lo cual es obligatorio para que la configuración funcione correctamente. Si la contraseña no está cifrada, el proceso fallará. - Se mantuvo la configuración original de la red y la desactivación de IPv6.
- Si se utiliza el archivo tal como está, es probable que las personas que intenten conectarse por SSH se encuentren con un error similar a este:
Permission denied (publickey).Este error ocurre porque:
No se ha configurado el archivo sshd_config correctamente: No se asegura que la autenticación por clave pública esté habilitada. Permisos incorrectos en el directorio .ssh o el archivo authorized_keys: Si los permisos del directorio .ssh o del archivo authorized_keys no son los correctos, SSH rechazará la clave.
- Se agrega un nuevo archivo cloud-config_new donde se soluciona el problema del acceso por ssh
La configuración ha sido probada con la siguiente versión del proveedor vsphere de Terraform:
source = "hashicorp/vsphere"
version = "2.9.0"
Sin embargo, también es compatible con la versión mencionada en el repositorio original:
source = "terraform-providers/vsphere"
version = "~> 1.11.0"
Para que el archivo cloud-init funcione correctamente, la contraseña debe estar cifrada utilizando el método SHA-512. Además, el campo lock_passwd debe estar configurado como false. Si se omite este paso, la configuración no permitirá el acceso con la contraseña especificada.
Cómo generar la contraseña cifrada: 1- Instala la herramienta whois (que incluye el comando mkpasswd):
sudo apt install whois2- Luego, genera el hash de tu contraseña:
echo "tu_clave" | mkpasswd -m sha-512 -s3- Copia el resultado que te devuelve el comando y úsalo en el archivo cloud-init como el valor de la variable ${password} o directamente en el campo passwd.
Ejemplo: Si tu contraseña es mypassword, el comando te devolverá algo como esto:
$6$abc123$ABCDEFGHIJKLmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvCopia este hash y pégalo en el archivo cloud-config:
users:
- name: ${username} # O si prefieres ingresar el nombre directamente
lock_passwd: false
passwd: $6$abc123$ABCDEFGHIJKLmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvDe esta manera, el usuario podrá iniciar sesión usando la contraseña cifrada, y puedes personalizar el nombre del usuario con una variable o ingresarlo directamente.
- Resaltando la obligatoriedad del cifrado: La contraseña debe estar cifrada con SHA-512 y
lock_passwddebe serfalsepara que el archivo funcione correctamente.
Este proyecto está licenciado bajo la Licencia MIT.
El archivo de licencia del repositorio original se encuentra en este enlace. Asegúrate de consultar el archivo de licencia original para obtener más detalles sobre los términos aplicables al código original.
Las nuevas mejoras y modificaciones realizadas en este repositorio están sujetas a la Licencia MIT, mientras que el código original sigue bajo la licencia especificada en el repositorio original.