Wyobraź sobie, że będziesz zarządzać wieloma serwerami za pomocą różnych usług, z których korzysta wiele osób. Teraz powiedz, że chcesz zmienić konfigurację lub wymienić oprogramowanie na jednym z tych serwerów. Oczywiście nie chcesz pracować na serwerach, które są w produkcji.
Gdyby to była zmiana kodu, jako programista dokonałbym tej zmiany na moim lokalnym komputerze programistycznym, przetestowałby ją lokalnie i zatwierdziłby zmiany w systemie kontroli wersji. Zmiany można następnie wdrożyć w środowisku pomostowym, przetestować dalej i ostatecznie wdrożyć w środowisku produkcyjnym. W razie potrzeby łatwo byłoby mi się wycofać.
Ogólnie, a konkretnie, jak to osiągnąć w administracji systemu?
(Pierwszą rzeczą, jaka przychodzi mi na myśl, jest używanie maszyn wirtualnych i umieszczanie obrazów maszyn wirtualnych w kontroli wersji, ale jestem pewien, że jest dużo literatury i sprytnych rozwiązań, o których obecnie nie wiem).
Odpowiedzi:
Krótka odpowiedź to „zarządzanie wdrażaniem systemu operacyjnego”, „zarządzanie konfiguracją” i „pakowanie oprogramowania”. Następuje długa odpowiedź.
Chciałbym dodać do odpowiedzi Daniela Pittmana rozbicie tego, co stanowi „system” w administracji systemami.
System lub środowisko będzie obejmować:
Objęcie nimi będzie takich procesów jak:
I chcesz je połączyć, aby pomóc Ci osiągnąć niefunkcjonalne cele, takie jak:
To szybki zrzut mózgu. Jestem pewien, że można dodać więcej do wszystkich list.
Twoje pytanie dotyczy kilku z nich bez użycia konkretnych słów. Na przykład chcesz mieć możliwość łatwego wdrażania i przywracania z powrotem, tj. Chcesz mieć łatwość konserwacji; chcesz to zrobić w środowisku testowym i testować, aż przejdzie, tj. powtarzalność, testowalność i mierzalność; zastanawiasz się nad wprowadzeniem obrazów VM do kontroli wersji, ponieważ chcesz powtarzalności wdrożeń systemu operacyjnego i konfiguracji.
Istnieje wiele narzędzi, które mogą ci w tym pomóc, niektóre z nich wspomniane przez Daniela. Niektóre inne to:
Ponownie, nie jest to wyczerpująca lista, ale coś, co trzymam w głowie, aby mnie poprowadzić i mam nadzieję, że pomoże ci również.
źródło
Oświadczenie: Jestem jednym z twórców Puppet.
Oczywistym sposobem jest po prostu zastosowanie pojęć: zdefiniowanie cyklu rozwoju / testu / produkcji i wprowadzanie zmian przez nie. Użyj kontroli wersji, aby śledzić systemy.
Krótko mówiąc, rozpoczęcie tej ścieżki prowadzi do odkrycia, że naprawdę potrzebujesz narzędzi automatyzujących te rzeczy - w zasadzie, że chcesz zautomatyzować administrację systemami, aby nie używać tych technik na komputerach, używasz ich w systemie, który zarządza maszynami.
Narzędzia takie jak Chef , Puppet , Salt i CFEngine to popularne narzędzia zaspokajające tę drugą potrzebę. Działają w ogólnym kierunku przekształcania administracji systemami w centralne rozwiązanie, które umożliwia kontrolę wersji i testowanie.
Ruch DevOps jest kolejnym źródłem dobrych informacji, jak to zrobić. Chociaż zaleceniem jest lepsza współpraca między Deweloperami i personelem Operacji, to również zmierza w tym samym kierunku.
źródło
W świecie Windows te problemy związane z zarządzaniem cyklem życia aplikacji są rozwiązywane za pomocą System Center 2012.
W System Center Virtual Machine Manager (SCVMM) usługi są definiowane przy użyciu „szablonów usług” (np. Klasyczna usługa trójwarstwowa), a środowiska wykonawcze są definiowane jako „chmury” (np. Programowanie, przemieszczanie, produkcja). Szablony usług można wersjonować i wdrażać (w sposób zautomatyzowany) w różnych chmurach. Pod przykryciem SCVMM zajmuje się dostarczaniem, wdrażaniem i konfiguracją zwirtualizowanego sprzętu (maszyn wirtualnych itp.) I oprogramowania (systemu operacyjnego, komponentów aplikacji itp.).
System Center Service Manager to element, który łączy to z punktu widzenia procesu. Na przykład zarządzanie problemami i kontrola zmian.
źródło