La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction à JClouds

Présentations similaires


Présentation au sujet: "Introduction à JClouds"— Transcription de la présentation:

1 Introduction à JClouds
Formation Introduction à JClouds 1 1 1

2 Introduction à JClouds
Formation AWS Boto Introduction à JClouds 2 2 2 2

3 Plan Présentation & Installation Concepts généraux Zoom sur EC2 et S3
Formation AWS Boto Plan Présentation & Installation Concepts généraux Zoom sur EC2 et S3 Alternatives 3 3 3 3

4 Présentation & Installation
Formation AWS Boto Présentation & Installation 4 4 4 4

5 Historique Projet Apache depuis 2011 API Java & Clojure
Formation AWS Boto Historique Projet Apache depuis 2011 API Java & Clojure API matures : ComputeService, BlobStore Supporte : AWS Eucalyptus Google Storage OpenStack OpenNebula Azure 5 5 5 5

6 Formation AWS Boto Installer JClouds Utilisation de Maven 6 6 6 6

7 Formation AWS Boto Concepts Généraux 7 7 7 7

8 Principes de base Module principal : « boto » Configuration Logs
Formation AWS Boto Principes de base Module principal : « boto » Configuration Logs Méthodes de convenance connect_<service> pour obtenir un objet Connection à un service AWS spécifique Un module boto.<service> par service AWS (ex : boto.ec2, boto.sqs) Chaque module fournit une méthode connect_to_region()  8 8 8 8

9 Formation AWS Boto Connections On récupére un objet connection à un service pour une région donnée C'est à travers cet objet qu'on manipulera notre service Paramètres communs aux méthodes connect_<service>() aws_access_key aws_secret_access_key is_secure: force l'utilisation de HTTPS region: objet boto.<service>.regioninfo.RegionInfo initialisé avec le nom de la région debug 9 9 9 9

10 Documentation en ligne
Formation AWS Boto Documentation en ligne 10 10 10 10

11 Formation AWS Boto EC2 11 11 11 11

12 Formation AWS Boto Instance (1) Un objet boto.ec2.instance.Instance représente une instance EC2 Quelques attributs utiles id : identifiant de l'instance groups : groupe de sécurité (politique pare-feu) State : état de l'instance instance_type : type de l'instance image_id : identifiant de l'AMI public_dns_name  : nom DNS publique de l'instance private_dns_name : nom DNS privé de l'instance 12 12 12 12

13 Instance (2) Opérations courantes start() démarrer l'instance
Formation AWS Boto Instance (2) Opérations courantes start() démarrer l'instance stop() mettre en pause l'instance (instance EBS uniquement) terminate() arrêter définitivement l'instance reboot() redémarrer une instance en pause add_tag()/remove_tag() ajouter/enlever un tag à l'instance update() mettre à jour les informations de l'instance 13 13 13 13

14 Réservation Conteneur d'instances (attribut : instances)
Formation AWS Boto Réservation boto.ec2.instance.Reservation représente une réservation EC2 Conteneur d'instances (attribut : instances) Une méthode utile : stop_all() 14 14 14 14

15 Connexion à EC2 import boto import boto.ec2 conn = boto.connect_ec2()
Formation AWS Boto Connexion à EC2 import boto import boto.ec2 conn = boto.connect_ec2() # alternatives # conn = boto.ec2.EC2Connection() 15 15 15 15

16 Lister les AMI disponibles
Formation AWS Boto Lister les AMI disponibles # Lister les AMI SysFera amis = conn.get_all_images(owners= [ ]) # récupérer une AMI particulière ami = conn.get_image(image_id='ami-2ea50247') 16 16 16 16

17 Démarrer une instance EC2
Boto Formation AWS Démarrer une instance EC2 Reservation = conn.run_instances('ami-xxx', key_name= key_name, security_groups=['ssh-group'], instance_type='m1.small', user_data=user_data) instance = reservation.instances[0] 17 17 17 17

18 Connaître l'état d'une instance EC2
Formation AWS Boto Connaître l'état d'une instance EC2 # mettre à jour les informations instance.update() # afficher les informations print instance.state print instance.public_dns_name print instance.launch_time 18 18 18 18

19 Terminer une instance EC2
Formation AWS Boto Terminer une instance EC2 # récupérer la réservation resa = conn.get_all_instances(filters={'tag:Name' : 'prod1'})[0] # récupérer l'instance instance = resa[0] instance.terminate() # on peut également tuer toutes les instances # resa.terminate_all() 19 19 19 19

20 Créer un groupe de sécurité
Formation AWS Boto Créer un groupe de sécurité try : # on vérifie que le groupe n'existe pas group = conn.get_all_security_groups('ssh-access') except EC2ResponseError as e : # on crée un groupe group = conn.create_security_group('ssh-access', 'open ssh port') 20 20 20 20

21 Configurer un groupe de sécurité
Formation AWS Boto Configurer un groupe de sécurité # ajouter une règle group.authorize('tcp', 22, 22, ' /0') group.authorize('tcp', 80, 80, ' /0') # supprimer une règle group.revoke('tcp', 80, 80, ' /0') 21 21 21 21

22 Allouer une EIP eip = conn.allocate_address()
Formation AWS Boto Allouer une EIP eip = conn.allocate_address() conn.associate_address(instance.id, eip.public_ip) # ou bien instance.use_ip(eip) conn.disassociate_address(eip) 22 22 22 22

23 EBS # créer un volume de 2Go vol = conn.create_volume(2, 'eu-west-1a',
Formation AWS Boto EBS # créer un volume de 2Go vol = conn.create_volume(2, 'eu-west-1a', snapshot=None) # attacher le volume conn.attach_volume(volume_id=vol.id, instance_id=instance.id, '/dev/sdb') # créer un snapshot conn.create_snapshot(vol.id) 23 23 23 23

24 Formation AWS Boto S3 24 24 24 24

25 Connexion à S3 import boto from boto.s3.connection import Location
Formation AWS Boto Connexion à S3 import boto from boto.s3.connection import Location from boto.s3.key import Key conn = boto.connect_s3() 25 25 25 25

26 Créer un bucket # créer un bucket
Formation AWS Boto Créer un bucket # créer un bucket bucket_EN = conn.create_bucket('thumbnails') # créer un bucket dans la région eu-west-1 bucket_FR = conn.create_bucket('vignettes', location=Location.EU) 26 26 26 26

27 Lister les bucket rs = conn.get_all_buckets() for bucket in rs :
Formation AWS Boto Lister les bucket rs = conn.get_all_buckets() for bucket in rs : print bucket.name 27 27 27 27

28 Stocker des données (1) # stocker une image à partir d'un fichier
Formation AWS Boto Stocker des données (1) # stocker une image à partir d'un fichier k = Key(bucket_FR) k.key = 'boto_vermelho.jpg' k.set_content_from_filename('~/images/boto_vermelho. jpg') # télécharger un objet dans un fichier k.get_content_to_filename('foobar.jpg’) 28 28 28 28

29 Stocker des données (2) # stocker des données brutes
Formation AWS Boto Stocker des données (2) # stocker des données brutes k.key = 'vermelho' k.set_content_from_string('rose' , headers = {'Content-Type':'text/plain'}) # plus tard k = bucket.get_key('vermelho') content = k.get_content_as_string() 29 29 29 29

30 Lister le contenu d'un bucket
Formation AWS Boto Lister le contenu d'un bucket # récupérer un bucket à partir de son nom bucket = conn.lookup('toto') keys = bucket.list() # keys = bucket.get_all_keys() for k in keys : print '{0} (size : {1} ko)'.format(k.name, k.size) # lister les clés préfixé par test/bidule Keys = bucket.get_all_keys(prefix='test/bidule',delimiter ='/') 30 30 30 30

31 M étadonnées k.set_metadata('lieu', 'amazonie')
Formation AWS Boto M étadonnées k.set_metadata('lieu', 'amazonie') lieu = k.get_metadata('lieu') 31 31 31 31

32 Gestion des ACL # rendre public un bucket
Formation AWS Boto Gestion des ACL # rendre public un bucket b.make_public(recursive=True) # rendre public un objet à partir de sa key k.make_public() k.generate_url(3600) # durée de vie : 1h k.set_acl('public-read-write') k.set_acl('private-read-write') 32 32 32 32

33 Formation AWS Boto ELB 33 33 33 33

34 Connexion à ELB import boto from boto.ec2.elb import HealthCheck
Formation AWS Boto Connexion à ELB import boto from boto.ec2.elb import HealthCheck conn = boto.connect_elb() 34 34 34 34

35 Définir un HealthCheck
Formation AWS Boto Définir un HealthCheck # un check toutes les 20s # sur la ressource # 3 checks réussis => ressource active # 5 checks échoués => ressource inactive hc = HealthCheck(interval=20, healthy_threshold=3, unhealthy_threshold=5, target='HTTP:8080/health') 35 35 35 35

36 Création d'un load balancer
Formation AWS Boto Création d'un load balancer zones = ['us-east-1a', 'us-east-1b'] ports = [(80, 8080, 'http'), (443, 8443, 'https')] lb = conn.create_load_balancer('lb1', zones, ports) # associer notre HealthCheck à notre LB lb.configure_health_check(hc) # récupérer le nom DNS du LB print lb.dns_name 36 36 36 36

37 Ajouter des instances à un LB
Formation AWS Boto Ajouter des instances à un LB # ajouter des instances instances = ['i_xxxx', 'i_yyyy'] lb.register_instances(instances) # les retirer lb.deregister_instances(instances) 37 37 37 37

38 Manipuler les zones dans un LB
Formation AWS Boto Manipuler les zones dans un LB # désactiver une zone lb.disable_zone(['us-east-1a']) # activer une zone lb.enable_zone(['us-east-1b']) 38 38 38 38

39 Détruire un Load Balancer
Formation AWS Boto Détruire un Load Balancer lb.delete() 39 39 39 39

40 Formation AWS Boto SQS 40 40 40 40

41 Connexion à SQS import boto from boto import Message
Formation AWS Boto Connexion à SQS import boto from boto import Message conn = boto.connect_sqs() 41 41 41 41

42 Création d'une file q = conn.create_queue('tasks')
Formation AWS Boto Création d'une file q = conn.create_queue('tasks') # récupérer l'url d'une queue print q.url https://queue.amazonaws.com/ /tasks 42 42 42 42

43 Récupérer une file # lister l'ensemble des files
Formation AWS Boto Récupérer une file # lister l'ensemble des files rs = conn.get_all_queues() for i in rs : print i.name q = conn.get_queue('tasks') 43 43 43 43

44 Envoi d'un message msg = message() # par défaut encodage base64
Formation AWS Boto Envoi d'un message msg = message() # par défaut encodage base64 msg.set_body('hello world') msg.attributes['hostname'] = socket.gethostname() q.write(msg) 44 44 44 44

45 Consommer un message (1)
Formation AWS Boto Consommer un message (1) # nombre de messages dans une queue print q.count() # récupérer un message msg = q.read() # récupérer plusieurs messages msgs = q.get_all_messages(num_messages=20) # afficher le contenu du message print msg.get_body() 45 45 45 45

46 Consommer un message (2)
Formation AWS Boto Consommer un message (2) # # attention récupérer un message, ne veut pas dire => consommer ! print q.count() # valider la consommation msg.delete() # ou q.delete_message(msg) 46 46 46 46

47 Sauvegarder/Restaurer une file
Formation AWS Boto Sauvegarder/Restaurer une file # dans un fichier q.save_to_filename('tasks_backup', sep='\n') q.load_from_filename('tasks_backup') # dans S3 (sous le schéma <queue_id>/<message_id>) q.save_to_s3(bucket_bak, prefix=None) q.load_from_s3() 47 47 47 47

48 Détruire notre file # vider la file q.clear() # destruction
Formation AWS Boto Détruire notre file # vider la file q.clear() # destruction Conn.delete_queue(q) 48 48 48 48

49 Formation AWS Boto SimpleDB 49 49 49 49

50 Connexion à SimpleDB import boto conn = boto.connect_sdb() 50
Formation AWS Boto Connexion à SimpleDB import boto conn = boto.connect_sdb() 50 50 50 50

51 Création d'un domaine # on vérifie que le domaine n'existe pas
Formation AWS Boto Création d'un domaine # on vérifie que le domaine n'existe pas domain = conn.lookup('commandes') if domain is None : domain = conn.create_domain('commandes') # lister les domaines rs =conn.get_all_domains() # autre façon de récupérer un domaine domain = conn.get_domain('commandes') 51 51 51 51

52 Métadonnées associés à un domaine
Formation AWS Boto Métadonnées associés à un domaine md = domain.domain_metadata() # lister les attributs disponibles dir(md) # lister le nombre d'items dans le domaine print md.item_count 52 52 52 52

53 Insérer un item # en un coup
Formation AWS Boto Insérer un item # en un coup domain.put_attributes('cmd1', {'id' : 1, 'nb' : 7}) # en plusieurs coups item = domaine.new_item('cmd2') item['id'] = 1 item.add_value('nb', 9) item.save() # en batch domain.put_attributes({'cmd4' : {'id' : 1, 'nb' : 7}}) 53 53 53 53

54 Récupérer un item (1) item = domain.get_item('cmd7')
Formation AWS Boto Récupérer un item (1) item = domain.get_item('cmd7') # forcer une lecture vérouillée item = domain.get_item('cmd7', consistent_read=True) 54 54 54 54

55 Récupérer un item (2) # possibilité d'utiliser « SQL »
Formation AWS Boto Récupérer un item (2) # possibilité d'utiliser « SQL » rs = dom.select(select * from commandes where id="7"') for i in rs : print i 55 55 55 55

56 Formation AWS Boto Sauvegarde XML doc = domain.to_xml() 56 56 56 56

57 Formation AWS Boto Alternatives 57 57 57 57

58 Libcloud (1) Bibliothèque Python
Formation AWS Boto Libcloud (1) Bibliothèque Python Couche d'abstraction entre les API des différents fournisseurs d'IaaS Supporte Service d'instances virtuelles Service de stockage Service de load balancing Service de DNS 58 58 58 58

59 Libcloud (2) Plus de 26 fournisseurs supportés
Formation AWS Boto Libcloud (2) Plus de 26 fournisseurs supportés AWS, Rackspace, Eucalyptus, OpenStack, OpenNebula, CloudSigma, Google Storage, Vsphere, Gandi.net, etc... https://libcloud.apache.org 59 59 59 59

60 Formation AWS Boto Deltacloud (1) 60 60 60 60

61 Deltacloud (2) Couche d'abstraction sous forme d'API REST
Formation AWS Boto Deltacloud (2) Couche d'abstraction sous forme d'API REST Développé en Ruby par Red Hat Accessible directement par des requêtes et des bibliothèques clients (Ruby, Python, C, C++) et via Curl Top Level Project Apache 61 61 61 61

62 Deltacloud (3) Architecture flexible : Un proxy REST
Formation AWS Boto Deltacloud (3) Architecture flexible : Un proxy REST 3 API en frontend : deltacloud, EC2 et CIMI Des pilotes pour gérer différents fournisseurs Supporte environ 15 fournisseurs AWS, Rackspace, OpenStack, OpenNebula, Eucalyptus, Azure (stockage), vSphere etc. Pilote « mock » pour tester ses applications ! 62 62 62 62

63 Autres Langages SDK officiel pour les langages PHP, Ruby, Java, .Net
Formation AWS Boto Autres Langages SDK officiel pour les langages PHP, Ruby, Java, .Net https://aws.amazon.com/developertools En Ruby, l'excellent Fog : Gère plusieurs fournisseurs Supporte libvirt Mode « mock » pour les tests 63 63 63 63

64 Formation AWS Boto Bibliographie 64 64 64 64

65 Formation AWS Boto Mise en pratique 65 65 65 65


Télécharger ppt "Introduction à JClouds"

Présentations similaires


Annonces Google