Ir para o conteúdo

Básico necessário sobre Vagrant

Vagrant é uma ferramenta para provisionamento de máquinas virtuais. Dizendo de forma simples, ele cria e configura máquinas virtuais usando um arquivo de configuração chamado Vagrantfile. Nesse arquivo podemos descrever como nossas vms serão configuradas.

Exemplo de um arquivo do Vagrant:

Vagrantfile
1
2
3
Vagrant.configure("2") do |config|
  config.vm.box = "archlinux/archlinux"
end
A linha destacada é referente a um box do Vagrant.

Vagrant boxes

Um box do vagrant no nosso contexto é uma máquina virtual pré-fabricada por uma pessoa. Existem milhares delas e elas podem ser acessadas no Vagrant Cloud

Eu optei por usar máquina do arch linux para iniciarmos nossa configuração.

Criando uma máquina virtual

Nosso primeiro passado é copiar o seguinte Vagrantfile:

Vagrantfile
1
2
3
Vagrant.configure("2") do |config|
  config.vm.box = "archlinux/archlinux"
end

e colocar no diretório do nosso projeto. Que vamos inicialmente chamar de ansible-lab.

Dessa forma podemos criar nossa máquina virtual usando um simples comando:

$ Execução no terminal
vagrant up

O resultado deve ser algo parecido com isso:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'archlinux/archlinux'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'archlinux/archlinux' version '20221101.99038' is up to date...
==> default: Setting the name of the VM: ansible_lab_default_1668393945684_70462
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection reset. Retrying...
    default: Warning: Remote connection disconnect. Retrying...
    default: 
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default: 
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => /home/z4r4tu5tr4/ansible_lab

E ele criará uma máquina virtual com archlinux no nosso virtualbox.

OBS: Esse comando pode demorar um pouco, pois ele vai baixar um hd virtual do archlinux e instalar no seu virtualbox.

Agora que temos uma máquina virtual podemos partir para o segundo passo. Que é criar dois nós para trabalhar com ansible.

Destruindo a máquina criada

Caso você tenha problemas ou queira simplesmente destruir a máquina virutal. O vagrant pode destruir de forma simples a vm e é isso que faremos agora.

vagrant destroy

Com isso podemos ter nosso ambiente limpo outra vez:

Configurando mais de uma máquina virtual

Agora que entendemos a dinâmica de criação de vms do vagrant, podemos configurar duas máquinas para o ansible. Uma que vamos chamar de main que será de onde chamaremos o ansible e uma que será controlada por ele. Que se chamará somente arch.

Para isso, só precisamos alterar nosso Vagrantfile:

Vagrant.configure("2") do |config|

  config.vm.define "main" do |main|
    main.vm.box = "archlinux/archlinux"
  end

  config.vm.define "ubuntu" do |ubuntu|
    ubuntu.vm.box = "ubuntu/focal64"
  end

end

Agora temos duas máquinas virtuais. Uma configurada com Archlinux e uma com Ubuntu Linux. Porém, cada uma tem uma função diferente na nossa rede.

O vagrant pode subir uma única vm ou as duas de uma vez:

vagrant up          # Inicia as duas vms
vagrant up ubuntu   # Somente a máquina ubuntu
vagrant up main     # Somente a máquina main (vamos escolher essa opção)
Authors: dunossauro