Noticias

Implemente máquinas virtuales completamente configuradas en Google Cloud en minutos usando gcloud CLI y cloud-init

Cree plantillas de implementación reutilizables para Landscape y otras aplicaciones

Cada proveedor de nube pública tiene un mecanismo de plantilla para implementar aplicaciones completamente configuradas. Para cualquiera interesado en un enfoque neutral respecto a los proveedores para ejecutar en las principales nubes públicas, Inicialización de la nube Proporciona una buena solución. Cloud-init hace que su trabajo sea reutilizable sin importar en qué nube lo implemente. Es una solución de automatización de configuración de código abierto para Linux que realiza pasos en varias etapas del inicio de una sola computadora. En este artículo, explicaré cómo usar cloud-init para implementaciones independientes reutilizables. Usaremos el modo de inicio en la nube para implementar Landscape, pero se puede reutilizar el mismo proceso para implementar otras aplicaciones.

Landscape es la solución de gestión de sistemas de Canonical para personas u organizaciones que utilizan Ubuntu. Proporciona acceso a una variedad de funciones de gestión, que incluyen inventario, automatización, refuerzo, cumplimiento, generación de informes y distribución de software. En entornos Ubuntu en la nube pública, Landscape puede administrar flotas de máquinas en cualquier lugar, incluidas configuraciones de nube híbrida y de múltiples nubes.

Este artículo está dividido en dos partes. Primero, cubriremos cómo configurar la CLI de Google Cloud. Luego, cubriremos cómo usar cloud-init para configurar plantillas. Comencemos con una descripción general de lo que hacen estas herramientas.

Parte 1: CLI de Google Cloud: La CLI de Google Cloud incluye la utilidad de línea de comandos gcloud que le permite interactuar con los servicios de Google Cloud y administrar recursos. Cualquier tarea relacionada con la infraestructura de Google Cloud, desde la configuración y la implementación hasta la administración, se puede completar a través de gcloud.

Parte 2: Inicialización de la nube:cloud-init se utiliza comúnmente en las principales nubes públicas. También lo utilizan MAAS (la solución de aprovisionamiento bare metal de Canonical) y plataformas de computación en la nube de código abierto como OpenStack. Cloud-init actúa como un hilo conductor entre todas las nubes y, si bien cada nube puede tener sus propias comodidades de plantilla, el uso de cloud-init le brinda el lujo de soporte para múltiples nubes y hace que las implementaciones entre diferentes proveedores de nube sean una experiencia unificada.

Finalmente, aprenderá cómo poner en marcha una máquina virtual Ubuntu en Google Cloud e implementar en ella un paisaje completamente configurado. Los siguientes pasos suponen que ha creado una cuenta de Google Cloud y que está realizando estos pasos en un shell bash con el paquete curl instalado.

Parte 1: CLI de Google Cloud

La instalación y el uso de Google Cloud CLI en su sistema se pueden reducir a un simple proceso de 3 pasos:

Paso 1: instala gcloud, de forma cómoda y rápida

Instalar Google Cloud CLI como un paquete instantáneo es perfecto para los propósitos de este artículo. Si ya tienes instalada la CLI de Google Cloud, puedes omitir este paso:

sudo snap install google-cloud-cli --classic

Paso 2: conecta gcloud con tu cuenta de Google Cloud

Continuar con este paso supone que creó una cuenta en cloud.google.com y que inició sesión en la interfaz web de console.cloud.google.com al menos una vez para crear un proyecto. Si se cumplen estas actividades de requisitos previos, puede inicializar la CLI de Google Cloud:

gcloud init

Se le solicitará un mensaje de inicio de sesión de sí/no. Responde que sí y utiliza tu navegador favorito para acceder al enlace de autenticación.

Welcome! This command will take you through the configuration of gcloud.

Your current configuration has been set to: [default]

You can skip diagnostics next time by using the following flag:
  gcloud init --skip-diagnostics

Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.                                                                                              
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).

You must log in to continue. Would you like to log in (Y/n)?  y

Go to the following link in your browser:

https://accounts.google.com/[redacted]

Acceder al enlace lo llevará a través de la siguiente experiencia de inicio de sesión de Google, haga clic en la dirección de correo electrónico asociada con su cuenta de Google Cloud, haga clic en «Usar una cuenta diferente» para iniciar sesión con la cuenta correcta.

A continuación, haga clic en Permitir para otorgar permiso al SDK de Google Cloud para que se ejecute normalmente.

Haga clic en «Copiar» y pegue esta cadena de autenticación del portapapeles en la ventana del terminal. gcloud init El proceso está en marcha:

Después de completar exitosamente gcloud init Durante el proceso, verá el siguiente resultado:

You are now logged in as [[email protected]].
Your current project is [None].  You can change this setting by running:
  $ gcloud config set project PROJECT_ID

Paso 3: configurar recursos e implementar

Ahora que está autenticado, puede enumerar los elementos de su cuenta usando el siguiente comando:

gcloud projects list

este PROJECT_ID Curiosamente, en el siguiente ejemplo tiene el valor your-project-id:

PROJECT_ID        NAME              PROJECT_NUMBER
your-project-id   your-project-name 12345678910

este PROJECT_ID El valor se utilizará con frecuencia, por lo que estableceremos your-project-id como un valor PROJECT_ID Variables de shell:

PROJECT_ID=your-project-id

Conecta gcloud a esto PROJECT_IDaquí será donde se iniciará la máquina virtual Landscape:

gcloud config set project $PROJECT_ID

Puede utilizar el siguiente comando para enumerar las regiones de nube disponibles y las regiones de nube donde se puede ejecutar la máquina virtual:

gcloud compute zones list

A continuación se muestra parte del resultado, mostrando una tabla con los valores que usaremos en este artículo:

NAME                       REGION                   STATUS  NEXT_MAINTENANCE  TURNDOWN_DATE
us-east1-b                 us-east1                 UP

La zona y los valores de zona se almacenan como variables de entorno porque se utilizarán en varios pasos posteriores.

ZONE=us-east1-b
REGION=us-east1

Landscape se beneficiará de la asignación de direcciones IP estáticas. Un registro DNS llamado registro A es responsable de señalar el nombre de dominio completo (FQDN) a la dirección IP del servidor horizontal. Cuando utiliza una dirección IP estática, no es necesario actualizar el registro A cada vez que cambia la IP dinámica.Reserve una dirección IP estática y etiquétela landscape-external-ipen la zona correspondiente:

gcloud compute addresses create landscape-external-ip --region=$REGION

Para ver las direcciones que creó:

gcloud compute addresses list

Luego copie la dirección IP y configúrela en el valor de registro A del dominio (sudominio.com) o subdominio (paisaje.sudominio.com), que se utilizará como el nombre de dominio completo. Lo mejor es utilizar nslookup para verificar los registros A. En mi ejemplo, mi FQDN es Landscape-fips.rajanpatel.com y mi dirección IP estática es 34.139.251.121:

nslookup landscape-fips.rajanpatel.com

La salida se verá así:

Server:		127.0.0.53
Address:	127.0.0.53#53

Non-authoritative answer:
Name:	landscape-fips.rajanpatel.com
Address: 34.139.251.121

Si el valor de la dirección en la salida de nslookup coincide landscape-external-ip Con una dirección IP estática, el paso de configuración SSL de LetsEncrypt definido en la plantilla de automatización de configuración de inicio en la nube se realizará correctamente.

Parte 2: Inicialización de la nube

A continuación, seleccione cuál de los dos archivos de plantilla de automatización de configuración de inicio en la nube se adapta mejor a sus necesidades.adentro guión de paisaje Hay dos plantillas de configuración de inicio en la nube de Landscape Quickstart en el repositorio de Github: Inicio rápido de inicialización en la nube.yaml y nube-init-quickstart-fips.yaml.

Establecer apropiado IMAGE_FAMILY Variables basadas en su elección de configuración de inicio de nube:

  • cloud-init-quickstart.yaml es adecuado para cualquier persona. Para usar este archivo, ejecute el siguiente comando:
curl -s  -o cloud-init.yaml
IMAGE_FAMILY=ubuntu-pro-2204-lts
  • cloud-init-quickstart-fips.yaml es adecuado para aquellos interesados ​​en implementar computadoras compatibles con FIPS porque implementará un entorno compatible con FIPS. FIPS es una estrategia de refuerzo de cifrado adoptada por el gobierno de EE. UU. Para usar cloud-init-quickstart-fips.yaml, ejecute el siguiente comando:
curl -s  -o cloud-init.yaml
IMAGE_FAMILY=ubuntu-pro-fips-2004-lts

Abra el archivo cloud-init.yaml descargado en un editor y determine qué parámetros de configuración deben cambiarse entre las líneas 4 y 32. HOSTNAME Línea 16 y DOMAIN Se debe cambiar al menos la línea 19.actualizando EMAIL en la línea 9 y en la línea 29 agregue su clave API de SendGrid como SMTP_PASSWORD Es opcional pero muy recomendable.
El siguiente comando iniciará una máquina con especificaciones de recursos generalmente adecuadas:

gcloud compute instances create landscape \
    --zone $ZONE \
    --machine-type=c3-standard-4 \
    --address landscape-external-ip \
    --tags http-server,https-server \
    --boot-disk-size 200 \
    --image-family $IMAGE_FAMILY \
    --image-project ubuntu-os-pro-cloud \
    --metadata-from-file user-data=cloud-init.yaml

Para ahorrar costes, el valor del tipo de máquina se puede cambiar de c3-standard-4 llegar e2-mediumy cambie el valor del tamaño del disco de arranque de 200 llegar 20. Vale la pena señalar que la máquina e2-medium es un recurso informático compartido y, dado que su uso puede causar inestabilidad temporal y esporádica en el panel de control de Landscape, una máquina de este tamaño solo se puede utilizar para pruebas de concepto y pruebas limitadas.

Para ver todas las máquinas virtuales en el proyecto, el nuevo proyecto mostrará solo la máquina horizontal que acaba de configurar:

gcloud compute instances list

Para observar el proceso de inicio de nube en la máquina Landscape, puede rastrear el archivo cloud-init-output.log:

gcloud compute ssh landscape --zone $ZONE --command "tail -f /var/log/cloud-init-output.log"

A los usuarios que utilicen gcloud por primera vez se les solicitará dos veces su contraseña, que se puede dejar en blanco. Presione Enter dos veces para continuar:

WARNING: The private SSH key file for gcloud does not exist.
WARNING: The public SSH key file for gcloud does not exist.
WARNING: You do not have an SSH key for gcloud.
WARNING: SSH keygen will be executed to generate a key.
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

En algún momento, cloud-init puede llegar a una etapa en la que sea necesario reiniciarlo debido a parches de seguridad.si IMAGE_FAMILY Es posible que este paso de reinicio no se produzca si se especificaron previamente todos los parches de seguridad:

2023-08-20 17:30:04,721 - cc_package_update_upgrade_install.py[WARNING]: Rebooting after upgrade or install per /var/run/reboot-required

Dale a la máquina un momento para reiniciar y repetir. gcloud compute ssh El comando es necesario para continuar observando el archivo cloud-init-output.log. Cuando al archivo de registro ya no se le agregue nueva información y se complete el proceso de inicio de la nube, tail continuará monitoreándolo en busca de cambios. Sabrás que cloud-init está completo cuando veas 2 líneas similares a esta:

cloud-init v. 23.2.2-0ubuntu0~20.04.1 running 'modules:final' at Sun, 20 Aug 2023 17:30:43 +0000. Up 25.14 seconds.
cloud-init v. 23.2.2-0ubuntu0~20.04.1 finished at Sun, 20 Aug 2023 17:30:56 +0000. Datasource DataSourceGCELocal.  Up 37.35 seconds

de acuerdo a CTRL+C Para finalizar el proceso final en una ventana de terminal, los siguientes pasos requerirán un navegador web.

Configurar paisaje

En esta etapa, puede acceder al panel de Landscape ingresando el FQDN de la máquina virtual de Landscape en una ventana del navegador. Proporcione el nombre, la dirección de correo electrónico y la contraseña del primer administrador global en la computadora.

Si la dirección de correo electrónico desde la que Landscape envía correos electrónicos no debe ser un subdominio basado en el nombre de host de la computadora, elimine el nombre de host (resaltado en la captura de pantalla a continuación) o realice las correcciones apropiadas. Este es un paso opcional, SendGrid no es sensible al nombre de host establecido en este campo, pero otros proveedores de servicios de correo electrónico pueden serlo.

Si la dirección de correo electrónico del sistema está configurada de la manera que espera su proveedor de servicios de correo electrónico, es menos probable que las alertas y las invitaciones de administrador enviadas por correo electrónico no superen las comprobaciones SPF o DMARC. Si los correos electrónicos enviados por su proveedor de servicios de correo electrónico no superan las comprobaciones de SPF y DMARC, la entrega del mensaje puede retrasarse o clasificarse erróneamente como spam.

Pasos de limpieza para proteger los secretos

El script de inicio de nube se proporciona en una clave de metadatos personalizada denominada datos de usuario, que se utiliza durante la creación de la instancia y se ejecuta cuando se inicia la instancia. La información confidencial, como las claves API, no es adecuada para mostrarse en texto claro en los metadatos personalizados de una máquina virtual o en los paneles de control en la nube. Una vez que cloud-init-output.log imprime un mensaje «Completado» exitoso y lee la cantidad de segundos que tardó en completarse el proceso, es seguro eliminar la clave de datos de usuario de cloud-init. Advertencia: ejecutar este comando antes de que se complete el proceso de inicio de la nube hará que la instalación falle.

gcloud compute instances remove-metadata landscape --zone $ZONE --keys=user-data

Cómo realizar un desmontaje completo

Ahora que ha iniciado con éxito su aplicación en Google Cloud utilizando las utilidades de línea de comandos cloud-init y gcloud, es posible que se pregunte si eliminar todo es igual de fácil. La herramienta gcloud simplifica el proceso de configuración y desmontaje. Puede usar la utilidad de línea de comandos de gcloud para eliminar la máquina virtual y liberar la dirección IP estática, invirtiendo efectivamente todos los pasos de configuración descritos en el paso 3 anterior.

El orden de las operaciones es importante, primero se debe eliminar la máquina virtual:

gcloud compute instances delete landscape --zone $ZONE

Una vez que la máquina ya no utilice la dirección IP estática, puede liberarla:

gcloud compute addresses delete landscape-external-ip --region $REGION

en conclusión

Al utilizar la CLI de gcloud y la automatización de inicio en la nube, implementar y administrar Landscape en Google Cloud se vuelve muy eficiente. Este artículo enumera atajos y automatizaciones para simplificar el proceso de instalación. El archivo de inicio de nube de Landscape vinculado desde el repositorio Github de Landscape Scripts demuestra las mejores prácticas de inicio de nube.

La compatibilidad universal de Cloud-init entre el software de infraestructura y la nube lo hace útil incluso cuando cambia la infraestructura subyacente. Al utilizar plantillas de inicio de nube, puede simplificar enormemente el proceso de migración de implementaciones independientes entre diferentes nubes públicas o locales. Este ejemplo de paisaje se puede reutilizar para implementar cualquier otra aplicación, desde servidores de juegos hasta servidores web o cualquier otra aplicación. Ahora que sabe cómo utilizar cloud-init para implementar aplicaciones y aplicar cifrado reforzado a las computadoras, puede seguir el mismo proceso para implementar y configurar otras aplicaciones. Suponiendo que una implementación horizontal no redundante se adapte a sus necesidades, entonces funcionará. Si tiene necesidades de alta disponibilidad, contáctenos para aprender cómo implementar Landscape Zhu Zhuel motor de orquestación de código abierto de Canonical.

Si quieres saber más

Hable con nosotros sobre sus desafíos de administración de sistemas en la nube pública o local.

Contáctenos

LEER  KaOS Linux 2023.09 agrega KDE Gear 23.08, cambiando el enfoque a KDE Plasma 6 ISO

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba