Cloud Computing offers a vast amount of resources, available for end users on a pay-as-you-go basis. The opportunity to choose between several cloud providers is alluded by complexity of cloud solution heterogeneity. Challenges with cloud deployment and resource provisioning are identified in this thesis through experiments, performing full cloud deployments with tools offered by cloud providers. To tackle these challenges a model-based language (namedCloudML), is purposed to effectively tackle these challenges through abstraction.This language is supported by an engine able to provision nodes in “the cloud”. Topologies for these nodes are defined through lexical templates. The engine supports 24 cloud providers, through software reuse, by leveraging an existing library. Sufficient metadata for provisioned instances are provided through firstname.lastname@example.org approach. The engine is implemented and experiments have been conducted towards provisioning on two of the major cloud providers, Amazon and Rackspace. These experiments are used to validate the effort ofthis thesis. Perspectives and future visions of CloudML are expressed in the end of this thesis. This work is integrated as a part of the REMICS project.