Exec resources
While the other resource types we've seen so far (file
, package
, service
, user
, ssh_authorized_key
, and cron
) have modeled some concrete piece of state on the node, such as a file, the exec
resource is a little different. An exec
allows you to run any arbitrary command on the node. This might create or modify state, or it might not; anything you can run from the command line, you can run via an exec
resource.
Automating manual interaction
The most common use for an exec
resource is to simulate manual interaction on the command line. Some older software is not packaged for modern operating systems, and needs to be compiled and installed from source, which requires you to run certain commands. The authors of some software have also not realized, or don't care, that users may be trying to install their product automatically and have install scripts which prompt for user input. This can require the use of exec
resources to work around the problem.