Creación de Maquina virtual.
Aprovecharé que hace unas semanas me contactó alguien para dar apoyo a su prueba de ingreso laboral y por tratarse de fin de semana, no envíe respuestas hasta el lunes a primera hora, pero la falta de voy a decir comunicación (y no falta de juicio o seriedad) cuando envié la respuesta me contestaron que no era necesaria, ya que había contratado a alguien más para que resolviera el cuestionario y bueno, las preguntas aunque básicas ya quedaron resueltas e intentaré entonces aprovecharlas y adornarlas un poco para que justifiquen un pequeño tutorial.
La prueba de capacidades técnicas planteaba un pequeño escenario, que considero practico para el aprendizaje y comento a continuación:
Consistía en:
“Instalar cualquier herramienta de virtualización para crear una máquina en la que se debe instalar un sistema operativo Linux a consideración del participante.
Una vez realizado, se debe garantizar la respectiva conexión de puertos para acceder desde alguna de las interfaces de del equipo anfitrión a los servicios que sean creados y expuestos en la máquina virtual.”
Procedemos entonces a ello, Los métodos más comunes para la creación de máquinas virtuales son:
MacOS X: VMware Fusion, Parallels Desktop y VirtualBox de Oracle. Linux: KVM quemu, VMWare, Virtualbox de Oracle. Windows: VMWare, Virtualbox de Oracle y Microsoft Hyper-v
Mi entorno de elección es obviamente Linux y aunque Virtualbox en lugar de KVM/quemu supone un paso adicional (la instalación de virtualbox), me decanto por virtualbox
Procedimiento: Descargar e instalar Virtualbox
Descargar e instalar virtualbox desde: https://www.virtualbox.org/wiki/Downloads recordar descargar e instalar el VirtualBox Extension Pack https://download.virtualbox.org/virtualbox/6.1.32/Oracle_VM_VirtualBox_Extension_Pack-6.1.32.vbox-extpack
En mi caso utilizo Fedora Linux, con lo que la instalación puede ser bastante simple, bastará con:
|
|
Indicaciones para la instalación de Virtualbox en otras distribuciones Linux: https://www.virtualbox.org/wiki/Linux_Downloads
y para tener control del entorno y total flexibilidad planteo gestionar la VMs a través de vagrant, así que se hace necesario descargar e instalar vagrant desde https://www.vagrantup.com/downloads
Instalación de vagrant en Fedora:
|
|
Creación de la maquina virtual,
Características de la VM:
OS seleccionado: Rocky Linux 8,
Nombre de la VM: vmrocky
Host name: prueba
Tamaño de memoria ram asignado: 2gb.
script de inicio: comandos.sh (este contendrá los comandos iniciales que se desee ejecutar al inicio de la máquina, por ejemplo actualizaciones, instalación de paquetes o configuraciones generales.)
Redirrección de puertos: del 8088 al 8080 de localhost
Tamaño del disco: por defecto de la imagen
Puerto SSH: redirección por defecto a localhost:2222
Script de instalación:
|
|
Conexión SSH a la VM
Ahora, también se solicita que el acceso a la máquina Linux se debe hacer por SSH, sin usar password, usando una llave SSH. Se debe generar un par de llaves SSH (llave pública y llave privada) con formato RSA y tamaño 4096 bits. Esta llave debe ser agregada al usuario con el cual se accederá a la máquina virtual para realizar las posteriores actividades de la prueba.
para cumplir con lo solicitado, se crea una llave RSA de 4096 bits y se copia a la carpeta donde hemos puesto el archivo de configuración Vagrant, que por defecto será la carpeta compartida de la VM con el host
|
|
Por defecto la conexión en vagrant se realiza utilizando una llave en lugar de clave, lo que cubriría la solicitud, pero para ingresar de manera automática desde cualquier folder sin recurrir a las llaves de vagrant y en su lugar usar la llave creada anteriormente se hace lo siguiente:
|
|
de esta forma el sistema queda preparado para conectarse desde el entorno configurado de vagrant y desde cualquier fonder con las llaves ssh del usuario así:
ssh -l vagrant -p 2222 127.0.0.1
Tareas de administración de sistemas Linux
-
Instalar un servidor web (Preferiblemente Nginx o Apache)
elegido nginx por requerir poca ram para su funcionamiento y ser de fácil configuración
-
Cambiar el puerto por defecto del servidor para que sea 8088 archivo de configuración por defecto /etc/nginx/nginx.conf
-
En la página web por defecto del servidor instalado poner un texto con los siguientes datos:
A). Breve descripción de cómo instaló el servidor Web, ¿qué herramientas o comandos usó?, ¿qué inconvenientes encontró?
En nginx el puerto por defecto es el 80 y se gestiona desde el archivo nginx.conf o a través de cada archivo vhost, en la instalación por defecto sólo es necesario cambiar el puerto en el archivo nginx.conf, sin embargo es necesario tener en consideración que en el caso de sistemas RHEL o basados en este, selinux se encuentra activo y configurado para controlar el acceso a puertos a través de servicios, así que es necesario o configurar las reglas de selinux o desabilitarlo, para este caso se elige desabilitarlo editando el archivo /etc/selinux/config y reiniciando la máquina.
Los comandos utilizados fueron:
Instalación de nginx
1 2
sudo su - dnf install -y nginx
Configuración de selinux
1
sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config
Cambio de puerto en nginx
1
sed -i 's/listen 80/listen 8088/g' /etc/nginx/nginx.conf
Habilitar nginx y arrancar el servicio
1
systemctl enable --now nginx
B). Los siguientes datos de la máquina en la que está instalado el servidor web y que comandos de Linux usó para averiguarlos: ¿Qué Sistema Operativo tiene la máquina?
Información:
|
|
Comando utilizado
|
|
Espacio en Disco
Información:
|
|
Comando utilizado
|
|
Cantidad de memoria RAM
Información:
|
|
Comando:
|
|
Versión del kernel de Linux
Información:
|
|
Comando:
|
|
Características del CPU
Información:
|
|
Comando:
|
|
IP Privada
Información:
|
|
comando:
|
|
Resumen de realizados para el archivo comandos.sh
|
|
Instalación de VBoxGuestAdditions
|
|
A este punto se debe reiniciar la máquina para que tome los cambios de VBoxLinuxAdditions.run
Estos datos deben verse usando localhost o el hostname del equipo cuyos puertos de servicio serán redirigidos a la máquina virtual.
Para presentar el archivo index.html a través de nginx :
|
|
y desde la máquina anfitriona dirigirse a http://127.0.0.1:8080
Tareas de administración Linux
Crear el grupo de usuarios cloud. Crear el usuario ninja con los siguientes datos: a. Grupo principal: cloud b. Nombre completo: Cloud Ninja c. Contraseña: testninja
Script:
|
|
Crear un cronjob para el usuario ninja que guarde cada 15 minutos la fecha en formato Unix time y la carga de CPU en el archivo load.txt, este archivo deberá estar ubicado en el directorio home del usuario ninja. Asegurarse que en el archivo quede el histórico de todas la carga de la CPU
|
|
Tareas de DevOps
- Instalar y configurar Git
- Crear un repositorio en GitHub (si no tiene cuenta en Github debe crearla).
- Configurar el acceso a Github desde la máquina virtual usando SSH
|
|
Inicializar repositorio local
|
|
Crear un branch con el contenido alterno de la página. Enviar este branch al repositorio en Github.
Hacer un Pull request entre ese branch y el master en GitHub.
Creando rama del repositorio alternol
|
|
Aquí desde tu cuenta en https://github.com/ puedes hacer el merge
|
|