Packer for creating immutable images.
Terraform for deploying VMs based on those images.
Ansible for configuring mutable systems and applications.