Stworzyliśmy serwer, który obsługuje infrastrukturę dla małego stowarzyszenia. Do tej pory próbowaliśmy zarządzać konfiguracją za pomocą Ansible, ale nie był to duży sukces. Być może robimy to źle.
Zasadniczo chodzi o to, że ten serwer pozostanie sam przez większość czasu, a ludzie będą dodawać lub zmieniać rzeczy raz na niebieskim księżycu. To sprawia, że ważne jest, aby wszystko, co jest skonfigurowane i działało na serwerze, było dobrze udokumentowane i przejrzyste, ponieważ osoby, które nie administrują często systemem, muszą stracić informacje ogólne (nie mówiąc już o szczegółach). Ponadto z czasem zmieni się skład grupy osób, które będą administrować tym serwerem (w miarę opuszczania i dołączania do „komitetu”).
Zaczęliśmy od czystej instalacji, dodając role w ansible, kiedy tylko chcieliśmy coś skonfigurować (nginx, phpfpm, postfix, firewall, sftp, munin, ..). Być może z powodu naszego braku doświadczenia, oczywiście nigdy nie jesteśmy w stanie wpisać zestawu odpowiadających zadań dokładnie tak, jak potrzebujemy, za jednym razem, również dlatego, że konfiguracja jest trochę procesem prób i błędów. Oznacza to, że w praktyce zwykle najpierw konfigurujemy dowolną usługę, którą chcemy uruchomić na serwerze , a następnie tłumaczymy na zadania odpowiadające. Możesz zobaczyć dokąd to zmierza. Ludzie zapominają następnie przetestować to zadanie lub boją się tego, ryzykując zepsucie rzeczy, lub gorzej: zapominamy lub zaniedbujemy dodawanie rzeczy do ansible.
Dzisiaj mamy bardzo małą pewność, że konfiguracja ansible faktycznie odzwierciedla konfigurację na serwerze.
Obecnie widzę trzy główne problemy:
- Trudno jest (czytać: nie mamy dobrego sposobu) testować wykonalnych zadań bez ryzyka zepsucia.
- Dodaje dodatkową pracę, aby najpierw ustalić pożądaną konfigurację, a następnie dowiedzieć się, jak przełożyć ją na zadania możliwe do wykonania.
- (Idealnie) nie używamy go wystarczająco często, aby budować znajomość i rutynę.
Ważną kwestią jest to, że dla wszystkiego, co skończymy, początkującym powinno być łatwo nauczyć się lin bez mnóstwa ćwiczeń.
Czy istnieje realna alternatywa, która nadal zapewnia pewne gwarancje i kontrole (porównywalne do łączenia plików Ansible z niektórymi master
), które „nie konfigurują rzeczy i zapisują to, co zrobiłeś”?
EDYCJA: Rozważaliśmy zobowiązanie się /etc
do git. Czy istnieje rozsądny sposób na ochronę tajemnic (klucze prywatne itp.) W ten sposób, ale nadal ma jakieś repozytorium konfiguracji dostępne poza serwerem?