It looks like you really want ensure => 'file'. Your current ensure => 'present' will do what you seem to want under many circumstances, but there are plausible circumstances in which it will succeed silently without putting the system in the state you seem to want. For example, Puppet manages content only of regular files, so if the target file initially exists but is a symlink, then the resource will succeed without changing anything. However, I suspect that's not what you're seeing.
If the agent successfully retrieves a catalog from the master and successfully applies it, with no errors, and if afterward there is no file /opt/apps/bin/backup_rtcp.sh on the target machine, then by far the most likely explanation is that the catalog does not contain the resource whose declaration you present. If you turn on debug logging at the agent then you can determine from the agent's output exactly which resources are present in the catalog, whether they need to be synced or not. I can't explain why the resource is not in the catalog, if that is in fact the case; you have not presented any context, so there are too many possibilities.
John