Translations: "English" |
Home Lab Parte 2: Habilidades y recursos antes de construir uno
Para continuar con la publicación anterior sobre laboratorios en casa antes de comenzar a planificar y construir el mío, me gustaría recomendar un ciertas habilidades para aprender o ganar más conocimiento que considero muy importante tener cuando comencé a construir mi laboratorio en casa.
Aprendiendo Linux
Si estás en TI o planeas hacerlo, no hay una razón válida para no aprender Linux / Unix. ¿Por qué? Está en casi todas partes, por mencionar algunos ejemplos, el sistema operativo de la mayoria de Smart TVs utilizan está basado en Linux, si tienes un smartphone con Android, esta basado en Linux, Apple macOS e iOS se basan en otro Unix que es Darwin. Incluso Windows 10 ahora permite instalar Ubuntu Linux desde su Microsoft Store sin necesidad de utilizar algún software de virtualización adicional como VMware Workstation u otros, para esto utiliza lo que Microsoft llama Windows Subsystem for Linux, que es una interfaz de kernel compatible con Linux.
Si trabajas en Redes o Seguridad de red, ¿adivina qué? La mayoría de las soluciones comerciales para redes o seguridad de red ejecutan Linux o una variante "bajo el capó", por lo que cuando se raliza en una configuración avanzada o procedimiento de resolución de problemas utilizando una línea de comando, la mayoría de las veces se trabaja directamente con un sistema Linux / Unix. Tengo tantas anécdotas "salvando el día" resolviendo problemas muy críticos con soluciones alternativas usando mi conocimiento en Linux.
¿Cómo aprender Linux? Ahora estamos en 2020 cuando buscas "aprender Linux" en Google, se tiene más de 8 millones de resultados:
Entonces la respuesta corta es: con práctica.
La respuesta larga es enfocarse en aprender y sentirse cómodo con la línea de comandos, luego aprender a usar algunas utilidades estándar, como curl, Netcat, por ejemplo. Una habilidad útil después de que te sientas cómodo con la interfaz de la línea de comandos podría ser aprender sobre scripting con bash. Después de aprender cómo realizar algunas tareas, puede ir más allá e intentar automatizar la mayoría de estas, desde configurar un servicio hasta implementar y aprovisionar recursos por completo; en este punto es una excelente opción continuar aprendiendo mas y explorar Python e incluso terminar aprendiendo Ansible.
¿Qué distribución elegir para comenzar a aprender Linux? Es una pregunta que siempre genera debate, e incluso necesitaría un artículo completo. Para simplificarlo, voy a recomendar comenzar con Ubuntu, ya que es una excelente distribución para principiantes. Es importante mencionar que la mayoría de distribuciones de Linux más populares tienen mucha documentación disponible sobre cómo instalarla y cómo operarla en sus sitios web oficiales.
Hay tres diferencias principales que podría mencionar entre cada distribución de Linux:
- Manejo de paquetes
- Rutas de archivos de configuración
- Algunas herramientas de sistema particulares diseñadas para cada distribución.
¿Dónde o cómo ejecutar Linux?
En este punto, no necesitamos equipos dedicados para aprender Linux además de una computadora personal, y quiero sugerir dos opciones, ejecutar Linux localmente. La segunda opción es usar tecnologías en nube para hacerlo.
Ejecutando Linux localmente
- Instalarlo en su computadora quizas usando una configuración de inicio dual e incluso se puede aventurar a usarlo como sistema operativo principal. Una vez que se instala una distribución como Debian, Ubuntu, Centos, por mencionar algunos de los más populares, se puede continuar probando otras distribuciones utilizando virtualización o incluso mejor, use una tecnología de contenedor como Docker. Cubriré esto con más detalle en otra publicación.
- Si utilizas Windows 10, se puede instalar Ubuntu directamente desde Microsoft Store, de esta manera no se necesita crear una instalación de inicio dual (Windows y Linux) ni nada, y se tendrá acceso a una Terminal de Linux donde se puede comenzar a aprender y probar . Se puede encontrar más sobre información aquí: WSL2 Announcement, y la documentatción oficial.
- Software de virtualización: aquí depende del sistema operativo principal que esté utilizando, si es Windows o macOS, se tiene opciones pagas como VMWare Workstation o Fusion, u opciones gratuitas como Virtual Box. ¿Cuál elegir?, depende, si solo se va a ejecutar Linux Virtual Box es más que suficiente, sin embargo, si va a ejecutar imágenes más especializadas como dispositivos virtuales de soluciones comerciales, es más probable que sean compatibles con VMWare.
- Raspberry PI: Con el lanzamiento de Raspberry Pi 4, se tiene especificaciones que pueden llegar hasta 4 GB de RAM, sin embargo, en mi humilde opinión si el presupuesto es una restricción, la edición de 2 GB de RAM debería ser más que suficiente.
Nuevamente, es 2020, si aún no lo ha hecho, es hora de comenzar a adoptar tecnologias de nube. A continuación una lista de cómo ejecutar Linux en entornos Cloud de forma gratuita.
Ejecutar Linux en una nube pública
Amazon Web Services (AWS)
Se puede usar el nivel "Free Tier" hasta por un año desde la creación de la cuenta y su "Compute Cloud" no es el único producto libre, más información [aquí] (https://aws.amazon.com/free/). En este documento se puede encontrar una descripción general completa, que es un buen punto de partida: [Descripción general de los servicios web de Amazon] (https://d1.awsstatic.com/whitepapers/aws-overview.pdf), AWS también ofrece una biblioteca completa de recursos de capacitación sin cargo: [Capacitación digital gratuita] (https://www.aws.training/LearningLibrary?&search=&tab=digital_courses). Todo esto es muy útil tambien si no solo está buscando aprender o mejorar el conocimiento en Linux, sino también si está interesado en una carrera profesional relacionada con las tecnologías de nube.
Google Cloud Platform (GCP)
Hay dos opciones, la primera es después de registrarse, se tiene acceso a un crédito de USD 300.00 para usar cualquier servicio de Google Cloud, que es válido por un año o hasta que se quede sin créditos, lo que ocurra primero. Luego, también, como lo hace AWS, GCP ofrece un nivel gratuito, pero la principal diferencia es que no caduca después de un año, es como mencionan en su sitio web: "El programa Always Free, que ofrece acceso limitado y gratuito a muchos recursos habituales de Google Cloud.". Más detalles aquí: [Nivel gratuito de Google Cloud Platform] (https://cloud.google.com/free/docs/gcp-free-tier). También hay entrenamiento gratuito disponible con Coursera, todos esos detalles aquí: [Capacitación Gratuita] (https://cloud.google.com/training/free-labs#free-offers).
Azure
Podría llamarse una mezcla entre AWS y GCP con respecto a la oferta de nivel gratuito. Se puede usar un grupo de servicios de forma gratuita durante 12 meses y tiene un crédito de USD 200 para usar los servicio que no están en la lista de servicios gratuitos. Pero también hay una lista de otros servicios que siempre son gratuitos, más detalles aquí: [cuenta gratuita de Azure] (https://azure.microsoft.com/es-es/free/). Sin embargo, esos servicios gratuitos no incluyen las instancias de cómputo.
Recuerden que estas tres opciones no solo tienen limitaciones en los recursos de CPU y RAM, sino también en el almacenamiento e incluso en la transferencia de datos, así que tengan cuidado para evitar cargos adicionales e inesperados.
Bonus: Linode
Linode no es una opción gratuita, sin embargo, brinda un costo más predecible, por ejemplo, yo utilizo un "Nanode", que es la oferta más pequeña que tienen por solo USD 5 al mes, y ofrece:
- 1 GB Ram
- 1 CPU Core
- 25 GB SSD
- 1 TB data transfer
- 40 Gbps Network In
- 1000Mbps Network Out
Mi distribución de elección aquí es [Alpine] (https://alpinelinux.org/) que es una distribución de Linux con muy ligera con respecto al uso de recursos.
Se pueden crear una cuenta de Linode usando este [enlace] (https://www.linode.com/?r=c8icsoftf7c3d7973bae429311203cd3b13b4c5b5a9) que incluye mi código de referencia :)
Aprendiendo a Programar
Hace unos años, si trabajas en TI, redes o seguridad de redes, no era necesario saber programar, incluso escuché una vez: "eso solo es necesario si quieres convertirte en programador". Bueno, hoy en la era de la adopción de la nube, las habilidades de programación no solo son necesarias, sino que también son muy valiosas en el mercado profesional, y también se vuelve conveniente cuando uno comienza a trabajar en la automatización de diferentes flujos de trabajo.
Esta es una lista de lenguajes de programación que puedo sugerir que son muy útiles cuando se tiene un laboratorio en casa.
Bash
Shell scripting es un buen comienzo; se puede aprender y desarrollar en Bash para automatizar varias cosas. El primer recurso es el oficial:
Y esta es una lista bastante completa de recursos extra:
Python
No puedo encontrar una razón por la cual no aprender Python, es el lenguaje de programación de alto nivel de propósito general de más rápido crecimiento con alta demanda para el mercado profesional. También es muy recomendable como lenguaje de programación para principantes. Cuenta con un excelente soporte de librerías y una gran comunidad de desarrolladores.
- The Python Tutorial
- Learn Python (Interactive tutorial)
- Automate the Boring Stuff with Python 2nd Edition
GO
Bueno, esta es una preferencia personal, a veces prefiero escribir algunas cosas en Go en lugar de Python, y es porque en comparación con Python, Go es un lenguaje compilado, pero también puede ejecutarse como un lenguaje interpretado.
Gracias por leer.
Los siguientes capítulos de esta serie se han publicado aquí:
- Home Lab Parte 3: Construyendo la primera versión de mi laboratorio en casa
- Home Lab Parte 4: Comprimiendo/Consolidanto mi laboratorio en casa