Zarządzanie konfiguracją z użyciem programu Git.

Mechanizm aktualizacji konfiguracji systemu oparty o git. 

Idea

Zmiana konfiguracji polega na:

  • Otwarciu gałęzi (branch) git'a w katalogu zawierającym. Kopie zmienianych plików konfiguracyjnych, instrukcje i skrypty wykorzystywane przy zmianach.
  • Wykonaniu zmian na kopii.
  • Przygotowaniu skryptu akceptacji zmiany lub jej wycofania
  • Wykonanie i testowanie zmian.
  • Ewentualne korekty / cofnięcia.
  • Ostateczna akceptacja zmian i połączenie otwartej gałęzi z głównym repozytorium

Zakłada się istnienie w systemie grupy gadmin do której należą użytkownicy dokonujący zmian.

Katalog zawierający zmiany

Katalog standardowo nazywa się /admin.

UWAGA!

Katalog dostępny dla użytkowników z uprawnieniami - w żadnym razie nie powinien zawierać haseł!!!

Działania w katalogu wykonujemy z uprawnieniami zwykłego użytkownika, a jedynie skrypty zmiany wykonujemy jako root (sudo).

Katalog /admin zawiera:

1. Pliki:

a) version.txt - plik tekstowy z numerem wersji

Wersja ma strukturę: 999.888.777.666

Gdzie

999 - duża modernizacja (baseline, wersja bazowa)

888 - rozbudowa (wydanie, issue)

777 - poprawka (revision)

666 - zmiana poprawki (serial)

1.4.2 oznacza pierwszą wersję bazową, 4 wydanie i drugą rewizję.

zob:

http://www.ipipan.waw.pl/~subieta/prace%20magisterskie/Kontrola%20wersji%20i%20zarzadzanie%20konfiguracja%20%E2%80%93%20Bielik.pdf


b) history.txt - historia zaakceptowanych zmian

Plik o strukturze csv : wersja, kiedy początek, kiedy koniec, kto, opis


c) branches.txt - otwarte zmiany.

Struktura jak wyżej (bez kiedy koniec) - ale dotyczy tylko aktywnych gałęzi git

2. Katalogi

a) katalogi wersji - nazywany zgodnie z powyższą konwencją z punktu 1a (plik version.txt) - tyle, że bez ostatniego członu.

Czyli w katalogu 1.0.2 mieści się poprawka 1.0.2 wraz z wszystkimi jej zmianami.

b) bin - skrypty wykorzystywane przy konfiguracji

skrypty mogą być mieć przyrostek w postaci numeru wersji w której zostały użyte lub zmienione. Wtedy w katalogu bin istnieje link (ln -s) do najnowszej wersji - z nazwą bez przyrostka z numerem wersji..

Natomiast w katalogu wersji - link (także z nazwą bez przyrostka) - do użytej wersji skryptu.

c) cfg - kopie wszystkich zmodyfikowanych plików konfiguracyjnych

Struktura podkatalogu odpowiada strukturze drzewa katalogów systemu.

Na przykład cfg/etc/ssh zawiera kopie tych plików z katalogu /etc/ssh które zostały zmienione przez administratora.


Procedura zmiany

1. Każda zmiana rozpoczyna się od ustalenia numeru wersji, a następnie w oparciu o ten numer:

  • tworzymy gałąź git
  • dopisujemy dane o tej gałęzi do pliku branches.txt.  (jeśli go nie ma - tworzymy)
  • opcjonalnie tworzymy plik <numer wersji>.yaml z opisem wersji

2. Przygotowujemy skrypt kopiujący potrzebne do zmiany pliki konfiguracyjne do katalogu cfg (można korzystać ze wzorców - zależnych o celu zmiany)Opis gałęzi pojawia się w pliku branches.txt

3. Konieczne zmiany dokonujemy w kopiach plików umieszczanych w katalogu cfg.

4. Wykonujemy skrypty testujące a następnie akceptujące zmiany, lub cofające ich wykonanie.

Last modified: Monday, 6 April 2020, 2:58 PM