create abstract factory for chef/puppet, though the puppet isn't really done