El actual repositorio contiene todo lo necesario para poder desplegar en Azure una arquitectura de 3 VMs (2 workers y 1 master). Este despliegue se realiza mediante IaC, usando Terraform para la creacion de la infraestructura y Ansible para la configuracion de las propias maquinas.
Para la instalacion se usara CentOs8, pero es posible instaarlo en otras distribuciones como Ubuntu/Debian.
Importamos el repositorio de Microsoft e instalamos az-cli
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
echo -e "[azure-cli]
name=Azure CLI
baseurl=https://packages.microsoft.com/yumrepos/azure-cli
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc" | sudo tee /etc/yum.repos.d/azure-cli.repo
sudo dnf install azure-cli
Para instalar Terraform deberemos de ejecutar los siguientes comandos.
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
Mas informacion: https://www.terraform.io/docs/cli/install/yum.html
Para instalar Ansible deberemos de ejecutar los siguientes comandos.
sudo dnf install -y ansible
Mas informacion: https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
Iniciamos sesion y seteamos el subscrition_id que hemos obtenido del portal de Azure. Luego crearemos el rol de Contributor.
az account set --subscription=<SUBSCRIPTION_ID_AQUI>
az ad sp create-for-rbac --role="Contributor" > data_azure.info
IMPORTANTE 1: Debemos de guardar la salida de este ultimo comando, lo necesitaremos para configurar el fichero terraform/credentials.tf
. Se puede utilizar el fichero terraform/credentials-dummy.tf
como ejemplo.
features {}
subscription_id = "<SUBSCRIPCION ID>" # Suscripcion
client_id = "<APP_ID>" # Service principal "name"
client_secret = "<PASSWORD>" # Service principal "password"
tenant_id = "<TENANT>" # Service principal "tenant"
}
Descargar las imagenes de centos-8-stream-free para poder utilizarlas posteriormente.
az vm image terms show --urn cognosys:centos-8-stream-free:centos-8-stream-free:1.2019.0810
IMPORTANTE 2: El valor de la variable ssh_user
del fichero terraform/correcion-vars.tf
tiene que ser el mismo que el valor de la variable ADMIN_SSH
en el fichero ansible/pre-deploy.sh
, por defecto es adminUsername.
IMPORTANTE 3: Debemos de crear el par clave publica/privada de SSH sin passphrase con el comando ssh-keygen
Para poder desplegar terraform correctamente ejecutamos los siguientes comandos.
# Inicia la configuracion
terraform init
# Comprobar la infraestructura
terraform plan
# Aplica la infraestructura
terraform apply
Informacion de los comandos aqui: https://www.terraform.io/docs/cli/commands/
Tambien se puede ejecutar esta secuencia de comandos mediante el script bash terraform/build.sh
Para poder destruir la infraestructura creada ejecutamos los siguientes comandos.
# Inicia la configuracion
terraform init
# Destruye la infraestructura
terraform destroy
Tambien se puede ejecutar esta secuencia de comandos mediante el script bash terraform/destroy.sh
Informacion de los comandos aqui: https://www.terraform.io/docs/cli/commands/
Antes de desplegar los playbooks de Ansible se debera de ejecutar el fichero bash ansible/pre-deploy.sh
.
Este script obtendra las IPs publicas y privadas de las vm desplegadas previamente en azure
Posteriormente deberas ejecutar el fichero bash ansible/deploy.sh
.