Cloud Computing started by renting computing infrastructures in form of virtual machines, which include hardware resources such as memory and processors. However, due to its popularity it gave birth to Everything-as-a-Service concept, where each service can comprise large variety of software/hardware elements. Although having the same concept, services represent complex environments that have to be deployed and managed by a provider using individual tools. The tools are usually used manually or specifically integrated for a single service. This requires changing an entire deployment procedure in case the service gets modified, while additionally limiting consolidation capabilities due to tight service integration. In this paper, we utilize Model-Driven Development approach for managing arbitrary Cloud services. We define a metamodel of a Cloud service called CoPS, which describes a service as a composition of software/hardware elements by using three sequential models, namely Component, Product and Service. We also present an architecture of a Cloud Management System (CMS) used for automatic service management, which transforms the models from an abstract representation to an actual deployment. The approach is validated by realizing four real-world use cases using a prototype implementation. Finally, we evaluate its consolidation capabilities by simulating resource consumption and deployment time.