83 votes

Comment faire pour automatiser la configuration de l'environnement de développement?

Chaque fois qu'un nouveau développeur a rejoint l'équipe ou de l'ordinateur d'un développeur est à l'aide de changements, le développeur doit faire beaucoup de travail pour l'installation de l'environnement local de développement à faire le projet en cours de travail. Comme une MÊLÉE de l'équipe, nous essayons d'automatiser tout, y compris le déploiement et les tests, donc ce que je pose est: est-il un outil ou une pratique qui consiste à faire du développement local la configuration de l'environnement automatisé?

Par exemple, pour la configuration de mon environnement, j'ai d'abord eu pour installer eclipse, puis SVN, Apache, Tomcat, MySQL, PHP. Après que j'ai remplie la DB et j'ai dû faire des changements mineurs dans les différents fichiers de configuration, etc... Est-il un moyen de réduire ce travail à un seul clic?

71voto

Pete TerMaat Points 2135

Il y a plusieurs options, et parfois une combinaison de ces éléments est utile:

  • installation automatisée
  • l'imagerie de disque
  • la virtualisation
  • contrôle de code source

Des détails sur les différentes options:

  1. Installation automatisée des Outils pour l'automatisation de l'installation et la configuration d'un poste de travail des différents services, d'outils et de fichiers de configuration:

    • Marionnette a une courbe d'apprentissage, mais qui est puissant. Vous définissez des classes de machines (zone de développement, serveur web, etc.) et puis, il est nécessaire d'installer, de configurer et de maintenir la boîte en bon état. Vous avez demandé un seul clic, mais la Marionnette par défaut est zéro-cliquez sur, qu'il vérifie votre machine périodiquement pour s'assurer qu'elle est toujours configuré comme souhaité. Il permet de détecter quand un fichier ou d'un mode a été changé, et résoudre le problème. Actuellement, je utiliser pour maintenir une poignée de RedHat Linux boîtes, même si il est capable de gérer des milliers de personnes. (Ne prend pas en charge Windows 2009-05-08).
    • Cfengine est une autre. Je l'ai vu utilisé avec succès dans un magasin avec 70 ingénieurs à l'aide de RedHat Linux. Ses limites ont été une partie de la raison pour Marionnettes.
    • SmartFrog est un autre outil de configuration des hôtes. Il prend en charge Windows.
    • Les scripts Shell. RightScale a des exemples de la façon de configurer une instance Amazon EC2 image à l'aide de scripts shell.
    • L'installation des paquets. Sur une machine Unix, il est possible de le faire entièrement avec des packages, et sur Windows msi peut être une option. Par exemple, RubyWorks vous fournit un large Ruby on Rails pile, tous par l'installation d'un package qui à son tour installe d'autres paquets via les dépendances.
  2. Des Images de disque Puis bien sûr il y a aussi des outils d'imagerie de disque pour stocker une image d'un hôte configuré tel qu'il peut être restauré sur un autre hôte. Comme avec la virtualisation, ce qui est particulièrement agréable pour la boîte de test, car il est facile de remettre les choses en place d'une ardoise propre. Garder les choses de façon continue jusqu'à ce jour est encore une question--est-ce la peine de faire de nouvelles images juste pour propager un fichier de configuration à modifier?

  3. La virtualisation est une autre option, par exemple, faire des copies de Xen, VirtualPC, ou de l'image VMWare pour créer de nouveaux hôtes. Ceci est particulièrement utile avec boîte de test, comme n'importe quel gâchis un test crée, vous pouvez facilement restaurer dans un endroit propre, état connu. Comme avec disque outils d'imagerie, de maintenir les hôtes à jour nécessite plusieurs étapes manuelles et de la vigilance que si une installation automatique/outil de configuration est utilisé.

  4. Contrôle de Code Source une Fois que vous avez les outils nécessaires installé/configuré, puis de le faire s'appuie devrait être une question de vérifier ce qui est nécessaire à partir d'un référentiel de code source et de le construire.

Actuellement j'utilise une combinaison de ceux-ci pour automatiser le processus comme suit:

  • Commencez avec un barebones installation du système d'exploitation sur un VMWare
  • Exécuter un script shell pour installer de Marionnettes et de récupérer ses configs de contrôle de code source
  • Marionnette pour installer les outils/composants/configs
  • Les fichiers de contrôle de code source pour créer et déployer notre application web

20voto

Jonathan Points 2381

Je suis tombé sur cette question et a été très surpris que personne n'a mentionné Vagrant encore.

Vagrant

Pete TerMaat et d'autres l'ont mentionné, la virtualisation est une excellente façon de gérer et d'automatiser les environnements de développement. Vagrant prend pour éloigner la douleur de la création de ces boîtes.

En quelques minutes, vous pouvez avoir une toute nouvelle copie de votre favori, distro Linux et en cours d'exécution, et configuré exactement de la même manière votre serveur de production.

Plus de combats avec OSX ou Windows PHP, MySQL, etc. installé. Tous les logiciels vit et fonctionne à l'intérieur de la machine virtuelle. Vous pouvez même SSH avec vagrant ssh. Si vous faites une erreur ou de casser quelque chose, juste vagrant destroy , et vagrant up pour commencer à frais.

Vagrant crée automatiquement un dossier synchronisé à votre système de fichiers local, ce qui signifie que vous n'avez pas besoin de développer au sein de la machine virtuelle (ie. à l'aide de Vim). Utilisez ce que votre éditeur de choix.

Je vais maintenant créer un nouveau "Vagrant box" pour presque tous les projets que je fais. Tous mes paramètres sont enregistrés dans le référentiel du projet, il est donc facile de le mettre sur un autre membre de l'équipe. Ils n'ont qu'à tirer le repo, et exécutez vagrant up, et ils sont littéralement prêts à aller.

Cela rend également beaucoup plus facile à gérer les projets qui ont différentes exigences en matière de logiciel. Peut-être que vous avez des projets qui s'appuient sur PHP 5.3, mais certaines plus récent que l'exécution de PHP 5.4. Il suffit d'installer la version que vous voulez pour ce projet.

Check it out!

13voto

sleske Points 29978

Un point important est la mise en place de vos projets dans la source de contrôle de sorte que vous pouvez immédiatement créer, déployer et exécuter après la caisse.

Cela signifie que vous devez également checkin helper infrastructures, telles que les Makefiles, ant buildfiles etc., et les paramètres pour les outils, tels que les IDE des fichiers de projet.

Qui devrait prendre soin de l'installation de tracas pour les projets individuels.

Pour la machine de base de l'installation, vous pouvez utiliser une image standard. Une autre option est d'utiliser votre plate-forme des outils pour automatiser l'installation. Sous Linux, vous pouvez créer un méta-paquet qui dépend de tous les paquets dont vous avez besoin. Sous Windows, une chose semblable devrait être possible en utilisant MSI ou autre.

Edit:

Idéalement, au lieu de vérifier dans le helper de l'infrastructure, de l'enregistrement de l'information qui permet l'accumulation de générer de l'aide de l'infrastructure. C'est l'approche adoptée par ex. le système de construction GNU (autotools, etc.), ou par Maven. C'est encore plus élégant, parce que vous peut (théoriquement) de générer de l'infrastructure pour tout (pris en charge) construire l'environnement, ainsi vous n'êtes pas lié par exemple à un IDE, et les paramètres à l'aide de l'infrastructure (chemins d'accès, etc.) n'avez pas besoin de dupliquer les principaux paramètres du projet.

Cependant, cela a aussi une approche plus complexe, donc si vous ne pouvez pas le faire fonctionner, je crois, à vérifier dans des trucs comme IDE directement des fichiers est acceptable.

7voto

jeremyasnyder Points 1036

J'aime utiliser Virtual PC ou VMware pour la virtualisation de l'environnement de développement. Cela fournit une norme "environnement de dev" qui pourrait être partagé entre les développeurs. Vous n'avez pas à vous inquiéter au sujet de logiciel que l'utilisateur puisse ajouter à leur système qui peut entrer en conflit avec votre environnement de développement. Il fournit également moi une façon de travailler à deux dans des projets où les environnements de développement ne peut pas être tous les deux sur un seul système (à l'aide de deux versions différentes d'une technologie de base).

3voto

David Schmitt Points 29384

L'utilisation de la marionnette à configurer à la fois de développement et d'environnement de production. À l'aide d'un haut-de-gamme du système d'automatisation est la seule manière de faire évoluer votre ops.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X