Question Comment gérer la configuration et le déploiement automatique de 20 machines virtuelles


J'ai un serveur de génération TeamCity, avec environ 20 "agents de génération", des machines Windows et MacOS.

Souvent, je dois installer une version plus récente de XCode ou VisualStudio ou un autre outil. Avoir à faire cela manuellement sur toutes les machines est ennuyeux et sujet aux erreurs. J'essaie de savoir quel est le meilleur moyen d'atteindre les objectifs suivants:

  • facilite la modification d'une configuration système sans avoir à le faire manuellement sur toutes les machines.
  • faciliter l’ajout d’une nouvelle machine au groupe.
  • s'assurer que les machines sont aussi identiques que possible

Les tâches exécutées par ces machines sont relativement lourdes, consomment 8 cœurs au maximum et sont très lourdes en IO. C'est bien si la solution comprend de l'argent de poche.


5
2017-07-23 22:39


origine


Où les machines virtuelles du titre entrent-elles en jeu? - MDMarra
J'ai supposé que la meilleure solution inclurait les machines virtuelles, car elles peuvent exposer un matériel virtuel identique sur toutes les machines. Peut-être que cette hypothèse est incorrecte si - Lucas Meijer


Réponses:


Vous pouvez suivre ces quelques conseils. Cela dépend de l'infrastructure en place et du logiciel que vous êtes prêt à payer et / ou à déployer.

Quel est le but d'avoir autant de machines de construction séparées? Est-ce que c'est pour garder les projets de code isolés les uns des autres, ou pour maximiser la vitesse de construction avec des ressources supplémentaires? Ou bien les machines de construction sont-elles réellement les postes de travail clients de votre réseau, qui sont utilisés à des fins supplémentaires autres que la construction?

Si vous voulez isoler les environnements de construction, la virtualisation est un bon moyen de poursuivre. Vous serez en mesure d'élever vos 20 machines de construction en tant que machines virtuelles individuelles sans le souci supplémentaire d'acheter / configurer du matériel pour chacune d'elles.

En revanche, s’il s’agit de dimensionner les performances, regrouper les machines de construction sur des ordinateurs virtuels n’a pas plus de sens, car les ordinateurs virtuels d’un hôte se disputent la disponibilité du processeur, de la RAM et du disque de cet hôte. Il est préférable d’ajouter le nombre maximum de cœurs de processeur, de mémoire vive (RAM) et de piles de disques, en ajoutant des unités matérielles supplémentaires.

En ce qui concerne l'obligation de mettre à jour les packages logiciels sur toutes les machines:  - Pour une gestion logicielle unifiée sur un certain nombre de machines Windows sans nécessiter de redéploiement du système d'exploitation, consultez le System Center Config Manager de Microsoft et System Center Essentials. Ils sonnent juste pour vos besoins: http://www.microsoft.com/systemcenter/en/us/products.aspx  - Pour un déploiement de système complet dans lequel vous souhaitez modifier une "image" système, puis redéployer cette image sur vos machines de génération, vous pouvez le faire avec des machines virtuelles utilisant des fonctionnalités intégrées dans le produit de virtualisation utilisé - "Modèles" sur ESX ou Hyper-V. Vous pouvez également rechercher une solution de génération à démarrage PXE telle que les services de déploiement Windows.

Quel que soit le moyen choisi, votre plus gros problème sera probablement l'utilisation mixte de Windows et de MacOS pour vos machines de build. Un système d’exploitation standard sur tous ces systèmes est en quelque sorte une condition préalable pour pouvoir les mettre à jour de manière unifiée.


1
2017-07-26 00:38



La raison d'être de nombreuses machines de construction est la rapidité, pas la consolidation / l'isolement. La seule raison pour laquelle je pensais à VM est qu’elles peuvent exposer un seul environnement matériel sur plusieurs machines. Je peux gérer des solutions distinctes pour les machines OSX et les machines Windows. les machines sont des machines de construction dédiées. - Lucas Meijer


http://www.puppetlabs.com/

Je ne suis pas sûr de l'étendue du support Windows, mais la FAQ mentionne le support Windows de base dans la version la plus récente. Cet outil serait parfait si nous parlions de Linux, donc si l'implémentation de Windows est comparable, ce serait probablement parfait. En ce qui concerne les machines Mac, elles sont basées sur BSD, vous pouvez donc probablement utiliser le côté Linux de la marionnette avec celles-ci également.

J'ai fait des choses similaires à ce que vous mentionnez avec Linux en utilisant Puppet. Dans puppet, vous construisez une stratégie de site à l'aide de déclarations indiquant comment les éléments doivent être coordonnés. Dans une configuration normale, vous avez un maître de marionnettes avec la stratégie de site qui est interrogé à une fréquence donnée par les postes de travail de marionnettes \ machines. Les "marionnettes" examinent les exigences qu’elles ont remplies, puis se font dire ce qu’elles doivent faire en vertu de la politique du maître des marionnettes. Les mises à jour récurrentes constitueraient une simple modification de la politique sur le maître de marionnettes, mais prenez cela avec un grain de sel. Je ne connais pas l'étendue des fonctionnalités de Windows.


Un autre populaire est CfEngine: http://www.cfengine.org/

http://novosial.org/cfengine/windows/

http://novosial.org/cfengine/macosx/

Je n'ai pas utilisé CfEngine, mais il est très populaire.


3
2017-07-26 00:21



Je suggérerais marionnette pour la partie mac. - tore-


Un produit similaire à Acronis Snap Deploy vous permettrait de déployer des mises à jour de votre IDE, etc. sans trop de maux de tête. Vous pouvez également personnaliser la construction pour des points de terminaison spécifiques. Vous pouvez ainsi précharger les pilotes de périphérique, mais la compatibilité avec OSX n'est pas compatible (vous pouvez essayer de l'exécuter à partir de Boot Camp ou de quelque chose de ce type).

Si vous aviez le temps de jouer un peu, vous pourriez essayer une solution gratuite comme WPKG.


1
2017-07-26 00:54