NB For using Ansible as a provisioner see the rgl/terraform-libvirt-ansible-windows-example repository.
Create and install the UEFI Windows 2022 vagrant box.
Install Terraform:
wget https://releases.hashicorp.com/terraform/1.9.8/terraform_1.9.8_linux_amd64.zip
unzip terraform_1.9.8_linux_amd64.zip
sudo install terraform /usr/local/bin
rm terraform terraform_*_linux_amd64.zip
Create the infrastructure:
terraform init
terraform plan -out=tfplan
time terraform apply tfplan
NB if you have errors alike Could not open '/var/lib/libvirt/images/terraform_example_root.img': Permission denied'
you need to reconfigure libvirt by setting security_driver = "none"
in /etc/libvirt/qemu.conf
and restart libvirt with sudo systemctl restart libvirtd
.
Show information about the libvirt/qemu guest:
virsh dumpxml terraform_example
virsh qemu-agent-command terraform_example '{"execute":"guest-info"}' --pretty
virsh qemu-agent-command terraform_example '{"execute":"guest-network-get-interfaces"}' --pretty
./qemu-agent-guest-exec terraform_example winrm enumerate winrm/config/listener
./qemu-agent-guest-exec terraform_example winrm get winrm/config
Login into the machine using SSH:
ssh-keygen -f ~/.ssh/known_hosts -R "$(terraform output --raw ip)"
ssh "vagrant@$(terraform output --raw ip)"
exit # ssh
Login into the machine using PowerShell Remoting over SSH:
pwsh
Enter-PSSession -HostName "vagrant@$(terraform output --raw ip)"
$PSVersionTable
whoami /all
exit # Enter-PSSession
exit # pwsh
Destroy the infrastructure:
time terraform destroy -auto-approve
List this repository dependencies (and which have newer versions):
GITHUB_COM_TOKEN='YOUR_GITHUB_PERSONAL_TOKEN' ./renovate.sh
You can externally control the VM using the following terraform providers:
- vbmc terraform provider
- exposes an IPMI endpoint.
- you can use it with ipmitool.
- for more information see the rgl/terraform-provider-vbmc repository.
- sushy-vbmc terraform provider
- exposes a Redfish endpoint.
- you can use it with redfishtool.
- for more information see the rgl/terraform-provider-sushy-vbmc repository.