A GitOps-ot addig nem tudja megtenni, amíg nem adja hozzá `

(2020. február 3.)

Ez a cikk elmagyarázza, hogyan oldottam meg a kezdeti környezet és a Git konfigurálásának néhány kihívását – az első lépéseket a GitOps felé.

Jó ideje szerettem volna átfogni a GitOps-ot, de ez mindig trükkös hogy tudjam, hol kezdjem. Használom a Jenkins Jobs alkalmazást – jól ismerem Jenkins-t? Ez egy kicsit régi iskola, talán az Ansible Tower-t kellene használnom. Hallottam dolgokat az ArgoCD-ről és sok másról. Az az igazság, hogy nem tehetek semmit, amíg a környezetem és a konfigurációm valóban nincs a Git-ben tárolva.

A cikk végére a Remélem, hogy a kezdéshez felvesz néhány tippemet.

Mit kapok, ha a Git for server konfigurációit használom?

  1. Minden változás naplózva & nyomon követésre kerül. Ki csinálta ezt változás? Mikor? stb.
  2. Minden változtatás verzióval rendelkezik. Hoppá, a legutóbbi változás megtört valamit. Könnyen visszagörgethető.
  3. Ingyenes biztonsági mentés. Csak klónozza az adattárat több helyre.
  4. Könnyen használható konfigurációk. Most telepített egy új szervert, és a közös apache konfiguráció 90\% -át szeretné használni. Csak klónozza a repót és másolja a fájlt.

Hozzon létre egy Git-adattárat – privát, de hozzáférhető

Az összes konfigurációs fájlomat a dnsmasq, httpd, és így tovább, mind Gitben. A konfiguráció kényes, beleértve a felhasználóneveket és a jelszavakat is, ezért nyilvánvalóan nem a GitHub nyilvános adattár a legjobb ötlet. Ha hajlandó fizetni egy privát tárházért, akkor hajrá. Úgy döntöttem, hogy létrehozok egy adattárat egy dedikált szerveren, amely a nyilvános interneten van, hogy az összes többi szerver megszerezhesse.

cd /opt/ 
git init --bare ServerConfiguration.git

DNS-alapú könyvtárnevek – könnyen böngészhető

Könnyen szeretném a konfigurációmat rendezni és strukturálni. Úgy döntöttem, hogy kiszolgáló DNS-neveket használok a könyvtárakhoz. Az otthoni szervereken is megtettem;

git clone ssh://[email protected]/opt/ServerConfiguration.git
cd ServerConfiguration.git
mkdir -p example.com/server1/{httpd,dnsqmasq}

Miért kell tárolni a /opt mappában? Ezt a könyvtárat általában a kiszolgálón tárolt, csak rá jellemző fájlokhoz használom. Ennek az az előnye, hogy leggyakrabban ugyanaz a fájlrendszer, mint a / – ez megkönnyíti a fájlok kemény linkelését. A következő pontra;

A hardlinking szolgáltatás a Git repóba konfigurálódik

Szerverenként vagy akár szolgáltatásonként külön Git-tárház állhat rendelkezésére, de ez nagyon gyorsan kezelhetetlenné válik. Ehelyett ez a „ServerConfiguration” adattár az egész környezetére könnyen tárolhatja a konfigurációt számos különféle szolgáltatáshoz.

Hogyan érhetjük el akkor az Apache-t, a dnsmasq-ot és az összes többi szolgáltatást? A Hardlinks a helyes út. A szintaxis: ln

ln /opt/ServerConfiguration/example.com/server1/httpd.conf /etc/httpd/conf/httpd.conf

Miért nem szimplaink, mondod? Nos, a szimplaink használatával kezdtem, de azt tapasztaltam, hogy a SELinux házirendjei például a dnsmasq esetében valóban panaszkodtak egy konfigurációs fájl használatára egy várt könyvtáron kívül. Úgy tűnik, hogy a SELinux lehetővé teszi, hogy két külön hardverlink két külön SELinux kontextussal rendelkezzen.

Szinkronizálás a közös szolgáltatáskonfigurációra

Van egy csomó kiszolgáló, amelyek mind ugyanazokat a konfigurációs fájlokat használják. Itt jól működik egy common könyvtár, viszonylagos hivatkozásokkal.

cd /opt/ServerConfiguration 
mkdir -p example.com/common
cp /etc/httpd/conf/httpd.conf common/httpd.conf
ln -s "../common/httpd.conf" server1/httpd.conf
ln -s "../common/httpd.conf" server2/httpd.conf
...

Elkötelezettség

Egyszer összekapcsolta a konfigurációs fájlokat, ne felejtse el git add és git commit haladását.

cd /opt/ServerConfiguration
git add -A
git commit "Made some changes..."
git push

Beszéljen a konfigurációk szerkesztésének és hozzáadásának apropójával, majd végezzen változtatásokat. Rendszeresen nyomja vissza ezeket a változásokat az eredeti kiszolgálóra, és szükség esetén húzza / frissítse. Fertőzőnek találom, és amikor egy olyan szervert találok, amely nem a Git config verzióvezérlés alatt áll, gyorsan körbejárok, és hozzáadom a szükséges konfigurációkat az adattárba.

Ez lesz az alapja néhány kifinomultabb GitOps-nak később, a vonal. De egyelőre ennek a folyamatnak már számos előnye van.

Ha oktatóanyagot keres a Git használatának megkezdéséhez, nagyon ajánlom a Git Book alkalmazást. .

Hová mehetek innen ?!

  1. Tárolja a production, test és configuration különböző ágakban, és egyesüljenek közöttük.
  2. Csináljon code reviews amikor az emberek beküldik – kinek van szüksége változás-tanácsadó testületre ?!
  3. Fedezze fel a különféle lehetőségeket, hogy automatikusan alkalmazza ezt a konfigurációt a bejelentkezéskor – Jenkins Jobs, Ansible Tower, ArgoCD stb.

Yancy Min fotója a Unsplash