Provisionamento de 3 hosts em ambiente KVM via terraform e ansible-playbook para configuração dos hosts Cloudera 5.16.2.
- Terraform
- Ansible
- Linux
- KVM
- KVM libvirt
- golang v1.13
- Terraform v0.12
- Plugin terraform-provider-libvirt
- Ansible
- Python
- Psycopg2
- machine.tf
- output.tf
- variables.tf
- playbook.yml
- inventory.hosts
variables.tf este arquivo de variáveis permitirá realizar as personalizações necessárias para adaptação de outras necessidades. Abaixo uma breve explicação:
Variável responsável por definir o número de vms a serem provisionadas:
variable "instance_count" {
default = "3"
}
Variável responsável por definir a imagem base do S.O (qcow2):
variable "disk_img" {
default = "file:///Dados/Vms/centos7.0"
}
Variável responsável por definir a rede a ser provisionada:
variable "vm_network_addresses" {
description = "Configura Rede"
default = "192.168.10.0/24"
}
Variável responsável por definir o ip estático das vms (OBS: existem 3 ips pois, a variável instance_count foi definida com o valor 3):
variable "vm_addresses" {
default = {
"0" = "192.168.10.10"
"1" = "192.168.10.11"
"2" = "192.168.10.12"
}
}
Variável responsável por definir o nome da rede a ser provisionada no KVM:
variable "vm_network_name" {
description = "Define o nome da rede no KVM"
default = "clustercloudera"
}
Variável responsável por definir o domínio dos hosts:
variable "domain_name" {
default = "lab.local"
}
OBS:foi cadastrado previamente no arquivo /etc/hosts da estação de trabalho que dispara os scripts de provisiomaneto do ambiente os ips e nomes dos hosts:
192.168.10.10 cloudera0
192.168.10.11 cloudera1
192.168.10.12 cloudera2
validar a estrutura dos arquivos terraform:
$ terraform validate
revisar o plano de execução:
$ terraform plan
provisionar ambiente:
$ terraform apply -auto-approve
resultado esperado:
Resultado do provisionamento dos hosts KVM
rede provisionada:
vms provisionadas:
Resultado esperado: