Ir al contenido principal

Utilizar Ansible para implementar sobre Azure

Bien, ya tenemos nuestro servidor Ansible on-premises o en la nube. Ahora vamos a comenzar a usarlo para desplegar algo en Azure.

Credenciales

Lo primero que debemos hacer es crear las credenciales para poder  comunicar Ansible con nuestra subscripcion de Azure. Para eso vamos a usar la opción application registration del modulo de Active Directory de Azure. o mucho mas fácil ejecutando el siguiente comando desde la interfaz de comandos web de Azure.'

az ad sp create-for-rbac --query '{"client_id": appId, "secret": password, "tenant": tenant}'

La salida se vera parecida a lo siguiente:

{
  "client_id": "eexx6xxa-9xx8-4xx6-8xx7-0xx3xx5xx0d5",
  "secret": "53xxcxxa-3xxf-4xx8-9xxb-48xxcxx5xx3f",
  "tenant": "72xx8xxf-8xx1-4xxf-9xxb-2dxxd0xxdb47"
}

lo anotamos y luego vamos por la identificación de la subscripcion con el siguiente comando:

az account show --query "{ subscription_id: id }"

Luego en nuestro servidor Ansible vamos a crear un archivo credentials dentro de una carpeta .azure

mkdir .azure
vi .azure/credentials

Con el siguiente contenido:

[default]
subscription_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
client_id=eexxxxxa-9xx8-4xx6-8xx7-0xx30xx41xx5
secret=53xxcxxa-3xxf-4xx8-9xxb-48xxc3xxea3f
tenant=72xx88xf-8xx1-4xxf-9xxb-2dxxd0xxdbx7

Instalar modulo AZ Cli para Ansible


Instalamos AZ Cli en nuestro Ansible Server, para eso comenzamos agregando el repositorio correspondiente:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

sudo sh -c 'echo -e "[azure-cli]\nname=Azure CLI\nbaseurl=https://packages.microsoft.com/yumrepos/azure-cli\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/azure-cli.repo'

sudo yum install azure-cli

sudo pip install packaging

sudo pip install msrestazure

sudo pip install ansible[azure]

Por ultimo vamos a crear algo en Azure mediante ansible-playbook.
Los módulos disponibles para utilizar Ansible con Azure son los modules azure_rm_xxxxx. Podemos ver la lista de modulos disponibles en el siguiente link:

https://docs.ansible.com/ansible/2.5/modules/list_of_all_modules.html

Crear una VM en Azure mediante Ansible playboook

Creamos el archivo azure_create_vm.yaml con el siguiente comando:
sudo vi azure_create_vm.yaml

Dentro del archivo pegamos el siguiente contenido:

- name: Create Azure VM
  hosts: localhost
  connection: local
  tasks:
  - name: Create Resource Group
    azure_rm_resourcegroup:
      name: MyResourceGroup
      location: westus2
  - name: Create virtual network
    azure_rm_virtualnetwork:
      resource_group: myResourceGroup
      name: myVnet
      address_prefixes: "10.10.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: myResourceGroup
      name: mySubnet
      address_prefix: "10.10.1.0/24"
      virtual_network: myVnet
  - name: Create public IP address
    azure_rm_publicipaddress:
      resource_group: myResourceGroup
      allocation_method: Static
      name: myPublicIP
  - name: Create Network Security Group that allows SSH
    azure_rm_securitygroup:
      resource_group: myResourceGroup
      name: myNetworkSecurityGroup
      rules:
        - name: SSH
          protocol: Tcp
          destination_port_range: 22
          access: Allow
          priority: 1001
          direction: Inbound
  - name: Create virtual network inteface card
    azure_rm_networkinterface:
      resource_group: myResourceGroup
      name: myNIC
      virtual_network: myVnet
      subnet: mySubnet
      public_ip_name: myPublicIP
      security_group: myNetworkSecurityGroup
  - name: Create VM
    azure_rm_virtualmachine:
      resource_group: myResourceGroup
      name: myVM
      vm_size: Standard_DS1_v2
      admin_username: azureuser
      ssh_password_enabled: false
      ssh_public_keys:
        - path: /home/azureuser/.ssh/authorized_keys
          key_data: "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAqfAwtlsoniNq0y9d+k910kBIELHSHKXRYMvAU6NbZxH5WCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      network_interfaces: myNIC
      image:
        offer: RHEL
        publisher: RedHat
        sku: '7.2'
        version: latest

Lo importante a tener en cuenta es la configuracion host y connection la cual se debe mantener tal cual esta:
hosts: localhost
  connection: local

Luego para cada subtarea dentro del playbook los parámetros son los requeridos por el modulo que corresponde, eso lo pueden consultar en la documentación de cada modulo, por ejemplo, para el modulo azure_rm_resourcegroup le definimos los parámetros name y location tal como sigue:

- name: Create Resource Group
    azure_rm_resourcegroup:
      name: MyResourceGroup
      location: westus2

Cuando tenemos nuestro archivo Yaml creado corremos la tarea con ansible de la siguiente manera:

sudo ansible-playbook <playbook_name-yaml>

La salida debería ser algo parecido a la siguiente imagen:











Entradas más populares de este blog

Solución de Problemas en la Migración del DataCollector de MMA a Azure ARC

  Síntomas Observados Error al Ejecutar Comandos: Al intentar ejecutar los comandos: Import-Module "C:\ODA\Binaries\bin\Microsoft.PowerShell.Oms.Assessments\Microsoft.PowerShell.Oms.Assessments" .\run.cmd Se obtiene el mensaje de error: "ExecPkg not found. File WindowsServerAssessment.execpkg". Ubicación Incorrecta del Archivo WindowsServerAssessment.execpkg: El archivo necesario se encuentra en una ubicación diferente a la esperada: C:\Packages\Plugins\Microsoft.ServicesHub.WindowsServerAssessment\1.7\bin Falta de Estructura de Carpeta Esperada: La carpeta esperada,  C:\ODA\Packages , no existe en el sistema. Errores Registrados en los Logs: En los registros (logs) del sistema se reporta el error: "Missing Mandatory file OmsAssessment.exe". Pasos para Solucionar los Problemas 1. Desinstalación del Microsoft Monitoring Agent (MMA) y Eliminación de Variables de Entorno Desinstala completamente el MMA asegurándote de eliminar todo el software relacionado. Ve...

Probando Git desde cero

 Como parte de un tema fundamental en el área de programación tenemos el uso de la herramienta Git como repositorio de nuestro código, este puede ser compartido , mantiene un histórico y mantiene ramas de versionado. Vamos a darle una mirada. Utilizamos el siguiente tutorial: https://www.atlassian.com/es/git/tutorials/learn-git-with-bitbucket-cloud Lo primero es tener una cuenta en bitbucket e instalar git en nuestro caso en Linux. Me considero novato a nivel de linux y por eso muchos problemas que tuve los voy a ir comentando aquí por si a alguien le sirve. Yo utilice una maquina virtual con Centos en Azure, y la utilice como terminal de prueba, en ese Centos voy a instalar Git y tendré mi repositorio local de código.

Implementacion WordPress en Azure

Teniendo una cuenta en Azure, es muy fácil hacer una implementacion de WordPress. Estando el el portal de Azure, seleccionamos crear nuevo recurso y buscamos la palabra WordPress. Nos aparece la opción de crear un recurso WordPress WEB que es el que vamos a probar en este post. Luego de creado el recurso vamos a ver que se crearon los siguientes sub recursos: Un APP Service  y una Base de datos MySQL. Y dentro del APP service la URL para instalar el servicio de WordPress creado. Y esta pronto!!! Ya podes disfrutar de tu sitio de WordPress. Saludos!!!!