Comment tester le script de provisionnement de VM sans provisioning

10

Actuellement, je suis dans un état où les tests me coûtent de l'argent et beaucoup de temps ...

Contexte: je déploie des machines virtuelles sur la couche logicielle et j'utilise un script de post-déploiement (bash) qui installera tous les logiciels dont j'ai besoin une fois la machine virtuelle prête. Le problème est que je ne peux tester ce script qu'en déployant une machine virtuelle, et il faut actuellement environ 4 heures pour que le script se termine ... Donc, chaque modification que j'apporte doit créer une nouvelle machine virtuelle (coûte de l'argent) et attendre environ 4 heures pour voir si le script est cassé ou non ... Cela devient chaotique et je ne pourrai pas avancer si je reste comme ça.

J'ai besoin d'une nouvelle façon d'aborder ce type de situation et de pouvoir tester le script de provisioning plus rapidement et sans avoir à déployer une nouvelle VM à chaque fois.

Connaissez-vous un outil pour m'aider dans ce scénario?

Lucas Mattos
la source
4
N'est-il pas possible de tester votre script d'approvisionnement (bash) sur une machine virtuelle de développement locale en l'exécutant localement?
Rekovni
3
C'est un endroit où un cloud privé brillerait. En acheter un et le configurer pourrait vous coûter moins cher que ce que vous faites actuellement. Exécutez les chiffres. Voyez ce qui a du sens pour vous.
poussins

Réponses:

10

Je peux voir quelques options:

  • Utilisez Vagrant pour créer vos machines virtuelles; il sépare le processus de création de la machine virtuelle (y compris le système d'exploitation de base) et l'approvisionnement réel. Il dispose également de certaines options pour exécuter certaines étapes de provisionnement dans certaines circonstances uniquement.
  • Utilisez Ansible, Puppet ou quelque chose comme ça pour passer à un mode d'approvisionnement où vous ne faites pas les mêmes choses à chaque fois, mais seulement ce qui est nécessaire. Cela signifie que vous pouvez démarrer le travail et, au premier échec, arrêter. Réparez cette partie, puis continuez.
  • Utilisez Docker. Ceci est légèrement différent de l'approche Vagrant / Ansible en ce qu'elle crée des conteneurs (dont vous n'avez pas réellement besoin, pour autant que je sache). Il a l'avantage, au-delà de l'approche Ansible, qu'il vous donne un processus de développement étape par étape à grain très fin. C'est-à-dire, si une étape échoue, vous avez toujours toutes les images menant à cela, donc pendant le développement, avec un peu de discipline, vous devenez vraiment très, très rapide.

Tous ces outils font bien plus que ce dont vous avez besoin, mais tous vous donnent un moyen de faire votre travail progressivement. Vagrant, Ansible et Docker sont assez faciles à apprendre pour moi (tant que vous êtes en mode Dev / Test, les parties "intéressantes" commencent lorsque vous passez en production). Ansible est très minimaliste et n'a besoin que d'une connexion ssh. Vagrant et Docker pourraient ne pas être réalisables dans votre infrastructure, vous le verrez rapidement.

AnoE
la source
6

http://www.vagrantup.com

Vous pouvez utiliser vagrant pour déployer des machines virtuelles sur l'ordinateur portable local.

Vous pouvez également vérifier s'il est possible de diviser le script en parties plus petites afin qu'il ne prenne pas quatre heures pour le tester.

030
la source
5

Si le test local n'est pas une option, alors l'approche la plus simple serait d'utiliser les instantanés / sauvegardes de volume de disque à votre avantage. Ceux-ci coûteront toujours $$$, mais vous feront gagner du temps à long terme. Vous devez ensuite séparer votre script bash en différents segments / scripts de travail qui peuvent être testés individuellement. Une fois votre serveur provisionné, exécutez un script, puis prenez un instantané. S'il a réussi, exécutez le script suivant, prenez un instantané, puis rincez et répétez. Si votre script échoue, modifiez-le, revenez au dernier instantané réussi, puis réessayez.

REMARQUE: je ne sais pas si vous pouvez prendre des instantanés de disques de machine virtuelle dans IBM Cloud / Softlayer, mais il semble que vous puissiez créer une image de machine virtuelle assez facilement.

Sauvegarde des images de machine virtuelle

Vous pouvez sauvegarder une image de machine virtuelle dans votre instance. Cette fonction crée une copie de l'image de la machine virtuelle et de la configuration du cloud qui peut être restaurée ultérieurement. De plus, vous pouvez gérer ces images de sauvegarde. Les détails sur l'image de sauvegarde sont les suivants:

L'image de sauvegarde est une copie exacte de l'image de la machine virtuelle et de la configuration du cloud. Aucun nettoyage d'image n'est effectué.

  • L'image de sauvegarde ne peut pas être déployée en tant que nouvelle instance. Il ne peut être utilisé que pour restaurer l'image de la machine virtuelle associée et la configuration du cloud.

  • Seul le propriétaire du projet (ou un administrateur) a accès pour restaurer les images de la machine virtuelle de sauvegarde et la machine virtuelle de sauvegarde.

  • Si vous utilisez un cloud OpenStack, une seule opération de sauvegarde d'instance est autorisée à la fois. Si un autre utilisateur exécute une sauvegarde et que vous en lancez une sur la même instance, vous recevez une erreur indiquant qu'il existe une demande en conflit. Pour effectuer une sauvegarde, vous devez attendre que l'autre sauvegarde soit terminée.

  • Les instances OpenStack PowerVM® et z / VM® ne prennent pas en charge cette action.

  • Si l'instance est supprimée à l'aide d'IBM® Cloud Manager avec OpenStack, les sauvegardes associées sont également supprimées.

https://www.ibm.com/support/knowledgecenter/en/SST55W_4.1.0/liacb/liacbsaverestorevsvmw.html

PrestonM
la source