Jaką rolę odgrywają narzędzia do zarządzania konfiguracją w niezmiennej infrastrukturze?

12

Jeśli używam niezmiennych serwerów / kontenerów, czy potrzebuję narzędzi takich jak Szef Kuchni, Marionetka, Ansible lub Sól? Te narzędzia do zarządzania konfiguracją mają na celu ustanowienie konfiguracji, a następnie jej utrzymanie.

Jeśli wdrażam niezmienne serwery, czy powinienem używać narzędzi do zarządzania konfiguracją tylko do początkowego udostępniania?

Dave Swersky
źródło

Odpowiedzi:

12

Istnieje kilka odpowiedzi na to:

  1. Coś musi zbudować te niezmienne obrazy. Z pewnością łatwiej jest używać skryptów proceduralnych w starym stylu, aby zbudować coś, zaczynając od znanego stanu początkowego, ale z czasem może to stać się bardzo nieporęczne (np. Dockerfiles), szczególnie gdy w końcu chcesz dużej matrycy różnych obrazów dla rzeczy takie jak różne wersje oprogramowania, różne środowiska itp. Packer i inne narzędzia do tworzenia obrazów dobrze integrują się z Chef, Ansible, Puppet, Salt i innymi.

  2. Niezmienność to spektrum, a nie binarne. Nawet przy wdrożeniu „bardzo niezmiennym” często zdarza się, że niektóre pliki konfiguracyjne wymagają zarządzania środowiskiem wykonawczym. Jest to również miejsce, w którym można korzystać z narzędzi CAPS, chociaż lżejsze opcje, takie jak szablony konsulów itp., Mogą mieć większy sens w zależności od ogólnej infra. Jeśli robisz niezmienne serwery aplikacji, ale serwery baz danych są bardziej tradycyjnie zarządzane za pomocą Chef, wtedy warto używać Chef nawet po niezmiennej stronie do drobnych zadań zarządzania.

  3. Zarządzanie przez zero dni. Niezmienność jest dobra, ale co zamierzasz zrobić, gdy spadnie następny OpenSSL 0day? Jeśli masz gotową linię kompilacji do tworzenia natychmiastowych obrazów poprawek i wdrażania ich, to świetnie. Ale wiele osób prawdopodobnie nie będzie miało takiej zdolności do szybkiego obrotu.

  4. Rzeczy, które nie mogą być niezmienne. Brak odpowiedzi, ale cała infra rzadko jest w 100% niezmienna. Rzeczy takie jak serwery baz danych i stacje robocze dla programistów (tak, to część twojej infrastruktury) są gdzieś pomiędzy trudnymi a niemożliwymi do uczynienia niezmiennymi.

koderanger
źródło
Robisz wiele założeń na temat „wielu ludzi”. Ci, którzy nie mogą generować obrazów dla swojej niezmiennej infrastruktury, najprawdopodobniej nie mają na początku niezmiennej infrastruktury.
Evgeny
Istnieje duża luka między „można wdrożyć przy użyciu niezmiennych kontenerów” a „może odbudować i ponownie wdrożyć każdy pojemnik w ciągu 6 godzin, nawet w przypadku innych wdrożeń”.
coderanger
Z mojego doświadczenia wynika, że ​​kiedy masz tę lukę (6 godzin), nie możesz mieć niezmiennej infrastruktury. Posiadanie niezmiennych serwerów i szybkie budowanie niezmiennych serwerów nie są identycznymi zdolnościami, ale są ze sobą ściśle powiązane.
Evgeny
Wiele osób, które mówią „prowadzimy niezmienne pojemniki”, nie należą do tej kategorii. Dlatego wskazanie, że problemem jest zajęcie się, co było sednem pytania.
coderanger
Możesz zdefiniować „niezmienny”, co oznacza „nikogo SSH nie wprowadza i nie dokonuje ręcznych zmian”, ponieważ nie może to oznaczać całkowicie niezmiennego, ponieważ zmieniają się one podczas normalnych operacji. Nawet pisanie pliku pidfile jest mutacją.
Gajusz
0

Myślę, że absolutnie niezmienne środowisko to zły pomysł.

Narzędzia CM, takie jak Ansible, Chef, Puppet, mogą być przydatne w wielu przypadkach, w tym także w twoim.

Używam ansible do początkowego udostępniania wystąpień maszyn wirtualnych w GCP.

Quarind
źródło