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