Je ne fais plus beaucoup d'administration manuelle du système. Je considère mon infrastructure comme une entité programmable et la traite comme telle, en configurant des systèmes avec des outils qui automatisent la gestion de la configuration, la maintenance des nœuds EC2, etc. Outils dans ma boîte à outils:
- Ruby (mon langage de script / outil préféré)
- Git (contrôle de version)
- Chef d'Opscode (écrit en Ruby) (1)
- Capistrano (maintenance de masse ad hoc)
- Outils API EC2 d'Amazon pour la maintenance des instances et des images.
- Gemme AWS de Rightscale (liaisons Ruby pour EC2)
(1) - Divulgation, je travaille pour Opscode. D'autres outils remplissent cet espace comme la marionnette de Reductive Lab.
Je regroupe une AMI lorsque j'ai un nœud construit de la manière dont j'ai besoin pour une fonction spécifique. Par exemple, si je crée un serveur d'application Rails, j'obtiens tous les packages prérequis installés pour gagner du temps sur la construction.
Lorsque tout le reste échoue, je me connecte aux systèmes avec SSH. J'ai fait une administration manuelle du système pendant de nombreuses années, c'est un vieux chapeau.
Utilisez-vous une forme de système de fenêtrage et un équivalent de bureau à distance pour accéder à la boîte, ou s'agit-il uniquement d'une ligne de commande?
Je n'installe aucune interface graphique sur les serveurs, sauf si un package a une dépendance et que l'un est automatiquement installé.
Y a-t-il un équivalent à cela dans le monde Linux? (transfert de fichiers)
Je fais normalement deux types de transfert de fichiers / maintenance de fichiers.
- Installation du package
- Fichiers de configuration
Pour les packages natifs de la plateforme, j'utilise l'outil de gestion de packages standard comme APT ou YUM. Pour les installations sources (quelque chose.tar.gz), je télécharge généralement via wget.
Les fichiers de configuration sont généralement des modèles ERB gérés par Chef.
J'utilise SSH et SCP / SFTP pour transférer des fichiers manuellement.
Faites-vous vos changements de configuration / réglages de script directement sur la machine? Ou avez-vous quelque chose de configuré sur votre box local pour modifier ces fichiers à distance? Ou les modifiez-vous simplement à distance puis les transférez-vous à chaque sauvegarde?
Je garde tout ce qui concerne la gestion des systèmes dans un référentiel de contrôle logiciel. Voici mon flux de travail typique lors de la mise à jour de la configuration sur un ou plusieurs systèmes. Je pars de mon poste de travail local.
- Tirez du référentiel Git principal pour les modifications des autres.
- Modifier le ou les fichiers localement (comme mettre à jour un fichier de configuration).
- Validez le changement, poussez pour maîtriser.
- Sur le serveur Chef (connecté via SSH), tirez la dernière modification que je viens de valider.
- Déployez la configuration à l'endroit approprié sur le serveur Chef (j'utilise Rake pour cela).
- Les clients chefs s'exécutent sur un intervalle, donc ils prendront les changements toutes les 30 minutes. Si j'ai besoin de quelque chose immédiatement, je lance le chef-client manuellement.
- Vérifiez le changement!
Comment déplacez-vous les fichiers entre EC2 et votre environnement local? FTP? Une sorte de lecteur mappé via VPN?
Il existe quelques emplacements où les fichiers que j'utilise sur les nœuds EC2 peuvent être stockés.
- Serveur chef. Modèles de configuration principalement, quelques petits packages aussi.
- GitHub. Nous stockons notre code (projets open source) sur GitHub. Les nœuds EC2 peuvent y accéder facilement (comme pour une extraction de la dernière version de quelque chose).
- Godets Amazon S3. Certaines choses sont stockées dans un seau.
Je fais beaucoup de travail dans EC2, principalement en testant des environnements et des changements. En raison de mes outils et de mon flux de travail, je passe plus de temps à travailler sur des choses qui m'intéressent réellement et moins à traiter des fichiers individuels et à réfléchir à des configurations spécifiques.