There are a lot of operations that companies with global complex infrastructure have keenly been interested, this includes DevOps, ITOps, and SecOps. Eventually, horizontally scaled employee head count in these fields became unwieldy and expensive. Engineers developed scripts and procedures to juggle this digital monsters companies had built from hundreds of thousands of devices. This jerry rigged solution itself had little runway and was a method that produced duct tape that only the engineers who made them could maintain.
The industry finally produced a solution in first generation 'Infrastructure as Code' software such as Puppet and Chef. this technology moved every device from being "pets" to a majority being "cattle."
Even so our needs for scale, security, and for scope management lead to second generation systems such as Terraform, and cloud specific systems such as AWS CloudFormation. These systems are niche to the cloud and assume no control to underlying infrastructure, but in return they handle more the supporting resources around virtualization and containerization such as virtual networks and ready provisioned applications.
Third generation 'Infrastructure as Code' applications such as Ansible and the Salt Project have offered the greatest range of benefits for both cattle and pet management. These open-source projects provide control at hardware levels, virtualization, and application level. Dominate when employed to their respective strengths. Ansible is low learning curve with quick results system, while Salt scales with a distribution model allowing management of global infrastructure that could include dozens of data centers and hundreds of thousands of devices.
Fourth generation is on the horizon but they have dug into the public cloud abstracted virtualization infrastructure. A notable one is Pulumi, its offered many flexibility benefits but again further from comprehensive management and closer to pet platform deployment and software CI/CD frame working. Attractive, but frustrating as soon as you want to use it for something fundamental like a diverse data center of network devices. Something that Salt can actually manage if you desire.