terraform-libvirt-debian-syspass

Projeto Descrição Autor Atualização
terraform-libvirt-debian-syspass
Esse projeto tem o objetivo de provisionar uma Máquina Virtual (VM) com o provider libvirt (QEMU/KVM) e o Sistema Operacional Debian GNU/Linux. Em seguida será executada a esse servidor o gerenciador de configuração Ansible (ansible-syspass) para instalar o sysPass Systems Password Manager com o Apache, mariaDB, PHP e toda sua configuração.
Glauber GF (mcnd2)
2022-10-22

Provisionar uma Máquina Virtual com o libvirt (KVM)

Image

O projeto libvirt

  • é um kit de ferramentas para gerenciar plataformas de virtualização;
  • é acessível a partir de linguagem de programação como C, Python, Perl, Go e muito mais;
  • está licenciado sob licenças de código aberto GPL;
  • suporta KVM, Hypervisor.framework, QEMU, Xen, Virtuozzo, VMWare ESX, LXC, BHyve e mais;
  • tem como alvo Linux, FreeBSD, Windows e macOS;
  • é usado por muitas aplicações.

Provisionando com o Terraform

Nesse parte vou explicar alguns aspectos sobre o projeto.

Temos 6 arquivos fundamentais para o projeto que são:

  • provider.tf – O provider Libvirt é usado para interagir com hipervisors libvirt do Linux.
    O provedor precisa ser configurado com as informações de conexão adequadas antes de poder ser usado.

  • libvirt.tf – Aqui fica a maior parte da configuração do provisionamento para o Terraform lê e interpretar o que esta sendo solicitado.

Dentro de cada bloco temos as configurações com o objetivo de:

  Gerenciar um volume de armazenamento em libvirt;
  Gerenciar um pool de armazenamento em libvirt (*atualmente, apenas o conjunto de armazenamento baseado em diretório é suportado*);
  Gerenciar um recurso de rede VM no libvirt;
  Gerenciar um recurso de domínio VM dentro da libvirt; e
  Gerenciar um disco ISO cloud-init que pode ser usado para personalizar um domínio durante a primeira inicialização.
  • variable.tf – A linguagem Terraform inclui alguns tipos de blocos para solicitar ou publicar valores nomeados.
    Um valor local atribui um nome a uma expressão, para que se possa usar o nome várias vezes em um módulo em vez de repetir a expressão.

  • output.tf – Os valores de saída disponibilizam informações sobre a infraestrutura na linha de comando e podem expor informações para outras configurações do Terraform usarem.

  • config/network_config.yml – Esse formato de configuração de rede permite que os usuários personalizem as interfaces de rede de suas instâncias atribuindo configurações de sub-rede, rotas de criação de dispositivos virtuais (bonds, bridges, vlans) e configuração de DNS.

  • config/cloud_init.yml – O cloud-init é a maneira mais simples de realizar algumas tarefas por meio de dados do usuário. Usando a sintaxe cloud-config, o usuário pode especificar algumas coisas em um formato amigável.

Isso inclue:

  O apt upgrade para ser executado na primeira inicialização;
  Um espelho apt diferente para ser usado;
  Fontes apt adicionais para ser adicionadas;
  Certas chaves SSH devem ser importadas;
  E muitos mais…

Aplicando o projeto

Para aplicar o projeto, basta executar os comandos terraform a seguir:

  • initPreparar o diretório de trabalho para outros comandos.
terraform init
  • planMostrar as alterações exigidas pela configuração atual.
terraform plan
  • applyCriar ou atualizar infraestrutura.
terraform apply
  • destroyDestruir a infraestrutura criada anteriormente.
terraform destroy

Caso queira executar os comandos apply e destroy sem digitar yes para a confirmação, acrescente nos comandos o parâmetro –auto-approve, assim após executar o comando será executado sem pedir a interação da confirmação, não tem volta, rs!

  • –auto-approveIgnorar a aprovação interativa do plano antes de aplicar.

terraform apply --auto-approve
terraform destroy --auto-approve

Licença

GNU General Public License (Licença Pública Geral GNU), GNU GPL ou simplesmente GPL.

GPLv3


Copyright (c) 2022 Glauber GF (mcnd2)

Este programa é um software livre: você pode redistribuí-lo e/ou modificar
sob os termos da GNU General Public License conforme publicada por
a Free Software Foundation, seja a versão 3 da Licença, ou
(à sua escolha) qualquer versão posterior.

Este programa é distribuído na esperança de ser útil,
mas SEM QUALQUER GARANTIA; sem mesmo a garantia implícita de
COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM. Veja o
GNU General Public License para mais detalhes.

Você deve ter recebido uma cópia da Licença Pública Geral GNU
junto com este programa. Caso contrário, consulte https://www.gnu.org/licenses/.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/

Visit original content creator repository

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *