I have three projects in a single solution that I want to deploy using RM DSC:
For the deployment, I have three Azure servers:
Currently I am able to deploy all three projects successfully in all three servers, but for some new directions from the boss man, I have to deploy my projects as follows:
My ultimate goal here is copying files that are needed on each of the destination servers only. For example, I would like to only keep the DB files into the DB server and similarly the WebUI files only in the App server.
You may want to checkout: continuous-deployment-using-dsc-with-minimal-change
Basically, you can use configuration to choose a "server" role type and install different packages for each. However, I find it easier to have a DSC per role type (a.k.a web role versus DB role) to encapsulate functionality (even at the cost of some duplication).
There are a few examples on web for DB install/etc, here is an example of website install: DSC Web Install
I do agree with @Graham Smith, however, on separating deployment from provisioning (vm creation and configuration). I would focus your DSCs on the configuration aspect of provision and use a second step in your overall process to deploy with msdeploy and a tool like fluentmigrator for DB.
EDIT: Added file upload option that works well on Azure (this pattern could be followed for non azure vm's too)
One way I've found to upload files is to wrap the required files in a DSC Resource. For example,
Import-DscResource -ModuleName Erlang
"$env:ProgramFiles\WindowsPowerShell\Modules\Erlang\otp_win32_17.5.exe"