Best way to create templates to deploy a windows cluster


I am fairly new to Terraform and am creating a template to deploy a windows cluster environment to Azure. The deployment needs multiple components including Windows Virtual Machines, Load Balancers, Storage Accounts, Networking etc.

What is classed as the best practice for setting this up?

Would it be a single tf file with all the components in? Or should it be broken down into modules for each of the main components, and then these modules called from a parent module? Or just separate modules and then deployed using a set of actions to deploy each element of the infrastructure separately?

thanks in advance.