Olá pessoal, criei este post para explicar como podemos criar uma VM (virtual machine) Windows Server usando Vagrant e com alguns aplicativos extras. Aprenderemos como instalar todas as ferramentas necessárias para criar o nosso servidor.
Vamos precisar de Vagrant, Chocolatey, Git, Hugo e VSCode.
Vamos começar!
Vagrant
Agora vamos ver como podemos criar um servidor para as nossas necessidades e desejos.
Primeiro, a VM. Decidimos ir com um sistema operacional Windows Server 2019 e, para isso, procuramos uma box (vagrant box) do Windows Server em vagrants box website
No site, basta escrever na caixa de pesquisa, o tipo de VM que queres (pode ser Linux, Windows, etc). No nosso caso, basta escrever "mcree / win2019".
Dentro da página da box, você encontrará "Vagrantfile" e "New". O interesse para este post é o "Vagrantfile".
Como podes ver na página da box, tem a configuração inicial do Vagrantfile. Vais precisar disso para criar (up) o teu servidor virtual.
Este é o começo do nosso fichiero Vagrant:
Vagrant.configure("2") do |config|
config.vm.box = "mcree/win2019"
config.vm.box_version = "1.0.1584095692"
end
Como podes ver, temos a caixa para nossa vm e a sua versão.
Agora, vamos adicionar o nome da nossa vm e a quantidade de memória (RAM) que queremos atribuir:
wvm.vm.provider "virtualbox" do |v|
v.name = "Windows Server 2019"
v.memory = "2048"
end
Agora que temos o nome da nossa vm e a capacidade de RAM, vamos configurar a rede:
wvm.vm.define "Windows Server 2019" do |web|
web.vm.hostname = "winserver19"
web.vm.network "public_network"
end
Aqui, definimos o nome do host da vm e o tipo de rede que desejamos fornecer à vm (pública, privada, etc.)
Observa que existem várias variantes de configuração de rede; este post mostrará apenas a maneira mais básica de Up uma vm;
E o Vagrantfile está assim agora:
Vagrant.configure("2") do |config|
config.vm.box = "mcree/win2019"
config.vm.box_version = "1.0.1584095692"
config.vm.provider "virtualbox" do |v|
v.name = "Windows Server 2019"
v.memory = "2048"
end
wvm.vm.define "Windows Server 2019" do |web|
web.vm.hostname = "winserver19"
web.vm.network "public_network"
end
end
É muito simples e fácil (exatamente como gostamos) configurar um Vagrantfile.
Mas queremos ter algumas ferramentas instaladas na vm quando criamos a nossa máquina virtual. Para fazer isso, vamos usar um terminal (shell).
Então, precisamos adicionar ao Vagrantfile o terminal:
config.vm.provision "shell", inline: <<-SHELL
SHELL
Este é o terminal que nos permitirá de dar comandos ao terminal para adicionar, remover, mover e um monte de outras coisas para a vm;
Então, vamos instalar o Chocolatey (vê abaixo a explicação chocolatey e como instalá-lo) e, usando o Chocolatey, vamos instalar o Git, VSCode e Hugo;
Repara que SHELL no final do terminal substitui o end nas outras configurações vistas anteriormente.
Chocolatey:
Chocolatey é um módulo para o Windows instalar pacotes (ferramentas) na máquina. Por exemplo, "choco install tool" é o equivalente a "apt install tool" no Ubuntu.
Portanto, para instalá-lo, precisamos copiar e colar este comando no shell de vagrantfile:
config.vm.provision "shell", inline: <<-SHELL
Set-ExecutionPolicy Bypass -Scope Process -orce; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
SHELL
Esta linha de comando instalará o chocolatey e permitirá que uses "choco install" para instalar outras ferramentas no servidor Windows, como Git ou VSCode.
Aplicações:
Agora precisas instalar as ferramentas necessárias e usar o Chocolatey!
Portanto, adiciona ao teu shell de vagranfile os seguintes comandos:
choco install git -y
choco install vscode -y
choco install hugo -y
Estas linhas de comandos instalam as respectivas ferramentas, mas podes instalar as ferramentas que desejas e necessitas. A única coisa que precisas é choco install "ferramenta que desejas" :)
NOTA que - y é responder Sim às perguntas feitas pelo processo de instalação;
Então, o nosso Vagrantfile parece completo! Vamos ver como fica com todos os processos realizados juntos:
O Vagrantfile completo
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.box = "mcree/win2019"
config.vm.box_version = "1.0.1584095692"
config.vm.provider "virtualbox" do |v|
v.name = "Windows Server 2019"
v.memory = "2048"
end
wvm.vm.define "Windows Server 2019" do |web|
web.vm.hostname = "winserver19"
web.vm.network "public_network"
end
config.vm.provision "shell", inline: <<-SHELL
Set-ExecutionPolicy Bypass -Scope Process -orce; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
choco install git -y
choco install vscode -y
choco install hugo -y
SHELL
end