There is no right answer. But the more you can do through code, the more reproducability you have; the more you can do through git-versioned code, the more auditability you have; and the more you automate, the less repetitive work you have. So generally, try to do it all through IaC.