mentoriaiac / iac-modulo-compute-cluster-gcp

Módulo Terraform de criação de Cluster de compute para GCP
2 stars 5 forks source link

Criação de um template com as saidas do terraform para RKE #3

Open hazkall opened 3 years ago

hazkall commented 3 years ago

Criação de um template com as saidas do cluster.

O objetivo será utilizar esse template para criar o YAML de configuração do RKE.

Para criação do template de terraform podemos utilizar.

Exemplo de utilização


resource "local_file" "ansible_inventory" {

  content                   = templatefile("${path.module}/templates/invetory.tpl",
  {

  #Master Node Configuration
  K8S_MASTER_NODE_IP        = element(flatten(var.private_ip_template),0)
  hostname_master           = element(var.hostname_template, 0)
  K8S_MASTER_NODE_PUBLIC_IP = element(flatten(var.public_ip_template), 0)

  #Worker Node Configurationcd 
  hostname_worker           = var.hostname_template
  K8S_WORKER_NODE_PUBLIC_IP = flatten(var.public_ip_template)

  })
  filename                  = "${path.root}/../Ansible/hosts"
}

Template de utilização no terraform, extensão tpl

invetory.tpl

[k8s-masters]
ansible_host=${hostname_master} ansible_ssh_host=${K8S_MASTER_NODE_PUBLIC_IP}

[k8s-workers]
%{ for x in range(1, length(K8S_WORKER_NODE_PUBLIC_IP)) ~}
ansible_host=${hostname_worker[x]} ansible_ssh_host=${K8S_WORKER_NODE_PUBLIC_IP[x]}
%{ endfor ~}

[kubernetes:children]
k8s-masters
k8s-workers

[kubernetes:vars]
K8S_MASTER_NODE=${hostname_master}
K8S_API_SECURE_PORT=6443

A ideia é trabalhar com os outputs do terraform, fazer a formatação deles e encaixar no template para criação do YAML de configuração

DoD

Obs: Você pode usar o comando abaixo pra gerar um arquivo de configuração e usar ele como base pra adicionar apenas os ips e nomes das maquinas:

rke config --name cluster.yml
hazkall commented 3 years ago

image

Um conceito inicial de como seria a implementação.