Vagrant
If you have vmware then you can use it as provider but vmware with vagrant needs $80 purchase. so you can use https://github.com/mechboxes/mech.
with this you can vmware with vagrant for free. Credit goes mech developers.
$basic_pkgs = <<SCRIPT
yum update -y
yum install vim ntp -y
systemctl start ntpd
systemctl enable ntpd
SCRIPT
Vagrant.configure("2") do |config|
config.vm.box = 'centos/7'
config.vm.provision "shell" , inline: $basic_pkgs
config.vm.hostname = "puppetserver.example.com"
config.vm.network "private_network", ip: "192.168.56.150"
config.vm.provider :virtualbox do |vb|
vb.customize ["modifyvm", :id, "--memory",4096]
vb.customize ["modifyvm", :id, "--cpus", 2]
end
end