Déployez vos Cloud Publics et Privés
avec CloudStack by Ikoula
Ikoula, aujourd’hui en quelques chiffres
Création en 1998
6 M€ de CA
5 000 clients
+25% de croissance par an
45 employés dont 2/3 d’ingénieurs
Réseau 40 Gbs
5 000 serveurs infogérés
8 000 serveurs virtuels en production
> 240 accords de peering
Propriétaire du Data Centre de 1 750m2 en France
Support sur site en 24/7
3 business unit: Express Hosting, Ikoula Enterprise Services et EX10
3 business Units
Hébergement sur mesure et Services à
valeur ajoutée
Infogérance, Cloud privé, Messagerie & collaboration,
DataCenter & Réseaux…
Solutions Packagées
Serveurs dédiés & machines virtuelles, Cloud
Stockage avec IkeepinCloud, hébergement web,
Certificat SSL…
Place de marché Cloud pour les revendeurs
Messagerie avec Exchange 2010, Collaboration avec SharePoint 2010,
Communication avec Lync 2010, Cloud privé avec CloudStack…
Une infrastructure sécurisée propriétaire
Bâtiment de
1 750m²
sécurisé
Salles blanches
indépendantes
Energie,
Climatisation,
Sécurité
incendie &
Inondations
Photos by Ikoula
Un réseau multi-Opérateurs étendu
Multi Opérateurs...
1750 m2 de superficie totale
3 modules data centre
Bâtiment green generation
10 opérateurs sur site
Haute disponibilité
NOC sur site en 24/7
Ikoula choisit CloudStack
CloudStack orchestrateur multi-
hyperviseurs et multi-tenant
• Plateforme Cloud d’orchestration
sécurisée
– Permet de créer des Cloud Privés pour les clients finaux
– Hyperviseur agnostique
– Hautement flexible, securisé et ouvert
– Interface en self service complet
– Open source, standards ouverts
– Compatibilité Amazon
Historique CloudStack
 2010 Cloud.com GPLv3
 2011 Cloud.com acheté par
Citrix
 Avril 2012 don de CloudStack à
la Fondation Apache
 Mars 2013 Sortie d'incubation
TLP
 v4.0.2, 4.1...
CloudStack, c’est le choix du leader
Le plus large environnement public
Vidéo à la demande avec le Cloud
Jeux en ligne via Facebook
Les contributions :
http://www.slideshare.net/cloudstack
InfoTech Cloud Management 2012
CloudStack Server by Ikoula
 Une interface unique
 Déploiement géographique
 QoS dans le Cloud
 Support 24/7
 Maîtrise des coûts
 Interopérabilité grâce aux API compatibles
 L’offre Ikoula: l’Amazon maîtrisé
Interface unique
Services réseaux
CloudStack Server by Ikoula
 Une interface unique
 Déploiement géographique
 QoS dans le Cloud
 Support 24/7
 Maîtrise des coûts
 Interopérabilité grâce aux API compatibles
 L’offre Ikoula: l’Amazon maîtrisé
Déploiement géographique
Allemagne
Paris
Reims
Chine
Canada
Singapour
Etats-Unis
Algérie Tunisie
Maroc
Brésil
Server
Clusters
Server
Clusters
Server
Clusters
Networking
Storage
Zone
CloudStack Server by Ikoula
 Une interface unique
 Déploiement géographique
 QoS dans le Cloud
 Support 24/7
 Maîtrise des coûts
 Interopérabilité grâce aux API compatibles
 L’offre Ikoula: l’Amazon maîtrisé
Latence entre les 2
instances
Garantie de disponibilité
des ressources
QoS dans le Cloud
CloudStack Server by Ikoula
 Une interface unique
 Déploiement géographique
 QoS dans le Cloud
 Support 24/7
 Maîtrise des coûts
 Interopérabilité grâce aux API compatibles
 L’offre Ikoula: l’Amazon maîtrisé
Extranet Entreprise
Support 24/7
CloudStack Server by Ikoula
 Une interface unique
 Déploiement géographique
 QoS dans le Cloud
 Support 24/7
 Maîtrise des coûts
 Interopérabilité grâce aux API compatibles
 L’offre Ikoula: l’Amazon maîtrisé
Budget
Evolution
Maîtrise des coûts
CloudStack Server by Ikoula
 Une interface unique
 Déploiement géographique
 QoS dans le Cloud
 Support 24/7
 Maîtrise des coûts
 Interopérabilité grâce aux API compatibles
 L’offre Ikoula: l’Amazon maîtrisé
L’infrastructure, une ressource comme les
autres
Usages qui guident l’infrastructure
Portabilité des codes entre le IaaS
Interopérabilité grâce aux API compatibles
CloudStack Server by Ikoula
 Une interface unique
 Déploiement géographique
 QoS dans le Cloud
 Support 24/7
 Maîtrise des coûts
 Interopérabilité grâce aux API compatibles
 L’offre Ikoula: l’Amazon maîtrisé
L’offre Ikoula: l’Amazon maîtrisé
 Amazon EC2
 Pay as you go, compteur de consommation
 Facturation à l’heure
 Support via twitter
 Choisir la situation géographique mais sur un
nœud unique
 Partage du stockage de la VM
 Simple pour les développeurs grâce à l’API
 CloudStack Serveur d’Ikoula
 Maîtrise des coûts: CloudStack Server all inclusive
 Maîtrise de la facturation
 Infogérance et Support 24/7 sur site français
 Choix des zones géographique sur nœuds
indépendants
 Garantie de latence entre 2 instances
 Interopérabilité grâce aux API compatibles AWS
EC2 et S3
 CloudStack VM à la ressource pour tout
débordement
CloudStack Server d’Ikoula
Availability and Security
Servers Network Storage
Virtualization Layer
Resource Management
Servers Storage Network
Dynamic Workload Management
Backup LB HA Monitoring
User Interface Developer API
Amazon
Open
Stack
Custom
Image Libraries
Application Catalog
Custom Templates
Operating System ISOs
IntegrationAPI
Admin End User Console
Infogérance et Support 24/7
GeographicalZone
CloudStack Server CloudStack Instance
Services de CloudStack Serveur +
Coût à l’instance utilisée (heure ou
mensuelle)
Plusieurs Niveaux de remise
Marque blanche
Modèles CloudStack
29
 Jules-Henri Gavetti
 PDG Ikoula
 jhgavetti@ikoula.com
Merci de votre attention
29
?
Questions ?
Démo Interface CloudStack
 Interface web
 Concepts de base
 Instances
 Réseau
 Stockage et Instantanés
 Modèles
 Gestion utilisateur(s)
CloudStack API
 Rest API (non RestFull...)
 Root Admin API (Ikoula)
 Domain Admin API (vous)
 User API (vous aussi)
Création des requête
https://cloudstack.ikoula.com/client/api
Endpoint URL
 “deployVirtualMachine”
 “createLoadBalancerRule”
 “createNetwork”
Commandes API
 Exemple avec “deployVirtualMachine” :
 Service offering ID
 Template ID
 Zone ID ...
Paramètres
 https://cloudstack.ikoula.com/client/api?
 ?command=deployVirtualMachine
 &serviceOfferingId=1
 &diskOfferingId=1
 &templateId=2
 &zoneId=4
 &apiKey=miVr6X7u6bN_sdaZ0n[…]kJbPmY3y2bciKwFQ
 &signature=Lxx1DM40AjcXU%2F[…]K8RAP0O1hU%3D
Requête GET :
 Pourquoi ? Contre le rejeu !
 &signatureVersion=3
 &expires=2011-10-10T12:00:00+0530 Format iso8601
expires=YYYY-MM-DDThh:mm:ssZ
Expiration de la requête
 4 étapes :
 On « URL encode » les valeurs des paramètres
 On trie par ordre alphabétique, on « lowercase » les
paramètres
 HMAC-SHA1 avec la secret key
 Résultat en Base64
Comment signer les requêtes ?
- XML par défaut
- JSON avec « &response=json »
Et cela répond quoi ?
<listipaddressesresponse>
<allocatedipaddress>
<ipaddress>10.1.1.34</ipaddress>
<allocated>2013-05-15T11:17:10- 700</allocated>
<zoneid>4</zoneid>
<zonename>Z01-R0-IKDC01-FR</zonename>
<issourcenat>true</issourcenat>
</allocatedipaddress> </listipaddressesresponse>
Exemple
Des codes d'erreur HTTP sont retournés :
Par exemple le HTTP 401 pour des erreurs de droits /
incohérences (réseau dans une zone et déploiement
dans une autre zone)
Quelque fois cela ne marche pas ?
immédiats : listVirtualMachines deleteVolume
asynchrones (A) : rebootVirtualMachine addVpnUser
Jobs immédiats / Jobs asynchrones
0 : en cours
1: complété
2 : Fail !
jobresult ?
jobresultcode ?
queryAsyncJobResult JobID
command=deployVirtualMachine&zoneId=1&serviceOfferingId=1&diskOfferingId=1&te
mplateId=1
Retour :
<deployvirtualmachineresponse>
<jobid>1</jobid>
<id>100</id>
</deployvirtualmachineresponse>
command=queryAsyncJobResult&jobId=1
Retour :
<queryasyncjobresult> <jobid>1</jobid> <jobstatus>0</jobstatus>
<jobprocstatus>1</jobprocstatus> </queryasyncjobresult>
Exemple
Réussite:
Réussite:
Réussite:Echec :
- getVMPassword
- resetPasswordForVirtualMachine
Gestion de mot de passe
Projets Github
PHP : qpleple, Jasonhancock
Ruby, DotNet, Perl, Python, …
Librairies et outils clients
Connexion à l’API :
try {
$cloudstackClient = new
CloudStackClient($config['endpoint'], $config['api_key'],
$config['secret_key']);
}
catch (Exception $e) {
err($e->getMessage());
}
Exemple en PHP avec la librairie de qpleple
Création de 10 vms :
Exemple en php avec la librairie de qpleple
function WaitUntilJobisFinished($cloudstackClient, $jobid){
echo("Waiting for job {$jobid} to finish");
$jobstatus=0;
while($jobstatus==0) {
foreach ($cloudstackClient->listAsyncJobs() as $job) {
if ($job->jobid==$jobid) {
$jobstatus = $job->jobstatus; echo(".");
}
}
sleep (10); // On attends 10 secondes entre chaque demande
}
}
Exemple en php avec la librairie de qpleple
CloudMonkey "pour aller vite"
53
 Joaquim Dos Santos
 CTO Ikoula
Merci de votre attention
53
?
Questions ?

Présentation CloudStack by Ikoula pour les Start-up @ La Cantine