miércoles, 5 de diciembre de 2018

Como tener tu propio tu propio Servidor S3 (Object Storage)

¿Qué es el almacenamiento de objetos?

El almacenamiento de objetos, también conocido como almacenamiento basado en objetos, es una arquitectura de almacenamiento de datos de computadora que administra los datos como objetos, a diferencia de otras arquitecturas de almacenamiento como los sistemas de archivos, que administran los datos como una jerarquía de archivos, y el almacenamiento de bloques, que administra los datos como bloques, dentro de sectores y pistas.

Cada objeto suele incluir los datos en sí, una cantidad variable de metadatos y un identificador único global.



Conoce a Minio

Minio es un servidor de almacenamiento de objetos, compatible con el servicio de almacenamiento en la nube de Amazon S3. Es más adecuado para almacenar datos no estructurados, como fotos, videos, archivos de registro, copias de seguridad e imágenes de contenedor / Máquinas Virtuales. El tamaño del objeto puede variar desde unos pocos KB hasta un máximo de 5 TB.


Minio es como tener tu propio S3 Cloud en tu datacenter, esto puede ser especialmente útil si estas regulado por alguna ley de privacidad de datos, como punto fuerte es sencillo de instalar y lo podes tener funcionando en cuestión de minutos.

Ejecucion de Minio en Docker:

Minio se ejecuta fácilmente en Docker mediante el siguiente comando:

docker run -d  --name minio --restart=always  -p 9000:9000 -v minio-data:/export -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" minio/minio server /export

En esta ejecución se está configurando un volumen persistente para el almacenamiento de objetos y se esta definiendo las llaves de acceso, es una buena practica definir nosotros las llaves de acceso pero también es posible que Minio las genere por nosotros.


Una vez ejecutado el container podremos acceder al UI de Minio mediante la IP de nuestro host + el puerto 9000, en escenarios productivos es una buena practica poner un proxy reverso con terminación SSL delante de Minio por cuestiones de Seguridad y de balanceo de carga entre varias instancias de Minio.

La primera vez que ingresamos iniciamos sesion con las access key que definimos en la ejecucion del contenedor:




























Una vez en la interfaz grafica sera necesario crear un bucket para el almacenamiento de los archivos:



















Creado el Bucket ya podemos cargar los archivos:
















Es importante destacar que se puede interactuar con el Servidor de Minio mediante las APIs de AWS de manera nativa, tambien se pueden utilizar varios SDKs:




























Para mas informacion pueden revisar la documentacion de Minio:


https://docs.minio.io/


jueves, 22 de noviembre de 2018

Despliegue continuo con Docker y Azure App Service

En el post anterior habiamos visto como ejecutar docker en Azure App Service, habiamos creado un registro de Docker en Azure (ACR) para almacenar nuestras imagenes ahi.

Si van al siguiente link: https://test-cibiri.azurewebsites.net/ pueden ver la version inicial de una aplicacion ficticia ejecutandose sobre docker (es un simple HTML)

En este post vamos a ver como hacemos despliegue continuo de la aplicacion para que cuando se haga un push de una nueva version de la imagen a ACR esta se despliegue hacia App Service.

Para esto vamos a las propiedades del container dentro de la consola de App Service y seleccionamos despliegue continuo:
























Esto va a generar un webhook en segundo plano, esto significa que cuando hagamos un push de una nueva version de una imagen esta se desplegara automaticamente a App Service, por lo cual siempre vamos a tener la ultima version desplegada. Para demostrar esto vamos a modificar nuestra aplicacion y vamos a volver a hacer el push a ACR.













Ahora hacemos el build de la imagen y hacemos el push de la misma hacia ACR:

docker build -t cibiriregistry.azurecr.io/demo-apache:latest .

docker push cibiriregistry.azurecr.io/demo-apache:latest

























Si volvemos a ir a la URL asignada a App Service vemos que se la nueva version se encuentra funcionando con el cambio realizado:













Si vamos a  nuestro grupo de recursos veremos que hay creado un webhook, si hacemos clic en el podremos ver todas las operaciones realizadas:























En proximos post veremos escenarios mas avanzados de configuracion

Espero que les sirva 

martes, 20 de noviembre de 2018

Desplegar Docker Containers en Azure App Service

El objetivo de este tutorial es mostrar una manera rápida y fácil de almacenar y ejecutar tus imágenes de contenedores en la plataforma Azure de Microsoft.

Veremos cómo crear una imagen de contenedor localmente, enviarla al Registro de Azure Container y luego ejecutarla mediante la aplicación web de Azure para contenedores. Es una excelente manera de ejecutar un solo contenedor para una sola aplicación web.

Todo lo que se necesita es Git y Docker Desktop instalados localmente, junto con una cuenta de Azure (Puede ser una cuenta trial sin problemas)

Creación del recurso Registro de contenedor de Azure (ACR)

Las imágenes de contenedores proporcionan la base para aplicaciones que se ejecutan dentro de contenedores Docker. Una imagen es como un paquete ejecutable que incluye todo lo que necesita para ejecutar una aplicación. Las imágenes de tu contenedor incluyen el código de la aplicación, el entorno de ejecución, las bibliotecas, los archivos de configuración y las variables de entorno.

Las imágenes de contenedores se encuentran en registros públicos o privados segun sea el caso, y los servidores que ejecutan el motor Docker descargan esas imágenes para iniciar y ejecutar contenedores. El registro de contenedores predeterminado para los contenedores de Docker es hub.docker.com, que ofrece más de 100,000 imágenes de contenedores de ISV, proyectos de código abierto y colaboradores de la comunidad. Podes utilizar este servicio para almacenar tus imágenes en repositorios públicos o privados (hasta 1 repositorio privado es gratis)

Microsoft también ofrece el Registro de Contenedores de Azure (ACR), que es un servicio de registro de Docker administrado basado en la plataforma Docker Registry 2.0 de código abierto.

El uso de ACR para implementaciones de contenedores  permite almacenar las imágenes de contenedores personalizados de forma privada en la nube de Azure. ACR se integra de forma nativa con múltiples servicios de Azure, y los equipos pueden usar las tareas de ACR para automatizar las implementaciones al crear nuevas imágenes o cuando el código se tiene que usar con control de versiones. ACR también proporciona un acceso de baja latencia para extraer imágenes cuando los hosts de Docker se ejecutan en la nube de Azure.

Para este tutorial, vamos a crear una nueva instancia de ACR, luego crearemos una imagen de Docker personalizada y haremos push de la misma a ACR para que podamos usarla más adelante con la aplicación web de Azure para contenedores.

En el portal de Azure, selecciona crear un recurso y elija registro de contenedor (ACR)





































Es necesario un nombre de host compatible con DNS globalmente único para tu registro bajo el espacio de nombres global azurecr.io. Luego defini el grupo de recursos de destino y asegúrate de habilitar la opción para el usuario administrador y clic en Crear.

Una vez que se complete el aprovisionamiento, navegue a tu recurso ACR en el portal y seleccione claves de acceso en la sección de configuración. Aquí se verá el servidor de inicio de sesión, nombre de usuario de administrador y contraseñas.






















Como parte final de esta seccion, inicia un terminal y usa el comando de inicio de sesión de la ventana login server para autenticarte en ACR y validar las credenciales.











Deberías obtener un mensaje similar al de la imagen anterior.

En el siguiente paso es armar la imagen para posteriormente hacer el push al registro creado en el paso anterior, para este paso vamos a crear una imagen bien sencilla basada en Apache ejecutándose en una imagen base de Debían. Vamos a necesitar una maquina con Docker instalado y definir 2 archivos:

* Dockerfile
* HTML base para servirlo en Apache

Vamos al detalle de estos archivos:

Dockerfile:

FROM debian:latest
MAINTAINER Christian Ibiri
RUN apt-get update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-$
COPY index.html /var/www/html/
EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND


Html:

<!DOCTYPE html>
<html>
<body>

<h1>Prueba para post App Service Docker</h1>
</h2>Creado por Christian Ibiri</h2>

</body>
</html>

Una vez que tenemos estos 2 archivos hacemos el build de la imagen y hacemos push de la misma al ACR:

docker build -t cibiriregistry.azurecr.io/demo-apache:latest .



















Vamos con el push:

docker push cibiriregistry.azurecr.io/demo-apache:latest










Como se puede observar en la imagen anterior la imagen se creo correctamente y deberíamos ver la misma disponible en ACR dentro de la consola de Microsoft Azure:
















Ahora que la imagen se encuentra almacenada en ACR podemos crear una nueva aplicación web dentro de Microsoft Azure e indicar que queremos utilizar la imagen previamente creada, para esto al momento de crear la aplicación seleccionamos que el origen de la imagen es ACR:





























Con esto tenemos indicada toda la configuración y podemos crear la aplicación web, si todo funciono correctamente deberíamos ver el contenido del HTML en la URL publica asignada a la aplicación dentro de Azure.














Esta funcionando perfectamente:










En un próximo post veremos como realizar despliegue continuo a App Service utilizando Docker.

jueves, 15 de noviembre de 2018

Como ejecutar un container de Docker en Azure Container Instances (ACI)


Actualmente hay 3 formas diferentes de ejecutar un contenedor Docker en Microsoft Azure:

Uso de un APP Service para contenedores Docker
Usando el servicio de Azure Kubernetes (AKS)
Uso de instancias de contenedor de Azure (ACI)

En este post, veremos brevemente cómo ejecutar un contenedor Docker en el último servicio mencionado. El servicio "Instancias de contenedor de Azure" es un servicio bastante fácil y podría ser un buen comienzo. Haré este paso para la guía de pasos a través del Portal de Azure. Puede utilizar el CLI o Powershell.

Uso de instancias de contenedor de Azure
En la primera búsqueda de "Instancias de contenedor" y esto debería aparecer:


























En esta seccion estan las configuraciones mas importantes: elegir el nombre del contenedor y la fuente de la imagen (Estas configuraciones no pueden ser modificadas luego)

La imagen puede ser de un repositorio de Public Docker Hub o de un registro privado de docker (Es importante mencionar esto debido a que podemos crear nuestras propias imagenes y hacer push a un repositorio remoto que luego sera utilizado por ACI para armar el container)

Importante: si estás utilizando un repositorio de Private Docker Hub, tenes que usar ‘index.docker.io’ como servidor de inicio de sesión, caso contrario el pull de la imagen va a fallar.





























Luego de definir el nombre del container y el repositorio se deben definir configuraciones extra, tales como: el tipo de container (Windows o Linux), Memoria RAM, tipo de IP publica y mapeos de puertos hacia el container:




























Validamos la configuracion antes de proceder a la configuracion del container, si todo esta bien seleccionamos "Ok" para que se cree.



























Algo que me sorprendio es la rapidez con la que se crean los containers, en este caso utilizamos una imagen de NGINX y en exactamente 35 segundos ya estaba funcionando





Si vamos a la IP que nos indica Azure asociada al container podremos ver la pagina default de NGINX:
















Como conclusion se puede decir que este servicio es perfecto para pruebas y containers standalone donde no es requerido alta disponibilidad.

viernes, 12 de octubre de 2018

GitLab Container Registry


Una de las cosas que tiene GitLab y no todo el mundo conoce es la posibilidad de tener un container registry para almacenar nuestras imágenes de Docker. Un container registry son repositorios para las imágenes de tus contenedores. Estos no son contenedores de ejecución sino solo imágenes (datos sin formato) que se encuentran en la instancia remota de GitLab.

¿Por qué necesito un registro de contenedores en GitLab?

Lo más probable es que tu aplicación esté empaquetada como una única imagen de Docker o una colección de varias imágenes. Esto significa que las diferentes versiones se asociarán con diferentes imágenes y el registro del contenedor te ayudará a realizar un seguimiento de ellas individualmente, así como a ver cuáles se agruparán en una versión en particular.

Requisitos

Una instancia de GitLab en funcionamiento a través de HTTP (Idealmente debería ser a traves de HTTPS)
Acceso root a la instancia u container donde se ejecuta GitLab
Acceso para modificar los registros DNS de tu nombre de dominio
Para esta demostración, vamos a asumir que nuestro GitLab se está ejecutando en gitlab.cloudlegion.com.ar

Registro de certificados DNS y TLS.
Tenes que ser usuario root para habilitar la función de registro de contenedores en la instancia de GitLab. Los usuarios individuales pueden elegir usar esta función en sus respectivos proyectos, si así lo desean. Para hacerlo:
Apunta el otro nombre de dominio, digamos, registry.gitab.cloudlegion.com.ar a la misma dirección IP donde se ejecuta GitLab.
Agrega un registro DNS de tipo “A” para registry.gitab.cloudlegion.com.ar que apunta a la misma IP donde se ejecuta tu instancia de GitLab.
Edita la configuración de GitLab, abrí el archivo /etc/gitlab/gitlab.rb y modifica las siguientes líneas indicadas:


registry_external_url 'https://registry.cloudlegion.com.ar'
### Settings used by GitLab application
 gitlab_rails['registry_enabled'] = true
 gitlab_rails['registry_host'] = "registry.cloudlegion.com.ar"
 gitlab_rails['registry_port'] = "443"
 gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"


Dado que el registro lo estamos configurando a traves de HTTPS es necesario mapear el certificado SSL correspondiente en el NGINX:

registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/certificate.pem"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/certificate.key"

Si todo está bien, con eso ya debería estar habilitado el registro en GitLab, reconfiguramos mediante el siguiente comando, O bien reiniciar el container donde se ejecuta GitLab.

sudo gitlab-ctl reconfigure

Ahora que tenemos el registro habilitado, si vamos a la configuracion del proyecto podremos ver el registro habilitado:




A continuacion vemos los comandos para hacer pull / push de nuestras imagenes



Espero que les sirva el tip



sábado, 29 de septiembre de 2018

Configurar certificados SSL en GitLab mediante Let's Encrypt

En este post vamos a ver como podemos agregar certificados SSL a nuestra instancia de GitLab (ya sea Enterprise o Community) ejecutandose en Linux o Docker.

Todas las aplicaciones al dia de hoy deberian estar utilizando comunicacion segura a traves de TLS mediante certificados, y si bien estos no son gratituos podemos utilzar la CA gratitua Let's Encrypt: https://letsencrypt.org/

Let's Encrypt ha ganado mucha popularidad en los ultimos años debido a que puede emitirnos certificados SSL de manera automatizada, segura y gratis para nuestras aplicaciones, de hecho muchas aplicaciones tienen integracion nativa e integrada con Let's Encrypt para la emision y actualizacion de certificados SSL, y GitLab no es la excepcion.

Let's Encrypt puede emitir 3 tipos de certificados

Certificado SSL Standalone
Certificado SSL SAN
Certificado SSL Wildcard

Voy a dar un pequeño repaso de que son cada uno de ellos:

Certificado SSL Standalone

Firma un solo dominio o subdominio, por ej. si tenemos el sitio example.domain.com solo este sitio estara protegido por el certificado

Certificado SSL SAN

Este tipo de certificado esta emitido para un dominio o subdominio pero puede contener nombres alternativos dentro del mismo certificado, por ej. un certificado emitido para example.domain.com podria contener los nombres demo.example.com y demo10.example.com 
Dependiendo el tipo de CA que se use pueden imponer un limite en la cantidad de nombres alternativos a firmar

Certificado SSL Wildcard

Este tipo de certificado firma todos los subdominios de un dominio, por ej. si tenemos el dominio example.com todo lo que se encuentre delante de example.com va a poder ser firmado por el certificado.

Bueno, esta fue una breve explicacion de los certificados SSL (creo que me fui por las ramas un poco), ahora veamos como podemos integrar estos dentro de GitLab.

Antes de avanzar con el setup es necesario definir 2 registros DNS del tipo "A" apuntando a la IP de nuestro GitLab, dado que en este caso queremos segurizar el acceso a GitLab y a su registro vamos a crear dos:

gitlab.cloudlegion.com.ar
registry.cloudlegion.com.ar

Ambas apuntando a la IP de nuestro GitLab (40.113.245.121)

Para esto vamos al archivo de configuracion que utiliza GitLab para mapear las configuraciones, para este post se utilizo una version enterprise pero es lo mismo si se utiliza una version community.

nano /etc/gitlab/gitlab.rb

Dentro de el buscamos la linea "Let's Encrypt" y lo configuramos de la siguiente manera













letsencrypt['enable'] = true
letsencrypt['contact_emails'] = ['cibiri@cloudlegion.com.ar']
letsencrypt['group'] = 'root'
letsencrypt['key_size'] = 2048
letsencrypt['owner'] = 'root'
letsencrypt['wwwroot'] = '/var/opt/gitlab/nginx/www'
letsencrypt['auto_renew'] = true
letsencrypt['auto_renew_hour'] = 0
letsencrypt['auto_renew_minute'] = 30 
letsencrypt['auto_renew_day_of_month'] = "*/4"

Modificamos la linea de la configuracion para el registro:











 registry_external_url 'https://registry.cloudlegion.com.ar'
 gitlab_rails['registry_enabled'] = true
 gitlab_rails['registry_host'] = "registry.cloudlegion.com.ar"
 gitlab_rails['registry_port'] = "443"
 gitlab_rails['registry_path'] = "/var/opt/gitlab/gitlab-rails/shared/registry"


Modificados estos cambios reinicamos GitLab mediante el siguiente comando:

sudo gitlab-ctl reconfigure

O bien reiniciamos el contenedor de Docker si es que lo estamos ejecutando de esa manera.

Con esto ya tenemos andando nuestro GitLab con acceso seguro:




















Esta no es la unica manera en la que se puede proporcionar SSL a una instancia de GitLab, tambien se puede utilizar un proxy reverso con terminacion SSL, esto lo veremos en un post futuro.

Espero que les sirva


miércoles, 1 de agosto de 2018

Certificacion Azure - Guias de estudio examenes AZ100 & AZ101


A continuación, se encuentra redactada una suerte de guía de estudio para los nuevos exámenes de Microsoft Azure AZ100 y AZ101. Al momento de redactar este post dichos exámenes se encuentran en beta

Acceso a la información de los diferentes exámenes:
Microsoft Azure Infrastructure and Deployment AZ-100
Microsoft Azure Integration and Security AZ-101
Microsoft Azure Administrator Certification Transition AZ-102

Guia de Estudio – Examen AZ-100

Azure subscriptions and resources (15-20%)

Manage Azure subscriptions

Cost Center Tagging: https://docs.microsoft.com/en-us/azure/billing/billing-getting-started#ways-to-monitor-your-costs-when-using-azure-services
Azure Policies: https://docs.microsoft.com/en-us/azure/azure-policy/azure-policy-introduction
Azure Administrator Subscription: https://docs.microsoft.com/en-us/azure/billing/billing-add-change-azure-subscription-administrator

Analyze resource utilization and consumption

Action Groups: https://docs.microsoft.com/en-my/azure/monitoring-and-diagnostics/monitoring-action-groups
Metrics in Microsoft Azure: https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-overview-metrics
Cost Management Report: https://docs.microsoft.com/en-us/azure/cost-management/use-reports
Setup Billing Alerts: https://docs.microsoft.com/en-us/azure/billing/billing-set-up-alerts
Log Query Functions Examples: https://github.com/MicrosoftDocs/LogAnalyticsExamples/tree/master/log-analytics
Create Alerts in Azure Monitor: https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitor-alerts-unified-usage

Manage resource groups

Azure Policy: https://docs.microsoft.com/en-us/azure/azure-policy/create-manage-policy
Resource Locks: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-lock-resources
Azure Resource Group Tags: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-using-tags
Move Resources across resource groups: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-move-resources

Implement and manage storage (20-25%)

Create and configure storage accounts

Virtual Endpoint for Azure Storage: https://azure.microsoft.com/en-us/blog/virtual-network-service-endpoints-and-firewalls-for-azure-storage-now-generally-available/
Create and Manage Storage Account: https://docs.microsoft.com/en-us/azure/storage/common/storage-create-storage-account
Create SAS: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-dotnet-shared-access-signature-part-2
Azure Storage Explorer: https://docs.microsoft.com/en-us/azure/vs-azure-tools-storage-manage-with-storage-explorer?tabs=windows
Azure Storage Analytics: https://docs.microsoft.com/nb-no/rest/api/storageservices/storage-analytics
Azure Activity Log Analytics: https://docs.microsoft.com/en-us/azure/security/azure-log-audit
Azure Storage Access Keys: https://docs.microsoft.com/en-us/azure/storage/common/storage-create-storage-account

Import and export data to Azure

Azure Import and Export Job: https://docs.microsoft.com/en-us/azure/storage/common/storage-import-export-service
Configure CDN for Azure: https://docs.microsoft.com/en-us/azure/cdn/cdn-create-new-endpoint
Configure CDN for WordPress: https://blogs.msdn.microsoft.com/azureossds/2015/04/27/improving-wordpress-performance-use-azure-cdn/

Configure Azure files

Troubleshoot File Sync: https://docs.microsoft.com/en-us/azure/storage/files/storage-sync-files-troubleshoot?tabs=portal1%2Cportal
Deploy Azure File Sync: https://docs.microsoft.com/en-us/azure/storage/files/storage-sync-files-deployment-guide?tabs=portal
Create a Sync Group: https://docs.microsoft.com/en-us/azure/storage/files/storage-sync-files-deployment-guide?tabs=portal#create-a-sync-group-and-a-cloud-endpoint

Implement Azure backup

Azure Backup Reports: https://docs.microsoft.com/en-us/azure/backup/backup-azure-configure-reports
Create Backup Vault: https://docs.microsoft.com/en-us/azure/backup/backup-azure-manage-windows-server
Restore from Azure backup agent: https://docs.microsoft.com/en-us/azure/backup/backup-azure-restore-windows-server
Restore VM’s in Azure: https://docs.microsoft.com/en-us/azure/backup/backup-azure-arm-restore-vms
Creating a backup Policy: https://docs.microsoft.com/en-us/azure/backup/backup-azure-vms-first-look-arm#defining-a-backup-policy

Deploy and manage virtual machines (VMs) (20-25%)

Create and configure a VM for Windows and Linux

High Availability IaaS Azure: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/manage-availability
Scale Sets Azure: https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/quick-create-portal
Monitor Azure Virtual Machine: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/monitor
Resize Virtual Machines Azure: https://thuansoldier.net/6515/


Automate deployment of VMs

ARM Templates: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates
ARM Azure Github: https://github.com/Azure/azure-quickstart-templates
Deploy Templates from ARM: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-deploy
Save Template as ARM: https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-manager-export-template

Manage Azure VM

Move VM from one resource group to another: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/move-vm
Azure Automation DSC and Azure: https://docs.microsoft.com/en-us/azure/automation/automation-dsc-overview
Custom Script Extension Azure: https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-windows
ARM Custom Script Extension: https://github.com/Azure/azure-quickstart-templates/tree/master/201-vm-custom-script-windows
Attached Data Disk Azure: https://docs.microsoft.com/en-us/azure/virtual-machines/windows/attach-managed-disk-portal

Manage VM backups

Restore VM’s in Azure: https://docs.microsoft.com/en-us/azure/backup/backup-azure-arm-restore-vms
Creating a backup Policy: https://docs.microsoft.com/en-us/azure/backup/backup-azure-vms-first-look-arm#defining-a-backup-policy
Backup VM using ARM: https://azure.microsoft.com/en-gb/resources/templates/101-recovery-services-create-vm-and-configure-backup/

Configure and manage virtual networks (20-25%)

Create connectivity between virtual networks

VNET Peering: https://docs.microsoft.com/en-us/azure/virtual-network/tutorial-connect-virtual-networks-portal
Virtual Network Gateway: https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpngateways
Verify Connection: https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-verify-connection-resource-manager
Site to Site VNET: https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-vnet-vnet-resource-manager-portal

Implement and manage virtual networking

Configure Private IP address: https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-static-private-ip-arm-pportal
Configure Public IP address: https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-deploy-static-pip-arm-portal
Configure Routing: https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-udr-overview
IP Addressing VNET: https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-ip-addresses-overview-arm

Configure name resolution

DNS Azure: https://docs.microsoft.com/en-us/azure/dns/dns-zones-records
DNS Azure FAQ: https://docs.microsoft.com/en-us/azure/dns/dns-faq
Manage Azure DNS: https://docs.microsoft.com/en-us/azure/dns/dns-operations-dnszones-portal
Configure DNS Zones Azure: https://docs.microsoft.com/en-us/azure/dns/dns-operations-recordsets

Create and configure a Network Security Group (NSG)

Azure IaaS Security: https://msandbu.org/microsoft-azure-and-security-best-pratices-part-1-identity/
Create Security Rules Azure: https://docs.microsoft.com/en-us/azure/virtual-network/tutorial-filter-network-traffic-powershell
Diagnose Azure NSG Rules: https://docs.microsoft.com/en-us/azure/virtual-network/diagnose-network-traffic-filter-problem

Manage identities (15-20%)

Manage Azure Active Directory (AD)

Azure AD Custom Domains: https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/add-custom-domain
Azure Self Service Reset: https://docs.microsoft.com/en-us/azure/active-directory/authentication/concept-sspr-howitworks
Azure Identity Security: https://msandbu.org/microsoft-azure-and-security-best-pratices-part-1-identity/
Enable Enterprise State Roaming: https://docs.microsoft.com/en-us/azure/active-directory/active-directory-windows-enterprise-state-roaming-enable

Manage Azure AD objects (users, groups, and devices)

Manage Devices: https://docs.microsoft.com/en-us/azure/active-directory/devices/device-management-azure-portal
Bulk Update Azure AD Users: http://ericphan.net/blog/2017/9/26/azure-active-directory-bulk-updating-user-profile-attributes-using-powershell
Create Groups Azure AD: https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal
Dynamic Rules Azure AD Group: https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/groups-dynamic-membership

Implement and manage hybrid identities

Configure Federated Access: https://docs.microsoft.com/en-us/azure/active-directory/application-config-sso-how-to-configure-federated-sso-gallery
Install Azure AD Connect: https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-get-started-custom
Configure Password Writeback: https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-sspr-writeback


Study Guide – AZ-101

Evaluate and perform server migration to Azure (15-20%)

Evaluate migration scenarios by using Azure Migrate

Asessment Azure Migrate: https://docs.microsoft.com/en-us/azure/migrate/tutorial-assessment-vmware
Ports Required: https://docs.microsoft.com/en-us/azure/migrate/migrate-overview

Migrate servers to Azure

Azure Site Recovery: https://docs.microsoft.com/en-us/azure/site-recovery/migrate-tutorial-on-premises-azure
Prepare Azure: https://docs.microsoft.com/en-us/azure/site-recovery/tutorial-prepare-azure
MIgrate P2V: https://docs.microsoft.com/en-us/azure/site-recovery/physical-azure-disaster-recovery#create-a-replication-policy

Implement and manage application services (20-25%)

Configure serverless computing

Custom Event Grid Events: https://docs.microsoft.com/en-us/azure/event-grid/custom-event-quickstart-portal
Dead Letter Event Grid: https://docs.microsoft.com/en-us/azure/event-grid/manage-event-delivery
Manage an Azure Functions App: https://docs.microsoft.com/en-us/azure/azure-functions/functions-how-to-use-azure-function-app-settings
Monitor Azure Logic App Status: https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-monitor-your-logic-apps
Manage Service Bus: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-metrics-azure-monitor

Manage App Service plans
Scaling App Plan: https://docs.microsoft.com/en-us/azure/app-service/environment/app-service-web-scale-a-web-app-in-an-app-service-environment
App Service Plan: https://docs.microsoft.com/en-us/azure/app-service/azure-web-sites-web-hosting-plans-in-depth-overview
Monitor and alerts App Service: https://docs.microsoft.com/nb-no/azure/app-service/web-sites-monitor

Manage App services
Use SSL: https://docs.microsoft.com/nb-no/azure/app-service/web-sites-purchase-ssl-web-site
Deployment Slots: https://docs.microsoft.com/en-us/azure/app-service/web-sites-staged-publishing
App Service Protection: https://docs.microsoft.com/en-us/azure/app-service/app-service-security
Patching and updates App Service: https://docs.microsoft.com/en-us/azure/app-service/app-service-patch-os-runtime
CDN Integration: https://docs.microsoft.com/en-us/azure/cdn/cdn-add-to-web-app

Implement advanced virtual networking (30-35%)

Implement application load balancing

Application Load Balancing: https://docs.microsoft.com/en-us/azure/application-gateway/quick-create-portal
Configure Application Gateway with PowerShell: https://docs.microsoft.com/en-us/azure/application-gateway/tutorial-manage-web-traffic-powershell
Multiple Front-end: https://docs.microsoft.com/en-us/azure/application-gateway/create-multiple-sites-portal

Implement Azure load balancer

Configure Internal Azure Load Balancer: https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-get-started-ilb-arm-ps
Load Balancing Rules: https://docs.microsoft.com/nb-no/azure/load-balancer/load-balancer-distribution-mode
Troubleshoot Azure Load Balancing: https://docs.microsoft.com/nb-no/azure/load-balancer/load-balancer-troubleshoot

Monitor and manage networking

Implement Network Watcher: https://docs.microsoft.com/en-us/azure/network-watcher/connection-monitor
Diagnose a Gateway: https://docs.microsoft.com/en-us/azure/network-watcher/diagnose-communication-problem-between-networks

Integrate on premises network with Azure virtual network

Configure ExpressRoute: https://docs.microsoft.com/en-us/azure/expressroute/expressroute-howto-circuit-portal-resource-manager
VNET Peering: https://docs.microsoft.com/en-us/azure/virtual-network/tutorial-connect-virtual-networks-portal
Virtual Network Gateway: https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpngateways
Verify Connection: https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-verify-connection-resource-manager
Site to Site VNET: https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-vnet-vnet-resource-manager-portal

Secure identities (25-30%)

Implement Multi-Factor Authentication (MFA)

Configure Fraud Alerts: https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-mfa-mfasettings#fraud-alert
Configure Cloud Based MFA: https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-mfa-getstarted
Custom Roles: https://msandbu.org/microsoft-azure-and-security-best-pratices-part-1-identity/
Trusted IP’s: https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-mfa-mfasettings#trusted-ips

Manage role-based access control (RBAC)

Custom Roles: https://msandbu.org/microsoft-azure-and-security-best-pratices-part-1-identity/
Troubleshoot RBAC: https://docs.microsoft.com/en-us/azure/role-based-access-control/troubleshooting

Implement Azure Active Director (AD) Privileged Identity Management (PIM)

Activate a PIM Role: https://docs.microsoft.com/en-us/azure/active-directory/privileged-identity-management/pim-how-to-activate-role
Just in time: https://docs.microsoft.com/en-us/azure/active-directory/privileged-identity-management/pim-resource-roles-assign-roles
Delegated Provider: https://docs.microsoft.com/en-us/azure/active-directory/privileged-identity-management/azure-ad-pim-approval-workflow#view-pending-approvals-requests
Enable PIM: https://docs.microsoft.com/en-us/azure/active-directory/privileged-identity-management/pim-getting-started


Esta publicada gran parte en Ingles debido a que es mas sencillo mapear la documentacion debido a que no todo el material se encuentra traducido.

Espero que les sirva.