Nu puteți face GitOps până nu faceți` git add `

(3 februarie 2020)

Acest articol explică modul în care am rezolvat câteva provocări legate de introducerea mediului meu inițial și configurări în Git – primii pași către GitOps.

Am vrut să îmbrățișez GitOps de ceva timp, dar este întotdeauna dificil să știi de unde să începi. Folosesc Jenkins Jobs – îl cunosc bine pe Jenkins? Este o școală cam veche, poate că ar trebui să folosesc Ansible Tower. Am auzit lucruri despre ArgoCD și multe altele. Adevărul este că nu pot face nimic până când nu am de fapt mediul și configurația stocate în Git.

Până la sfârșitul acestui articol, Sper că veți primi câteva dintre sfaturile mele pentru a începe.

Ce voi obține folosind Git pentru configurările serverului?

  1. Toate modificările sunt înregistrate & urmărite. Cine a făcut acest lucru Schimbare? Cand? etc.
  2. Toate modificările sunt versionate. Hopa, cea mai recentă modificare a spart ceva. Ușor de redat.
  3. Copie de rezervă gratuită. Clonează repozitoriul în mai multe locații.
  4. Configurări ușor de reutilizat. Tocmai ați instalat un server nou și doriți să utilizați 90\% dintr-o configurație apache comună. Doar clonați repo și copiați fișierul.

Creați un depozit Git – privat, dar accesibil

Intenția mea este de a stoca toate fișierele mele de configurare pentru dnsmasq, httpd, și așa mai departe, toate în Git. Configurarea este sensibilă, inclusiv nume de utilizator și parole, și, prin urmare, evident, un depozit public GitHub nu este cea mai bună idee. Dacă sunteți dispus să plătiți pentru un depozit privat, mergeți la el. Am ales să creez un depozit pe un server dedicat pe care îl am pe internetul public, astfel încât toate celelalte servere să îl poată obține.

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

Nume de directoare bazate pe DNS – ușor de navigat

Vreau să ușurez sortarea și structurarea configurației mele. Am decis să să folosesc nume DNS de server pentru directoarele . Pe serverele mele de acasă, am făcut-o;

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

De ce să-l păstrez în /opt? În general, folosesc acest director pentru fișierele stocate pe un server care sunt specifice acestuia. Are avantajul că cel mai adesea este același sistem de fișiere ca și / – facilitând conectarea la fișiere. La următorul punct;

Serviciul de legare dură se configurează în repo Git

Puteți avea un depozit Git separat pe server, sau chiar pe serviciu, dar acest lucru va deveni foarte greu de gestionat. Mai degrabă, acest depozit „ServerConfiguration” pentru întregul dvs. mediu poate stoca cu ușurință configurația pentru o mulțime de servicii diferite.

Cum, atunci, obținem Apache, dnsmasq și toate celelalte servicii pentru ao utiliza? Hardlink-urile sunt calea de urmat. Sintaxa este ln

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

De ce nu legăturile simbolice, spuneți? Ei bine, am început să folosesc link-uri simbolice, dar am constatat că politicile SELinux pentru lucruri precum dnsmasq s-au plâns cu adevărat de utilizarea unui fișier de configurare în afara unui director așteptat. Se pare că SELinux permite ca două legături hard separate să aibă două contexte SELinux separate.

Conectarea la configurația de servicii comune

Am o grămadă de servere care partajează toate aceleași fișiere de configurare. Un director common cu linkuri simbolice relative funcționează bine aici.

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
...

Obțineți angajamentul

Odată v-ați conectat fișierele de configurare, nu uitați să git add și git commit progresul dvs.

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

Intrați într-un habbit de editare a configurărilor și adăugați apoi, comitând modificări. Împingeți aceste modificări înapoi periodic pe serverul dvs. de origine și trageți / actualizați când este necesar. Mi se pare infecțios și, când găsesc un server care nu se află sub controlul versiunii de configurare Git, merg repede adăugând configurile necesare în depozitul. linia. Dar, deocamdată, acest proces are deja multe avantaje.

Dacă sunteți în căutarea unui tutorial pentru a începe cu Git, vă recomand cu tărie .

Unde pot merge de aici ?!

  1. Magazin production, test și configuration în diferite ramuri și fuzionați între ele.
  2. Faceți code reviews când persoanele trimise – cine are nevoie de un comitet consultativ pentru schimbări ?!
  3. Explorați diferitele opțiuni pentru a aplica automat acea configurare la checkin – Jenkins Jobs, Ansible Tower, ArgoCD etc.

Fotografie de Yancy Min pe Unsplash