Cette question peut ne pas se rapporter spécifiquement aux machines virtuelles Azure, mais j'espère que Azure offre un moyen plus facile de le faire que Amazon EC2. P>
J'ai des applications longues exécutées sur plusieurs machines virtuelles Azure (c'est-à-dire des sites Web non azur ou des rôles [PAAS]). Ce sont des applications de console simples / Windows Services. Parfois, je ferai une actualisation du code et besoin de arrêter ces processus forts>, mettre à jour le code / binaires strong>, puis redémarrez ces processus forts>. P >
Dans le passé, j'ai tenté d'utiliser des pstools ( Psexec strong>) pour le faire à distance, mais cela semble être un tel piratage. Y a-t-il un meilleur moyen de tuer l'application à distance, de rafraîchir le déploiement et de redémarrer l'application? P>
Idéalement, il y aurait une application " Publish Console App Strong>" équivalent de Visual Studio qui me permettrait de déployer le code comme s'il s'agissait d'un site Web Azure, mais je suppose que ce n'est pas possible. p>
Merci beaucoup pour toute suggestion! p>
3 Réponses :
Il y a un certain nombre de moyens "corrects" pour perfectionner votre tâche. P>
Si vous exécutez Windows Azure Application - Il existe un simple guide sur MSDN < / a>.
Mais si vous devez le faire avec une application de console régulière, vous avez un problème. P>
Le Microsoft-Way est d'utiliser WMI - bonne technologie pour tout type de gestion des serveurs Windows distants. Je suppose que WMI devrait être correct pour vos besoins. P>
Et la dernière façon: Installez Git sur chaque VM Azure et écrivez un script simple Server planifié pour exécuter toutes les 5 minutes pour mettre à jour le code du référentiel, construire, tuer l'ancien processus et commencer une nouvelle. Publiez votre mise à jour du référentiel, c'est tout.
Définitivement pirater, mais cela fonctionne même pour des machines non-fenêtres. P>
merci pour votre aperçu. WMI a des opportunités intéressantes.
Un modèle commun consiste à stocker des éléments, tels que les applications de ligne de commande, dans Windows Azure Blob Stockage. Je fais cela fréquemment (par exemple: je stocke tous les fichiers binaires MongoDb dans une blob, zip'd, avec une fermeture à glissière par version). Lors de la démarrage VM, j'ai une tâche qui télécharge le zip de BLOB sur le disque local, décale vers un dossier local et démarre le processus Mongod.exe (ceci s'applique également bien à d'autres applications de console). Si vous avez une installation plus complexe, vous auriez besoin de saisir un MSI ou un autre type d'installateur automatisé. Deux bonne chose à propos de stocker ces applications dans Blob Stockage: P>
Lors de la mise à jour de l'application de la console: Vous pouvez télécharger une nouvelle version sur Blob Stockage. Maintenant, vous avez quelques façons de signaler mes VM à mettre à jour. Par exemple: p>
Ceux-ci s'appliquent bien aux exe autonomes (ou exe XCopy-déployables). Pour les MSI nécessitant des autorisations de niveau administrateur, celles-ci doivent être exécutées via un script de démarrage. Dans ce cas, vous pourriez avoir un événement de changement de configuration, qui serait géré par vos instances de rôle (comme décrit ci-dessus), mais vous auriez les instances de redémarrage, ce qui leur permettrait d'exécuter le MSI via le script de démarrage. P>
Merci pour votre réponse bien pensée. Il y a quelques bons concepts là-bas ... jamais pensé à redémarrer comme composante des déploiements de code, mais si nous avons suffisamment de machines en cours d'exécution, je suppose que cela pourrait fonctionner. Je l'aime bien!
vous pourriez p>
Host CODE> pour extraire (et décompressez) le em> emballez em> dans un dossier distant em> li>
- Utilisez PowerShell Remoting vers
hôte code> pour exécuter un installer.ps1 code> à partir du contenu package em> (c.-à-d. Télécharger et configurer) comme vous le souhaitez. li>
ol>
Cette même approche peut être effectuée avec votre Entrée-PSSession -Computername $ env: ComputerNameName CODE> Pour déployer rapidement une stratégie de construction locale qui signifie que vous utilisez une stratégie identique pour Dev, Production et Test A la livraison continue . P>
Une optimisation potentielle que vous pouvez effectuer ultérieurement (si nécessaire) est (pour une construction locale) pour couper les étapes 2 et 3, c'est-à-dire que vous prétendez que vous avez emballé, téléchargées, téléchargées et déballées et fournissez simplement le dossier emballage em> à votre installation install.ps1 comme dossier distant em> et exécutez votre install.ps1 code> de manière interactive dans une session non rectotée. P>
Une variation commune sur le thème ci-dessus consiste à utiliser un mécanisme efficace de transfert de fichiers et de versions tels que GIT (ou (fright) TFS!) Pour obtenir le "poussé quelque part à la fin de la construction" et "tirer au début du déploiement" Des portions de l'exercice (sites Web Azure propose un point de terminaison TFS ou Git intégré qui rend chaque «poussée» implicitement d'inclure une «tirage» à l'extrémité extrême). P>
Si votre code est XCOPY déployable (et Shadow Copied), vous pouvez même avoir une image d'application complète dans Git et simplement faire une pioche pour mettre à jour votre site (avec ou sans étape 4 composée d'un PowerShell Remoting Execute of an install.ps1 code>). p>
Lien vers Git Déployer pour Azure Sites Web Article windowsazure.com/en-us/develop/net/common-tasks/.../a>