i wanted a text-manifest driven solution to the problem of knowing what's on an instance and how it is configured. i especially didn't want the manifest to contain any programming language so that there are fewer barriers to understanding the instance state and so that the effects of applying the manifest are as transparent as can be.
puppet ticks many of the boxes for the requirement but the showstopper was that a puppet agent does not exist on a vanilla ec2 instance. which means that something else has to install puppet and you end up needing 2 things to solve 1 problem.
ec2 only gives you 2 options for bootstrapping a windows instance. cmd and powershell. cmd doesn't have any way of downloading something from the internet (without first having some tool like wget pre-exist on the instance), powershell does. out of the box, powershell can do lots of things but the ability to download over http is the kicker.