When I try to invoke CURL i get the following message

Error: Could not retrieve catalog from remote server: Error 500 on SERVER: Server Error: Invalid relationship: Exec[install app] { require => Package[curl] }, because Package[curl] doesn't seem to be in the catalog
Warning: Not using cache on failed catalog
Could not retrieve catalog; skipping run

2 Answers

It seems like you have not declare a Package Resource (for curl).You declared a relationship (with require), but you didn't declare the resource you are referring to on that dependency.
Add the following to your code and check again (you might also need to share a bit more of that code so that we understand the context).

The error indicated that require line. Do you have a package resource declaration for curl? Should look something like:

package { 'curl':
ensure => installed,
}

Also, while unrelated to the error given, the exec resource "path =>" declaration is the search path used for command execution, (similar to the $PATH environment variable) on the node. So unless the curl executable exists at '/etc/puppetlabs/code/environments/production/modules/mobile/manifests' on each node you plan to push this to it's probably not going to work.

Generally, you need to either declare the absolute path of the executable (ie /usr/bin/curl or similar) or declare the path(s) that it may exist such as: