Script install_bash ------------------- Préambules ---------- Le but de ce script est de pouvoir créer une image d'une machine locale sous Debian 6.0.2, de pouvoir la compiler, l'uploader sur le "S3", et la déclarer privée ou publique "AMI". (Amazon Machine Image). Il peut aussi créer un volume "EBS". (Elastic Block Storage) A la première exécution du script, celui-ci cherchera une image Linux 2.6.32-5-xen-686 sur la machine locale. Linux 2.6.32-5-xen-686 est compatible avec Amazon pour un démarrage avec leur Kernel. Comment fonctionne le script, Amazon, le Nuage, ect ? ----------------------------------------------------- "S3" est un espace de stockage de fichiers. "S3" = Simple Storage Service. La compilation coupe en fichiers de 10 Mb. Le script uploade sur le "S3" environ 25 fichiers pour une install de base. Pour le temps d'upload, cela dépendra de votre vitesse d'envoi. A partir de ce "S3", quand tous les fichiers ont été envoyés, le script créera un 1er "AMI". A partir de ce 1er "AMI", le script pourra créer un "AMI" "EBS", avec possibilité de start stop. La compilation, par ce script, sera le résultat d'une installation chrootée de debian squeeze 6.0.2, sur une machine locale, avec les paquets minimum au fonctionnement + quelques configurations de fichiers. La machine locale est une machine chez vous, sur votre réseau local, tout simplement. Mes essais se font en i386 (32 bits) sur un vieux DURON 1500. Je n'ai pas testé en 64 bits. L'image disque fait 10 Go. C'est le maximum actuellement pour i386. Ce sera aussi la taille du disque virtuel de serveur AMAZON, quand il sera lancé plus tard. Tous les mots de passe qu'Amazon fournit, et qui sont nécessaires au fonctionnement du script, ne sont pas exportés ailleurs que dans le script. Ils sont nécessaires pour exécuter les commandes des API's Amazon. Les API's sont des commandes en console qui permettent de gérer les fonctionnalités aussi bien que le panneau Amazon. Consultez l'espace sécurité AMAZON pour obtenir les certificats X509, votre n° de compte, clé secrète, ect. Si le script demande d'installer Samba, c'est pour transférer plus facilement les clés téléchargées sous Windows, sur un poste de votre réseau local, vers votre pc local debian. Il ne faut pas faire transiter ces clés par des connexions non sécurisées. Si un répertoire /samba est créé, c'est bon aussi. Il faut alors transférer ces clés sur la machine locale debian par un autre moyen (disquette, clé usb). Je ne peux être tenu responsable de la sécurité à ce niveau de vos identifiants, pas plus, d'ailleurs, que le reste. Le script est fournit sans garantie. Il faut l'effacer du pc local à la fin de la procédure d'installation. Pour faire un volume "EBS", il y a besoin de consulter le panneau Amazon pour vérifier si certaines commandes API sont terminées.. en cours... ect. L'installation est alors semi-automatisée. Le script prend en compte les fonctionnalités API de création "EBS", mais les confirmations demeurent manuelles. Si un volume "EBS" rate pour une raison quelconque, il suffit d'effacer les volumes,... tout, sauf, bien sûr, les fichiers sur le "S3" et la 1ère "AMI" de base créée. Relancer ensuite le script et choisir l'option "EBS" seule. Pour arriver à détecter qu'une installation a déjà été exécutée une fois, le script génère au premier run, quelques fichiers vides qui sont enregistrés en /etc/*.fait ! Il ne faut pas les effacer. ps : Pour faire revenir le curseur en arrière sur la console SSH, la flèche est celle en haut à droite en dessous du F12 ! Le script est optimisé pour BELGIQUE et "locales" UTF8. Le script permet, par un menu, de générer des "AMI" et "EBS" pour les zones EU et US ! Le "Bucket" est en fait un nom de dossier dans le "S3". En zone EU, il ne faut mettre que des minuscules pour le créer, ou des tirets ou des chiffres. D'autres caractères provoqueront une erreur. La zone US est plus souple. Le script fait un test sur le Bucket. Ce test, après réponse, est directement effacé. Il permet de ne pas tout compiler pour rien, si le nom du Bucket n'est pas bon, ou la zone pas adaptée au nom. Si le script renvoie une erreur, corriger le Bucket et relancer le script. Ce qu'on appelle une instance sur Amazon est un lancement d'"AMI". Cette instance est donc l'image machine créée à partir de votre PC local qui va se lancer dans le nuage. L'instance se lance avec les noyaux Kernel d'AMAZON. Il y en a quelques uns. Le script génère le bon kernel à lancer par défaut, pour Squeeze 602. L'instance peut donc être démarrée par défaut. Dans le cas d'un lancement avec un ancien kernel, GRUB ne sera probablement pas compatible et l'instance bloquera. Le kernel, par exemple, en zone EU est : aki-4deec439 Suivant qu'on est en 386, 64 bits, dans une zone EU ou US et même qu'on déclare d'une façon ou d'une autre un disque, les noyaux Kernel à lancer seront différents. voir page 3 : http://ec2-downloads.s3.amazonaws.com/user_specified_kernels.pdf La console sur le panneau AMAZON peut donner des renseignements très utiles lors d'un démarrage. La console répond après quelques minutes après le démarrage. (cliquez à droite sur l'instance lancée) La connexion à SSH peut se faire simplement avec l'IP donnée dans la rubrique "Connect". (cliquez à droite sur l'instance lancée) Si, un moment, pour lancer une instance en vue de créer un "EBS", le script demande le nom de la clé SSH, en aucun cas, il ne demande le contenu public ou privé de la clé. Ce nom de clé est obtenu en créant une nouvelle clé sur le panneau AMAZON. Vos clés privées ou publiques restent sur Amazon ou sur votre PC Windows en vue d'un lancement avec PuTTY. Il vous faudra générer une clé .ppk, pour les utiliser sur Windows et PuTTY. Vous pouvez générer une clé .ppk avec PuTTYGen. (voir mon site : http://cloud-installation.info/) Un volume "EBS" peut se lancer en MICRO INSTANCE, ce qui veut dire, qu'à ce moment (juin2011), par le programme gratuit AMAZON, c'est 750 Hr d'instance(s) par mois... gratuit. Le script d'Eric Hammond, nommé ec2-run-user-data, sous licence apache v2, permet de lancer une commande au premier démarrage de l'instance. Il faut pour cela créer un fichier .txt sur le pc local qui fait le "run-instances". C'est en fait un script bash, comme par exemple : ( nb : vérifier les bons chemins ) ( max 16 K ) user-date.txt #!/bin/bash apt-get update apt-get -y upgrade apt-get install -y apache2 echo ok exit lancer alors avec l'option -f : ec2-run-instances ... -f user-date.txt ... Au lancement de l'instance, sera exécuter un update, upgrade, et une installation de apache2. A suivre... Marc Fiasse - 30 juin 2011