Creación de una máquina virtual

Sigamos con el articulo anterior donde hablabamos de aprender Azure en 21 pasos o algo asi por el estilo, hoy veremos, como crear maquinas virtuales

¿Listo para ver lo rápido que se puede configurar un servidor web en Azure? En este capítulo, nos sumergiremos directamente en una de las solicitudes más comunes cuando se trata de VM: la creación de un servidor web básico. Esta carga de trabajo es un gran ejemplo de los componentes básicos de la infraestructura como servicio (IaaS) en Azure.
Suponga que usted trabaja en una pizzería que quiere expandir sus operaciones y aceptar pedidos en línea para entregar a domicilio o para llevar. Para generar presencia en línea, necesita un sitio web. En las primeras partes de este libro, exploraremos las diferentes funciones y servicios en Azure que le permiten compilar y ejecutar tanto las aplicaciones web IaaS como Plataforma como servicio (PaaS). Puede empezar a tomar decisiones informadas sobre cuándo compilar y ejecutar una VM para accionar un sitio web y cuándo puede usar PaaS para hacerlo. No obstante, el primer paso es crear un servidor web.
En este capítulo, creará una VM Ubuntu Linux e instalará un servidor web básico. No se preocupe por tener que hacerla en Linux: al final del capítulo en el ejercicio de laboratorio creará una VM Windows. Ubuntu es una plataforma de servidor web común y es una buena forma de aprender acerca de la autenticación de claves públicas SSH. A continuación, verá cómo abrir un puerto de red para que los clientes accedan a su sitio web en Internet. En la figura 2.1 se muestra una descripción general de este entorno básico.

Conceptos básicos de la configuración
de la máquina virtual
Las máquinas virtuales son uno de los bloques de creación más comunes que utilizará cuando empiece a ejecutar aplicaciones en la nube. ¿Por qué? Suelen ser territorio conocido. La mayoría de los departamentos de TI ejecutan muchas cargas de trabajo utilizando Hyper-V o VMware en un entorno local, por lo que es probable que ya tenga cierta experiencia en la creación y ejecución de máquinas virtuales. Las organizaciones suelen dar sus primeros pasos en Azure con máquinas virtuales, ya que las cargas de trabajo IaaS no requieren el gran ajuste mental que hay que hacer cuando se empiezan a ejecutar cargas de trabajo PaaS.
Existen soluciones para migrar máquinas virtuales desde un entorno local como Hyper-V o VMware a Azure, pero antes de dejarse llevar por las posibilidades de Azure (algunas de las cuales exploraremos en capítulos posteriores), veamos algunos aspectos básicos. Estas páginas siguientes pueden parecer consideraciones y opciones conocidas que tiene con las máquinas virtuales locales. Si es así, ¡genial! Si esto es nuevo, no se preocupe; gran parte de la administración se obtiene en Azure, y cosas como las redes virtuales suelen crearse y configurarse una vez y luego se dejan tranquilas. En los próximos capítulos profundizaremos en cada área, así que respire hondo y vaya paso a paso.

Regiones y opciones de disponibilidad
Azure está dividido en regiones de todo el mundo, y cada región tiene uno o más centros de datos. Estos centros de datos entregan los recursos básicos de procesamiento, almacenamiento y red para ejecutar sus aplicaciones y cargas de trabajo. Azure se ejecuta en más de 50 regiones, y la lista crece cada pocos meses. Con tantas regiones, la idea es que pueda implementar aplicaciones cerca de sus empleados o clientes. Esta disponibilidad regional reduce la latencia y mejora la experiencia del usuario final.
Una región de Azure puede no ofrecer todos los servicios disponibles en Azure. Con cientos de servicios disponibles, el conjunto más común de servicios básicos suele estar en todas partes, pero los servicios nuevos o de nicho suelen aparecer con el tiempo. Mientras planifica sus aplicaciones en Azure, consulte la disponibilidad de los productos por región en https://azure.microsoft.com/global-infrastructure/services.
En el capítulo 8, veremos algunas de las opciones de alta disponibilidad, como los conjuntos de disponibilidad y las zonas de disponibilidad. Estas opciones de redundancia permiten a Azure distribuir varias instancias de sus máquinas virtuales o aplicaciones dentro de un único centro de datos o en toda una región. Esta capacidad le permite definir su tolerancia a las actualizaciones de mantenimiento o a los errores de hardware. En los primeros capítulos de este libro, normalmente solo creará una o dos máquinas virtuales, así que aún no se preocupe por estas opciones de disponibilidad.

Imágenes de VM
Para crear una máquina virtual (VM), necesita un punto de partida. Normalmente, este punto de partida se reduce a la elección del sistema operativo: Windows o Linux. Luego viene la elección de qué versión de Windows usar (como Windows Server 2016 o 2019) o qué distribución de Linux usar (como Ubuntu, Red Hat Enterprise Linux o SUSE).
Una imagen (un paquete de SO preconfigurado con opciones de configuración básicas aplicadas) es ese punto de partida. Azure contiene cientos de estas imágenes precompiladas en Azure Marketplace para utilizarlas al crear máquinas virtuales. Con frecuencia, se pueden aplicar las licencias de Windows existentes, dependiendo de su modelo de licencia actual, o se puede optar por el apoyo adicional de Canonical para ejecutar Ubuntu Linux o las actualizaciones de Red Hat, por ejemplo.
Para simplificar y acortar las cosas para que pueda completar estas lecciones en una hora de almuerzo, usará estas imágenes precompiladas en Azure a lo largo del libro. En el mundo real, probablemente querrá personalizar las cosas para adaptarlas a las necesidades y requisitos de su empresa. Para ello, a menudo creará sus propias imágenes de máquinas virtuales. El flujo de trabajo para crear y administrar la máquina virtual es el mismo que con las imágenes de Azure Marketplace, pero a menudo, crear sus propias imágenes requiere mucha planificación y luego horas de configuración, generalización y captura de sus propias imágenes por adelantado.

Pruébelo ahora
He aquí algunas ideas en las que debe pensar cuando planifique aplicaciones en Azure. Suenan básicas y, en muchas ocasiones, es posible que tome estas decisiones de forma automática, sin pensarlo mucho. Pero sigue siendo importante entender las necesidades de su aplicación antes de empezar a crear y ejecutar aplicaciones.

– ¿En qué regiones debe funcionar su aplicación? ¿Tiene una gran concentración de usuarios en una región específica? ¿Cómo ofrecerá la redundancia?
Si está desarrollando aplicaciones internas, ejecútelas en la región de Azure más cercana a nuestros usuarios. Por ejemplo, si tiene una oficina importante en Houston, Texas, (quizá le gusten los cohetes), ejecute sus aplicaciones y máquinas virtuales de Azure en el centro-sur de los Estados Unidos.
Si está desarrollando aplicaciones externas, ¿prevé tener clientes de determinadas regiones? Esta configuración puede requerir múltiples instancias implementadas en diferentes regiones (y también proporcionar alta disponibilidad).
– ¿Necesita proporcionar muchas personalizaciones de VM? ¿Cuánto tiempo demora probar y validar todos esos cambios? ¿Qué necesidades empresariales los impulsan?
En un entorno tradicional local, se suele dedicar mucho tiempo a crear imágenes preconfiguradas para las implementaciones. En la nube, intente reducir este tiempo. Las imágenes precompiladas de Azure incluyen las actualizaciones de seguridad más recientes; se prueban para usted y luego se replican geográficamente para lograr los tiempos de implementación más rápidos.

Tamaños de las VM
Hay varias familias de tamaños de VM en Azure. Estas familias contienen grupos de tipos de hardware virtuales similares diseñados para ciertas cargas de trabajo. A veces, los tamaños se actualizan a medida que hay disponibles nuevas ofertas de hardware y cargas de trabajo, pero las familias principales siguen siendo las mismas. Los tipos de familia son los siguientes:
¡ De uso general: ideal para desarrollo y pruebas o para bases de datos y servidores web de producción de bajo uso.
¡ Optimizado para proceso: CPU de alto rendimiento, como para servidores de aplicaciones de producción.
¡ Optimizado para memoria: opciones de memoria más grandes, como cuando es necesario ejecutar grandes bases de datos o tareas que requieren un gran número de procesos de información in-memory.
¡ Optimizado para almacenamiento: rendimiento intensivo y de baja latencia del disco para aplicaciones con uso intensivo del disco.
¡ GPU: VM especializadas en gráficos basadas en NVIDIA, si necesita representación de gráficos o video.
¡ Informática de alto rendimiento: en pocas palabras ¡mucho de todo! Una gran cantidad de CPU, memoria y rendimiento de red para las cargas de trabajo más exigentes.
¿Qué tan grande puede ser la VM que cree en Azure? Las cosas mejoran constantemente, pero cuando se trata de crear la VM más grande, puede crear una VM serie Mv2 (parte de la familia optimizada para memoria) con 208 CPU virtuales y 5,7 TiB de memoria. Eso sería un servidor de Minecraft bastante decente, ¿no lo cree?
Lo importante a entender aquí es que el número de VM y la cantidad de CPU y memoria que puede solicitar en Azure solo están limitados por su presupuesto. Probablemente le sería muy difícil crear VM de este tamaño en el ámbito local tradicional.
Al crear una máquina virtual en Azure Portal o mediante la CLI o PowerShell, tiene que elegir qué tamaño de VM utilizar. Un tamaño común de VM, como D2s_v3, se usa a menudo como predeterminada para comenzar. Esto es probablemente demasiada potencia para un servidor web básico, pero es rápido para crear la VM e instalar los paquetes requeridos.
Azure Portal le permite filtrar en función de un tamaño aproximado (por ejemplo, pequeño, mediano o grande) o una familia específica (como las VM de uso general u optimizadas para memoria). También se muestra una estimación del costo mensual para que se haga una idea de lo que cuesta cada máquina virtual. Preste atención a los costos, ya que pueden acumularse rápidamente. Dentro de lo razonable, es posible administrar cambiar el tamaño de la VM después de que la VM esté en funcionamiento, aunque la máquina virtual tiene que apagarse y reiniciarse para completar el proceso.

Ahorrar costos de las VM
Las máquinas virtuales creadas por defecto suelen ser demasiado potentes para lo que necesita, pero son rápidas de implementar y utilizar, lo que ayuda a reducir la cantidad de tiempo que pasa instalando paquetes en su hora de almuerzo.
En el mundo real, preste atención a las demandas de memoria, CPU y almacenamiento de su máquina virtual. Cree VM del tamaño correcto. Este enfoque es el mismo que en el ámbito local, donde puede terminar con VM que tienen mucha más memoria o muchas más CPU virtuales asignadas de lo que necesitan.
También hay un tipo especial de VM en Azure: las serie B. Estos tamaños de VM utilizan recursos de memoria y CPU expandibles, además puede obtener créditos por procesos no utilizados. Si desea guardar sus créditos de Azure, puede elegir esta serie de VM para los ejercicios del libro. Vienen con un punto de precio más bajo y son ideales para casos donde no siempre necesita mucha CPU y memoria. Pero tenga cuidado: dependiendo del tamaño de la VM de la serie B que cree, puede tener menos CPU y memoria que algo como la serie de D2s_v3, por lo que funcionará un poco más lento.

Azure Storage
El almacenamiento para VM en Azure es sencillo. ¿Cuántos discos desea, de qué tamaño y de qué tipo? Los dos primeros no son realmente específicos de Azure, así que los omitiremos. Estos tipos de almacenamiento están disponibles:
– Discos SSD (unidad de estado sólido) premium: utilice SSD de alto rendimiento y baja latencia que son perfectos para cargas de trabajo de producción. Debería utilizar principalmente este tipo para obtener el mejor rendimiento para sus aplicaciones.
– Discos SSD estándar: utilice SSD estándar y ofrezca un rendimiento coherente en comparación con las unidades de disco duro (HDD). Este tipo es ideal para cargas de trabajo de desarrollo y pruebas o para usos de producción de bajo presupuesto y demanda, como servidores web.
– Discos HDD estándar: utilice discos giratorios normales que son ideales para accesos menos frecuentes a los datos, como archivos de datos o copias de seguridad. No se recomienda este tipo para ejecutar cargas de trabajo de aplicaciones.
No es necesario profundizar mucho más en los detalles del almacenamiento para crear un servidor web rápido. Obtendrá más información en el capítulo 4, incluidos los discos Ultra que son solo para discos de datos conectados. Por ahora, es suficiente saber que cuando se elige un tamaño de VM, también ayuda a definir qué tipo de almacenamiento se requiere.
Los discos virtuales que utiliza, independientemente del tipo, se denominan discos administrados de Azure. Estos discos administrados le permiten crear una VM y conectar discos de datos adicionales sin preocuparse por las cuentas de almacenamiento subyacentes, los límites de recursos ni las asignaciones de rendimiento. Los discos administrados también se cifran automáticamente en reposo: ¡no necesita configurar nada para proteger sus datos! Nuevamente, en el capítulo 4 se abarca todo esto y mucho más. Por ahora, puede dejar que Azure cree el disco más adecuado según el tamaño de la máquina virtual que seleccione.

Redes virtuales
Suena obvio, pero una VM necesita conectividad de red si desea que cualquier persona llegue a sus aplicaciones. Para un servidor web básico, se necesita tanto una red virtual como una conectividad externa. En el capítulo 5 se abordan en detalle las redes básicas de Azure, y el capítulo 9 se adentra en cómo distribuir el tráfico a múltiples máquinas virtuales mediante el uso de equilibradores de carga. Las cosas se ponen muy bien en el capítulo 11, con Azure DNS y el enrutamiento global de los usuarios finales con Traffic Manager. No lo convertiré en un ingeniero de redes, pero aprenderá mucho sobre las redes Azure en este libro.
Para empezar con los fundamentos necesarios para este capítulo, una red virtual en Azure se compone de las mismas características básicas que una red física normal:
– Un espacio de direcciones y una máscara de subred, como 10.0.0.0/16.
– Una o más subredes, que puede utilizar para dividir, por ejemplo, el tráfico externo, el de la base de datos o el de la aplicación.
– Tarjetas de interfaz de red (NIC) virtuales que conectan VM a una subred determinada.
– Direcciones IP virtuales que se asignan a recursos, como una NIC virtual o un equilibrador de carga.
Puede crear una VM que solo esté conectada a una red virtual sin proporcionar conectividad externa, como puede ser el caso de los servidores de aplicaciones o bases de datos de back-end. Para conectarse a estas VM para fines de administración y mantenimiento, puede crear una conexión de red privada virtual (VPN) o puede utilizar una conexión privada exclusiva con Azure desde su equipo de red local, denominada ExpressRoute.
El servidor web básico que desarrollará en este capítulo requiere un tipo específico de dirección IP virtual: una dirección IP pública. Esta dirección IP pública se asigna a la NIC virtual y permite que el tráfico externo llegue a su VM. Luego, puede controlar el flujo de tráfico a su VM con NSG (grupos de seguridad de red). Piense en un firewall normal que utilice para abrir o cerrar varios puertos y protocolos; en Azure, los grupos de seguridad de red bloquean el tráfico de forma predeterminada y solo permiten el tráfico específico que usted defina. El tráfico común para permitir sería HTTP o HTTPS en los puertos TCP 80 y 443. También se puede abrir la administración remota mediante el protocolo de escritorio remoto (RDP) o Secure Shell (SSH), con cuidado, lo que hará más adelante en este capítulo para ver cómo conectarte e instalar algunos paquetes.

Creación de un par de claves SSH para la autenticación
En el ejercicio de laboratorio del final del capítulo, creará lo que probablemente ya conoce: una VM de Windows Server. Este tipo de máquina virtual usa la autenticación basada en contraseña. Muchas aplicaciones en la nube funcionan con Linux; de hecho, más de la mitad de las máquinas virtuales en Azure funcionan con Linux. Normalmente no se utiliza la autenticación basada en contraseña con Linux; en su lugar, se utiliza SSH y un par de claves públicas. Para empezar a ampliar sus habilidades, el servidor web básico de este capítulo funciona con Linux, por lo que necesita sentirse cómodo con la creación y el uso de SSH. No necesita experiencia en Linux para trabajar en la nube, pero recomiendo encarecidamente que aprenda algunos de los fundamentos.

Pares de claves SSH
SSH es un protocolo utilizado para comunicarse de forma segura con equipos remotos y es la manera más común de iniciar sesión en las VM Linux. Es similar al uso de una conexión RDP a una máquina virtual de Windows, excepto que en Linux, toda la sesión SSH está típicamente basada en la consola. Con la criptografía de clave pública, puede utilizar un par de claves digitales para autenticarse con una VM de Linux remota.
Un par de claves SSH consta de dos partes: una clave pública y una clave privada. La clave pública se almacena en su VM Linux en Azure. Usted conserva una copia de la clave privada. Cuando inicie sesión en su VM Linux, la clave pública de la VM remota se compara con la clave privada que mantiene localmente. Si los pares de claves coinciden, se conecta a la VM. El proceso es algo más que eso, pero en esencia, la criptografía de clave pública es un medio fantástico para verificar la identidad.
Sería conveniente acostumbrarse a usar las claves SSH para iniciar sesión en las VM Linux, ya que son mucho más seguras que las contraseñas porque, entre otras cosas, no son susceptibles a ataques por fuerza bruta para obtener contraseñas. Debe centrarse siempre en la seguridad como concepto central, especialmente en la nube.

1 Abra un navegador web y vaya a https://portal.azure.com. Inicie sesión en la cuenta de Azure que creó en el capítulo 1 y, a continuación, seleccione el icono de Cloud Shell en la parte superior del panel. También puede abrir Cloud Shell directamente en https://shell.azure.com.


2 La primera vez que abra Cloud Shell, tomará unos minutos crear un almacenamiento permanente que luego estará siempre conectado a sus sesiones y le permitirá guardar y recuperar scripts, archivos de configuración y pares de claves SSH. Acepte las notificaciones para permitir la creación del almacenamiento.
3 Si es necesario, elija Bash en el menú desplegable de la esquina superior izquierda de Cloud Shell. También hay soporte para PowerShell, aunque nos centraremos principalmente en Bash y en la CLI de Azure a lo largo del libro.
4 Para crear un par de claves, ingrese el siguiente comando:
ssh-keygen
5 Acepte las indicaciones predeterminadas pulsando la tecla Intro. En un par de segundos, tendrá un par de claves públicas SSH que podrá usar con todas sus VM. El comando ssh-keygen tiene como valor predeterminado una clave de longitud de 2048 bits y utiliza el protocolo RSA versión 2. Este es un buen equilibrio de seguridad y se recomienda para la mayoría de los casos. La figura 2.3 muestra un ejemplo de un par de claves SSH completas en Cloud Shell.

6 Para ver la clave pública y usarla con una VM, escriba el siguiente comando:
cat .ssh/id_rsa.pub
7 Seleccione la salida y cópiela en un archivo de texto simple en su equipo. Utilizará esta clave pública para crear una VM en la sección 2.3; se hace referencia a esta VM desde la CLI de Azure en el resto del libro. Normalmente, no es necesario copiar y pegar toda la clave cada vez, pero es bueno ver lo que ocurre al principio. Esta información no es supersecreta, por lo que utilizar el Bloc de notas o TextEdit para crear y guardar una copia de la clave está bien. Tenga cuidado al copiar el resultado de la clave pública, ya que es sensible a espacios en blanco adicionales o caracteres faltantes. Un ejemplo de una clave pública SSH completa es la siguiente:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPGaOBsfhJJOHAWAv+RLLR/vdUTzS9HOIj
➥JyzWWLsnu0ESH2M6R+YYPPNXv9X7dmVyM1zCXXEaLucpnyFjevbwPedxTgifyxgCFTgylr1
➥kg7o4EyCTGBGhTA+hSHuhXGXa12KPdKWehsPwHMa6Hs8fbt/in9Z1k2ZAwvbT+LWPcmJgNO
➥FuolIHOsOEeoQQqdXLrGa7NU/3fzSXdT9Y2BT1KLINc4KnwdOuONddLw3iANvK+Gkwax8iK
➥7IicKMoammwvJUCRf+MTEK9pZ84tfsc9qOIAdhrCCLbQhtoWjZpIwYnFk+SNBE8bZZtB8b2
➥vkDFNZlA5jcAd6pUR3tPuL0D iain@cc-a444-9fdee8b2-2014310619-v5cl5

CONSEJO: Cloud Shell se basa en el navegador, así que los métodos abreviados de teclado para copiar y pegar pueden ser un poco diferentes de lo que está acostumbrado. Debe utilizar Ctrl-Insert y Mayús-Insert para copiar y pegar, en lugar de Ctrl-C y Ctrl-V.

Creación de una VM desde su navegador web
Ahora que conoce un poco de la teoría de las VM de Azure y ha creado un par de claves SSH, está listo para lanzarse a crear una máquina virtual. Voy a ponerlo en marcha y luego dejaré que configure la VM basándose en lo que acaba de aprender, así que definitivamente tendrá que prestar atención.
Las herramientas de CLI de Azure y Azure PowerShell son increíblemente potentes, pero una gran fortaleza de Azure es cuánto tiempo ha dedicado a crear una gran experiencia en el portal. Azure Portal es una herramienta gráfica en la web que le permite ver cómo se unen todos los diferentes componentes y hacer una comprobación visual rápida para asegurarse de que todo esté bien. El portal incluye un par de cosas únicas que las otras herramientas no proporcionan, además es rápido de usar porque no necesita instalar nada.
1 En Azure Portal (https://portal.azure.com), seleccione Crear un recurso en la esquina superior izquierda del panel. Los recursos más populares deberían aparecer en la lista, incluyendo la versión más reciente de Ubuntu con soporte a largo plazo (LTS) (en el momento de escribir este artículo, se trata de Ubuntu Server 18.04 LTS).

2 Seleccione la versión LTS.
También puede buscar en Marketplace en la parte superior de la ventana o navegar por la lista de servicios de alto nivel (como informática y redes) para tener una idea de qué más está disponible para sus propias necesidades futuras. Intente continuar con Ubuntu Server 18.04 LTS para poder seguir uno de los próximos ejercicios para instalar los componentes del servidor web.
3 Cree un grupo de recursos para su servidor web.
Cuando se crean recursos en Azure, estos están lógicamente contenidos en un grupo de recursos que usted define. Estos grupos suelen contener recursos afines para sus aplicaciones. El capítulo 7 aborda las formas de planificar y administrar las aplicaciones mediante el uso de grupos de recursos.
Por ahora, le sugerimos nombrar los grupos de recursos por capítulos para organizar las cosas a medida que avanza. Por ejemplo, coloque el nombre azuremol-chapter2, para el grupo de recursos de este ejercicio.
4 Dele a su VM un nombre, como webvm, y luego elija una región cercana a usted. Por ahora, no se preocupe por la redundancia de la infraestructura.
Mira las opciones para la imagen de la VM, solo para tener una idea de las otras opciones, pero para este ejercicio, quédese con Ubuntu Server 18.04 LTS. El tamaño de la VM predeterminado está bien para este ejercicio, pero de nuevo, mire para ver lo que está disponible y cómo se consulta para los diferentes tamaños y qué hardware se ejecuta. Vea cómo los tamaños se alinean con las familias de máquinas virtuales que vio con anterioridad en este capítulo.
5 Asegúrese de que está utilizando la autenticación de clave pública SSH y luego proporcione un nombre de usuario, como azuremol. Utilizará este nombre de usuario para acceder a la máquina virtual en el siguiente ejercicio.
6 Copie y pegue la clave pública SSH que creó en la sección anterior. Una vez más, asegúrese de que no hay espacios en blanco ni formatos adicionales cuando copie y pegue la clave pública. La clave SSH tiene que estar en una línea. Incluso el ajuste de palabra en el Bloc de notas puede provocar problemas. Azure Portal valida la clave antes de que pueda continuar.
7 Para conectarse a la VM en el siguiente ejercicio e instalar los componentes de servidor web, abra SSH en el puerto 22.

Abrir SSH en una máquina virtual pública no es una gran práctica de seguridad. En el capítulo 16 se estudia cómo abrir y restringir el acceso de forma automática utilizando el acceso de VM Just-in-Time.
Observe algunos de los otros puertos que puede abrir aquí. HTTP y HTTPS son puertos comunes para abrir, y se supone que está creando un servidor web en este capítulo, ¿verdad? No haga trampas y abra esos puertos todavía; quiero presentarle la CLI de Azure en el siguiente ejercicio, donde permitirá el tráfico HTTP.

Conéctese de forma segura mediante un host bastión
En escenarios reales, no debe abrir los puertos de administración remota para SSH o RDP a la Internet pública. En serio, ¡no lo haga! Siga los procedimientos recomendados que debe usar en el mundo físico local, como conectarse únicamente cuando sea necesario y limitar el acceso remoto a un conjunto específico de direcciones de administración.

Una manera común de ofrecer acceso remoto es utilizar un host bastión, o un servidor de salto. En este tipo de configuración, no se conecta directamente a los servidores de aplicaciones desde su equipo portátil o de escritorio. En su lugar, se conecta a un host bastión dedicado y, luego, se conecta al servidor que necesita administrar. Este enfoque bloquea el acceso a un conjunto limitado de direcciones y brinda una forma segura de permitir la administración remota.
Azure Bastion (https://docs.microsoft.com/azure/bastion) ofrece un enfoque administrado para esta necesidad de conexión remota segura. Cree un host de Azure Bastion en una subred dedicada y, a continuación, utilice este host para conectarse a las máquinas virtuales que ejecutan sus aplicaciones. No es necesario que estas sean accesibles públicamente. Puede hacer todo a través de Azure Portal sin abrir puertos de red para SSH o RDP. El propio host bastión se administra para usted en términos de actualizaciones de seguridad y reglas de grupo de seguridad de la red.

8 Observe algunas de las otras opciones de configuración de la VM para el almacenamiento y la red para familiarizarse con las opciones, aunque puede dejar todos los valores predeterminados por ahora.
9 También hay algunas opciones de administración interesantes, como activar el apagado automático, las copias de seguridad y los diagnósticos, que se tratan en los capítulos 12 y 13. Por ahora, desactive cosas como los diagnósticos de arranque y los diagnósticos de invitados del SO, ya que tiene que crear y configurar una cuenta de almacenamiento para que funcionen.
10 Cuando esté listo, revise y cree su máquina virtual básica.

Conexión a la VM e instalación del servidor web
Cuando su VM esté en funcionamiento, puede utilizar la clave SSH que creó antes para iniciar sesión en la VM. Luego, puede comenzar a instalar y configurar el servidor web, y puede hacerlo todo a través del Cloud Shell.

Conexión a la VM con SSH
En esta sección se examina cómo puede obtener rápidamente los detalles de conexión para su VM.

1 En Azure Portal, busque y seleccione Máquinas virtuales en la barra de navegación del lado izquierdo de la pantalla. La creación de la VM a partir del ejercicio anterior tarda un par de minutos, así que seleccione el botón Actualizar hasta que el estado de la VM muestre En ejecución. Cuando esté listo, elija su máquina virtual y seleccione Conectar.


Con una VM Linux, se le mostrará el comando SSH que incluye su nombre y la dirección IP pública. Copie este comando de conexión SSH, como ssh azuremol@104.209.208.158.
En una VM Windows, el botón Conectar descarga en el equipo un archivo de conexión RDP donde viene incluida la dirección IP pública de la VM.
2 Si es necesario, abra Cloud Shell otra vez. Si va a cambiar entre Cloud Shell y el portal, puede minimizar Cloud Shell para mantenerlo disponible en segundo plano.
3 Pegue el comando SSH en Cloud Shell y, a continuación, presione Intro. La clave SSH creada anteriormente se utiliza automáticamente para autenticación.
La primera vez que se conecta a una VM con SSH, le solicita que la agregue a una lista de hosts de confianza. Este es otro nivel de seguridad que ofrece SSH. Si alguien intenta interceptar el tráfico y dirigirlo a una VM remota diferente, su cliente SSH local sabe que algo ha cambiado y le avisa antes de conectarse.
Acepte la opción para guardar la conexión de VM remota.

En este punto, hay dos opciones: está lejos de casa o el aviso de Linux es totalmente ajeno. No se preocupe. No necesita saber una gran cantidad de comandos de Linux, y cada comando se explicará a medida que avanzamos. Dicho esto, le recomendamos encarecidamente que aprenda al menos algunas habilidades básicas de administración de Linux. Gran parte de la nube se basa en los sistemas Linux, y estamos presenciando un gran cambio hacia los contenedores y microservicios para la compilación y la administración de aplicaciones. Si es un administrador de Windows de la vieja escuela, es igualmente bienvenido. Hay algo preparado para usted al final del capítulo, así que tenga paciencia.


Instalación del servidor web
¿Crear una VM? Verificado. ¿Se conectó a la VM con SSH? Verificado. Ahora puede instalar los paquetes para un servidor web y prepararse para verlo en acción.
Azure es compatible con muchas distribuciones de Linux (distros). Las herramientas de administración de paquetes y las ubicaciones de archivos de configuración varían un poco entre distros. Va a usar Ubuntu en este libro porque es una de las distribuciones de Linux más populares y bien documentadas para informática en la nube. Si se queda atascado en el camino, de seguro podrá encontrar un montón de documentación que lo ayudará, comenzando por https://help.ubuntu.com. Si desea utilizar una distribución diferente con la que ya se sienta cómodo, siéntase libre de usarla. De lo contrario, quédese con Ubuntu.

1 En Ubuntu, los paquetes se instalan con Advanced Packing Tool (APT), una herramienta de administración de paquetes muy potente que instala de manera automática cualquier paquete adicional que necesite. Todo lo que tiene que hacer es decir «Instalar un servidor web», y la APT instala todos los componentes necesarios.
Para este ejemplo, instale la pila web LAMP. Este es probablemente el conjunto más común de componentes web: Linux, Apache (un servidor web), MySQL (un servidor de base de datos) y PHP (un lenguaje de programación web):
sudo apt update && sudo apt install -y lamp-server^
El primer comando actualiza los paquetes disponibles, lo cual es una buena práctica para asegurarse de instalar los mejores y más recientes paquetes. Cuando el comando termina, se ejecuta el siguiente comando con &&. ¿Por qué no empezar una nueva línea para el siguiente comando? && ejecuta el siguiente comando solo si el comando anterior se completó correctamente. Si, por ejemplo, no había conectividad de red para que apt obtuviese los paquetes más recientes (obviamente, hay que tener conectividad de red para conectarse en primer lugar), no tiene sentido ejecutar el comando install.
Si el comando update tiene éxito, luego apt determina qué paquetes adicionales necesita y comienza a instalar lamp-server. ¿Por qué hay un símbolo de separación al final (^)? El símbolo le dice a apt que instale todo el conjunto de paquetes que componen el servidor LAMP y no un solo paquete denominado lamp-server.
2 El instalador puede solicitarle una contraseña, o usar una contraseña de MySQL vacía por defecto. Eso no es muy seguro, y para un uso real de la producción, es necesario especificar una contraseña segura. En el capítulo 15, las cosas se ponen más interesantes y se guarda una contraseña fuerte y segura en Azure Key Vault que se incorpora automáticamente a este asistente de instalación de MySQL.
Se tarda un minuto más o menos en instalar todos los paquetes de la pila web LAMP, y entonces habrá terminado.
3 Escriba exit para cerrar la sesión de su VM y volver al mensaje de Cloud Shell.
¡Listo! Su servidor web está funcionando, pero aún no podrá acceder a él desde un navegador web. Para ello, es necesario permitir que el tráfico web llegue a la VM.

Permitir que el tráfico web llegue a la VM
El servidor web está funcionando, pero si ingresa la dirección IP pública de su VM en un navegador web, la página web no se cargará. ¿Por qué? ¿Recuerda los grupos de seguridad de la red de los que se habló brevemente en una de la sección anterior? Cuando creó la VM, se creó un grupo de seguridad de red para usted y se agregó una regla que permite la administración remota: en este caso, la regla era SSH.El resto de la VM está bloqueada. Para permitir que los visitantes accedan a su servidor web a través de Internet, es necesario crear una regla en el grupo de seguridad de red que permita tráfico web. De lo contrario, ¡nadie puede pedir pizzas!

Creación de una regla para permitir el tráfico web
En esta sección se mezclan un poco las cosas utilizando la CLI de Azure para crear una regla para el tráfico web. Podría haber abierto este puerto HTTP en el portal cuando creó la máquina virtual, pero entonces se habría perdido la mitad de la diversión.
La CLI de Azure está disponible en Cloud Shell. No hay nada que necesite instalar. En el capítulo 5 se abordan las redes virtuales y los grupos de seguridad de red con más profundidad; por ahora, puede comprobar lo rápido y potente que es la CLI de Azure con un solo comando.
Pruébelo ahora
Abra Azure Cloud Shell y siga estos pasos para ver la CLI de Azure en acción:
1 Si cerró la ventana de Cloud Shell, ábrala de nuevo desde Azure Portal. Asegúrese de que se cargue el shell de Bash, y no de PowerShell. Si es necesario, cámbielo a la versión Bash.
2 Para ver la CLI de Azure y los módulos instalados, escriba az –version. Se muestra una lista de módulos y números de versión. Lo genial sobre Cloud Shell es que siempre tiene la versión más reciente y mejor disponible.
NOTA Si es observador, puede haber notado que la información de salida del comando es sobre la versión de Python. ¿Por qué es importante esta información? Python es un lenguaje de programación poderoso y popular. La CLI de Azure está escrita en Python, que es en parte el motivo que lo hace multiplataforma y disponible para que lo instale localmente en cualquier equipo si no quiere utilizar siempre Cloud Shell. Para mantenerse al tanto de la iniciativa de Microsoft por contribuir a la comunidad open source, la CLI de Azure está disponible en GitHub para que cualquier persona realice contribuciones, sugerencias o reporte problemas (https://github.com/Azure/azure-cli).
3 Para abrir un puerto, especifique el nombre de la VM y su grupo de recursos, junto con el número de puerto. Para tráfico web, debe abrir el puerto 80. Escriba el grupo de recursos (-g) y el nombre de la VM (-n) que especificó cuando la creó:
az vm open-port -g azuremolchapter2 -n webvm –port 80

Visualización del servidor web en acción
Ahora que tiene un puerto abierto en su VM, veamos qué pasa cuando intenta acceder a él desde un navegador web:
1 En Azure Portal, seleccione su VM si navegó lejos de este. La dirección IP pública aparece en la esquina superior derecha de la página de descripción general de la máquina virtual.
2 Seleccione la dirección y cópiela.
3 En su navegador web, abra una nueva pestaña o ventana y pegue en la dirección IP pública. Se cargará el sitio web predeterminado de Apache, como se muestra en la figura 2.6. Todavía no parece una pizzería, pero tiene las bases listas para traer su código y empezar a compilar su aplicación.

Laboratorio: Creación de una VM Windows
En las secciones anteriores repasamos paso a paso cómo instalar la pila LAMP en una VM Linux Ubuntu. Esta plataforma es común para los sitios web, pero es posible que deba dedicarle un poco más de tiempo si solo tiene conocimientos de Windows. Los equipos de desarrollo o quienes toman las decisiones comerciales podrían querer utilizar .NET, por ejemplo. Incluso así, puede ejecutar .NET Core en las VM Linux, así que no tome la decisión en función del lenguaje.
Tomando lo que aprendió en el ejemplo paso a paso, intente crear una VM que ejecute Internet Information Services (IIS). Estas son algunas sugerencias:
– Necesita una VM que ejecute Windows Server 2019.
– Usted usa RDP, no SSH, así que espere una experiencia de conexión ligeramente diferente.
– En Server Manager, busque una opción para agregar roles y funciones.
– Necesita instalar el servidor web (IIS).
– No olvide abrir un puerto de red para el tráfico HTTP en el puerto TCP 80. Puede utilizar el portal si lo desea.

Limpieza de recursos
A medida que crea recursos en Azure, los gastos comienzan a andar. Se le cobra por minuto, así que es prudente formar buenos hábitos y no dejar recursos como VM ejecutándose cuando haya terminado con ellas. Tiene dos maneras de detener los cargos de facturación por ejecutar una VM:
¡ Desasignar una VM. Puede seleccionar el botón Detener del portal para detener y desasignar una VM, que libera todos los procesos de red e informáticos mantenidos.
¡ Eliminar una VM. Esta opción es bastante obvia. Si no queda nada en Azure, no hay nada que pagar. Asegúrese de haber terminado con la VM antes de eliminarla. ¡No existe el botón Deshacer en Azure!
Le recomendamos que cree un grupo de recursos para cada implementación de la aplicación a medida que comience a compilar en Azure. Eso es lo que hará a medida que avance por los ejercicios de este libro. Si nombra los grupos de recursos por capítulos, como azuremolchapter2, será más fácil realizar un seguimiento de sus recursos y saber qué eliminar. Esta práctica permite que la limpieza sea un poco más fácil, ya que puede eliminar todo el grupo de recursos al final de cada capítulo. Elija Grupos de recursos en el menú de navegación a la izquierda de la pantalla, abra cada grupo de recursos que haya creado en este capítulo y, a continuación, seleccione Eliminar grupo de recursos, Para confirmar, se le solicitará el nombre del grupo de recursos.

Si tiene el hábito de eliminar recursos cuando ha terminado con ellos, podrá completar cómodamente este libro con los créditos gratuitos de Azure. Al finalizar todo, desasigne su VM al final de cada lección para que pueda reanudar la actividad el día siguiente y detener los costos de facturación.

Y buen hasta aquí llegamos el día de hoy, no se pierdan el próximo capitulo!!!