1. A system for deploying an application in a deployment environment, comprising: a memory; a processor in communication with the memory; and a deployment module stored in the memory and executed by the processor, the deployment module operable to: receive a component to be deployed in the deployment environment; receive a description of how to deploy the component onto a logical deployment model, wherein the logical deployment model comprises a logical description of the deployment environment; prior to deployment of the component, analyze a plurality of deployed components to determine if one or more of the plurality of deployed components provides capabilities required by the component; if the capabilities required by the component are provided, generate mapping data including one or more desired attributes of the logical deployment model based on the description, map the logical deployment model to the deployment environment based on the mapping data, and automatically deploy the component to the deployment environment; and if the capabilities required by the component are not provided, prevent deployment of the component to the deployment environment.