Abstract : Configuring and executing application across multiple clouds is a challenging task due to the various terminologies used by cloud providers to describe their services and features. Likewise, the services are regularly offered at different levels of abstraction, such as infrastructure-as-a-service (IaaS) and platform-as-a-service (PaaS). While IaaS services provide low-level access to the infrastructure, PaaS services enable the users to delegate the management of the computing environment to the cloud providers. Consequently, at the IaaS level, the users are responsible for managing the computing resources, whereas, at the PaaS level, the users must develop native cloud applications following the constraints defined by the PaaS provider. These two options exist, mostly because the clouds target web applications, whereas users' applications are commonly batch-oriented. Considering how difficult is the task of configuring and executing applications across various clouds, we advocate the use of autonomic systems to do this work automatically. For this purpose, in this paper, we propose and evaluate an autonomic and goal-oriented system. Our system implements self-configuration, self-healing, and context-awareness properties. In addition, it relies on a hierarchical P2P overlay (a) to manage the virtual machines running on the clouds and (b) to deal with inter-cloud communication. Likewise, it depends on a software product line engineering (SPLE) method to enable applications' deployment and reconfiguration at runtime, without requiring pre-configured virtual machine images. Experimental results show that our system frees the users from the duty of configuring and managing the execution of a non-native application on single clouds and over many clouds. In particular, our system tackles the lack of middleware prototypes that can support different scenarios when using simultaneous services from multiple clouds.