It's not quite as "plain-text" as Cucumber, but serverspec (Ruby, RSpec-based) and testinfra (Python) both provide the ability to write specifications for your machines to validate they're in the state you want.
BTW, testing for your infrastructure is incredibly important, although not so much "run on every machine", but to validate that your configuration management is doing what you expect. Regressions are not uncommon, and knowing that a change to your manifests hasn't prevented a machine from being configured correctly is very reassuring.
It's surprisingly easy to make a change that stops, say, a package from being installed, which is something you will never find out until you go to build a new machine and the package doesn't appear, even though it's on all the other machines. Thus, get your infrastructure test suite integrated with your CI system, doing both incremental and clean (from-scratch) builds on every commit. Then, wave your test suite over the machines once they're built. This will validate that your configuration management is still doing everything it should be.