1. A method for provisioning resources for an application, the method comprising: interpreting a resource profile of a first resource in a plurality of resources, wherein each resource in the plurality of resources is a logical or physical entity that enables the application to provide services, and the resource profile includes one or more attributes of the first resource, wherein at least one attribute defines a dependency between the first resource and a resource type and not any particular resource of that resource type, and wherein at least one attribute is inherited by the resource profile from a type profile that includes default attributes that augment the resource profile by supplying a value for at least one attribute that is not defined in the resource profile; determining, based on the resource profile of the first resource that the first resource is of a first type and has a dependency on a second resource type; and managing the plurality of resources by at least: determining that a second resource is an instance of the second resource type; provisioning the second resource to satisfy the dependency; and provisioning the first resource.