Yksikkö 5 / 11

Kokoonpanon hallinta: Määritysten luominen, validointi ja siirtymän taltiointi

Voitot:

  • Kaksikerroksinen varmennus luomalla konfiguraatio tekoälyllä ja tarkistamalla syntaksi ja kyselemällä merkitystä
  • Kyky tehdä konfiguraatioiden ajautuminen näkyväksi tekoälyvertailulla ja estää se kultaisen lähteen ja mallin periaatteella
  • Kyky poistaa salaisuuksia kokoonpanorungosta, ottaa varmuuskopioita ja oppia asteittaisen toteutuksen kurinalaisuutta Canarylla

Kokoonpanon hallinta: Luo, validoi ja havaitsee ajautumisen määrityksissä tekoälyn avulla

Palvelin tai palvelu saa käyttäytymisensä asetustiedostoista: näihin tiedostoihin on kirjoitettu mitä porttia verkkopalvelin kuuntelee, kuinka monta yhteyttä tietokanta hyväksyy, onko suojausasetus käytössä vai pois. Kokoonpanon hallinta on kurinalaisuutta, jolla varmistetaan, että nämä asetukset ovat tarkkoja, yhdenmukaisia ​​ja samat kaikissa palvelimissa. Se kuulostaa yksinkertaiselta, mutta käytännössä painajaiset tulevat tästä: yksi väärä linja kaataa palvelun, yksi epäjohdonmukainen asetus johtaa "se oli käynnissä minun koneellani" -katastrofiin. Täällä tekoäly on erittäin nopea luomaan konfiguraatioita, kuvaamaan monimutkaisia ​​asetuslohkoja, vertaamaan kahta kokoonpanoa ja havaitsemaan syntaksivirheet. Mutta muuttumaton sääntö: AI tuottaa konfiguraatiosuunnitelman; Sinun vastuullasi on validoida se, kokeilla sitä testiympäristössä ja ottaa se tuotantoon.

Tässä yksikössä käsitteet drift (konfiguraatiodrift – palvelimet siirtyvät pois toisistaan ​​ja standardista ajan myötä), idempotentti konfigurointi, mallinnus ja todentaminen; Opit turvallisen konfiguroinnin luomisen ja vertailun tekoälyn kanssa.

Kokoonpanon ajautuminen: hiljainen tappaja

Vaarallisin konfigurointiongelma ei ole äkillinen romahdus, vaan salakavala liuku. Drift on palvelinten poikkeama toisistaan ​​ja vaaditusta standardista ajan myötä. Joku muuttaa manuaalisesti hätäkorjauksen asetusta yhtenä yönä, mutta ei dokumentoi sitä; joku muu syöttää eri arvon toisella palvelimella; Kymmenen palvelinta, joiden piti olla "sama" kuukautta myöhemmin, näyttää nyt kymmentä erilaista käyttäytymistä. Ajelehtimisen vaara on, että se on näkymätön, kunnes ongelma ilmenee – silloin yksi palvelin käyttäytyy eri tavalla kuin muut ja diagnoosi kestää tunteja. Tekoäly voi tehdä ajautumisen näkyväksi asettamalla kaksi kokoonpanoa vierekkäin ja luettelemalla erot. Mutta todellinen ratkaisu on kulttuurinen: konfiguroinnin hallinta ei käsin, vaan versioidusta ja toistettavasta lähteestä.

Vinkki: Ota käyttöön "kultaisen lähdekoodin" periaate: hanki jokaisesta kokoonpanosta yksi oikea, versioitu versio (kuten Git-arkisto). Vertaa säännöllisesti palvelimien todellista tilannetta tähän kultaiseen resurssiin; Jos on eroa, joko korjaa ajautuminen tai päivitä lähde. Tekoäly nopeuttaa tätä vertailua.

Askel askeleelta: suojattu konfiguraatiomuutos

  1. Varmuuskopioi nykyinen tila. Kopioi kokoonpano ennen sen muuttamista. Tämä on ainoa takuu palautuksesta.
  2. Piirrä muutos tekoälyllä. Selitä tarkoitus, kuten "ota käyttöön gzip-pakkaus nginxissä näille tyypeille"; Anna tekoälyn tuottaa vastaava lohko. Määritä, mille versiolle se on tarkoitettu, koska syntaksi vaihtelee version mukaan.
  3. Tarkista syntaksi. Useimmissa palveluissa on vahvistuskomento (nginx -t, apachectl configtest, sshd -t). Kysy tekoälyltä tästä komennosta ja muista suorittaa se. Virheellinen määritys ei käynnistä palvelua.
  4. Tarkista merkitys. Syntaksi voi olla kelvollinen, mutta se voi toimia väärin. Kysy tekoälyltä "mitä tämä lohko tarkalleen tekee, mitä turvallisuus- tai suorituskykyvaikutuksia sillä on?"
  5. Kokeile testiympäristössä. Ota ensin lavastuksen muutos käyttöön ja lataa palvelu uudelleen, tarkkaile käyttäytymistä.
  6. Levitä asteittain ja tarkkaile. Älä mene tuotantoon kerralla, vaan toteuta se ensin palvelimella (kanarialla), seuraa sitä ja julkaise se sitten. Jos ongelmia ilmenee, palauta varmuuskopiosta.

Mallit ja luottamukselliset tiedot

Konfiguraatiot sisältävät usein arvoja, jotka vaihtelevat ympäristön mukaan: tietokannan osoite, salasana, portti. Sen sijaan, että kirjoitat nämä arvot vakioiksi konfiguraatiorunkoon, käytä malleja ja muuttujia: runko pysyy samana, arvot tulevat ulkopuolelta riippuen ympäristöstä. Eli sama malli toimii testissä ja tuotannossa, ainoa ero on muuttujat. Kriittinen kohta: salasanoja ja avaimia ei saa kirjoittaa erikseen asetustiedostoon. Hanki nämä salaiselta johtajalta tai ympäristömuuttujalta. Kun pyydät tekoälyä mallia, käske sitä "purkaa salaisuudet muuttujaan, älä koskaan kirjoita nimenomaisia ​​salasanoja runkoon".

kolme minilaukkua

Tapaus 1 – Vertailussa havaittu ajautuminen. Joka kahdeksas verkkopalvelin oli ajoittain hidas. Insinööri antoi kahdeksan palvelimen peitetyt kokoonpanot tekoälylle ja antoi sen luetteloida erot. Tekoäly merkitsi yhden yhteyspoolirajan ongelmallisella palvelimella puoleksi muista – kuukausia sitten tehty dokumentoimaton manuaalinen muutos. Drift oli näkymätön; vertailu paljasti sen 5 minuutissa.

Tapaus 2 — Vahvistuskomento esti kaatumisen. Järjestelmänvalvoja lisäsi SSH-palvelimeen uuden vahvistusasetuksen. Tekoäly palautti lohkon, joka näytti järkevältä. Insinööri suoritti sshd -t -vahvistuksen ennen hakemista; Kävi ilmi, että ohje oli kirjoitettu eri tavalla kyseisessä SSH-versiossa. Jos muutos oli voimassa ja palvelu käynnistettiin uudelleen, kaikki etäkäyttö voi katketa. Vahvistuskomento esti lukkiutumisen.

Tapaus 3 – Malli lakkasi vuotamasta. Ryhmä kopioi manuaalisesti tietokannan kokoonpanon kuhunkin ympäristöön ja kirjoitti tiedostoon avoimen salasanan. Kopio päätyi vahingossa jaettuun arkistoon. Tekoälyn avulla tiimi muutti kokoonpanon malliksi: salasana tuli nyt ympäristömuuttujasta, jonka rungossa oli vain ${DB_PASSWORD}. Seuraava vuotoriski oli vaaraton, koska rungossa ei ollut salaisuutta.

Neljä kopioitavaa mallia

1) Konfigurointilohkon luominen:

Tehtäväsi: vanhempi järjestelmäinsinööri. Luo määrityslohko [palvelu + versio, esim. nginx 1.24]. Tarkoitus: [tarkoitus]. Käytännöt: käytä version mukaista syntaksia; Älä koskaan kirjoita salaisuuksia kehoon, se menee muuttujaan; Selitä jokainen ohje lyhyellä kommentilla. Anna sitten vahvistuskomento, joka minun on suoritettava ennen tämän muutoksen käyttöönottoa.

2) Kahden kokoonpanon vertailu (drift):

Alla on kahden samassa roolissa olevan palvelimen (A ja B) maskikokoonpano. Luettele kaikki merkittävät erot niiden välillä taulukkomuodossa; Kirjoita kunkin eron mahdollinen vaikutus käyttäytymiseen. Merkitse mitkä erot sisältävät riskejä. Älä lisää kommentteja, näytä vain todellisia eroja. A: [...] B: [...]

3) Kokoonpanon kuvaus ja riskitarkastus:

Kuvaile rivi riviltä seuraavat konfigurointilohkot: mitä kukin direktiivi tekee, miten se eroaa oletusarvosta, mikä vaikutus sillä on tietoturvaan tai suorituskykyyn? Merkitse myös asetukset, jotka voivat olla vaarallisia tai vaarallisia. Estä: [kokoonpano]

4) Muuntaminen malliin:

Muuta seuraava kiinteän arvon kokoonpano malliksi: pura ympäristöstä riippuen vaihtelevat arvot (osoite, portti, salasana) muuttujiksi, poista salaisuudet rungosta kokonaan ja määritä, mistä ne tulevat (ympäristömuuttuja/salaisuudenhallinta). Älä jätä avoimia salasanoja runkoon. Kokoonpano: [config]

Heikko kehote / Vahva kehote

Heikko kehote:

korjaa nginx-asetusni. [liitä konfiguraatio]

"Fix" on epämääräinen, ei versiota, ei tarkoitusta eikä konfigurointimaskia. Tekoäly ei tiedä mitä korjata, ja saattaa jopa rikkoa toimivan asetuksen.

Tehokas kehotus:

Tehtäväsi: vanhempi järjestelmäinsinööri. Käytän nginx 1.24. Alla olevassa peitetyssä kokoonpanossa haluan avata selaimen välimuistin staattisille tiedostoille 7 päiväksi, mutta rikkomatta olemassa olevia suojausotsikoita. Anna minulle: (1) lisättävät/muutettavat rivit, (2) mitä kukin rivi tekee, (3) varmennuskomento, joka suoritetaan ennen käyttöönottoa, (4) varavaihe, jos ongelmia ilmenee. Konfig: [naamioitu]

Lähestymistapa

Ajelehtimisen riski

palata

salainen turvallisuus

Vaihda palvelinta manuaalisesti

erittäin korkea

epävarma

Heikko, selvä salasana

Kultalähde + malli + muuttuja

alhainen

Versiohistoria

Vahva, salaisuus on selvillä

Sovellus ilman vahvistusta

Palvelu saattaa kaatua

Varmuuskopiointi + vahvistus + kanaria

Takuu

Yleisiä virheitä

  • Vahvistuskomennon ohittaminen. Virheellinen määritys ilman komentoa nginx -t, sshd -t ei käynnistä palvelua.
  • Vaihto ilman varmuuskopiota. Ainoa palautustakuu on muokkausta edeltävä kopio; Ilman sitä jokainen muutos on uhkapeliä.
  • Kirjoittaa salaisuudet avoimesti vartalolle. Kun salasanoja sisältävä kokoonpano jaetaan tai vuotaa, se on suora rikkomus.
  • Driftin huomioiminen. Palvelimien väliset dokumentoimattomat erot aiheuttavat salakavalia vikoja, jotka pidentävät diagnostiikkaa tuntikausia.
  • Versiota ei ilmoiteta. Kokoonpanon syntaksi vaihtelee version mukaan; Jos et kerro tekoälylle versiota, se voi tuottaa virheellisiä lohkoja.
Varoitus: Se, että kokoonpano on syntaktisesti kelvollinen, ei tarkoita, että se on oikea. nginx -t voi sanoa "syntaksi ok", mutta asetus käyttää väärää toimintaa ilman virhettä. Varmista syntaksin tarkistuksen jälkeen merkitys ja käyttäytyminen.

Yhteenvetona

Kokoonpanon hallinta varmistaa, että asetukset ovat tarkkoja, yhdenmukaisia ​​ja samat kaikissa palvelimissa. Kaikkein salakavalin vihollinen on ajautuminen: dokumentoimattomat manuaaliset muutokset ajavat palvelimia erilleen. Tekoäly on tehokas kumppani konfiguraatioiden luomisessa, selittämisessä ja vertailussa, jotta ajautuminen näkyy. Varmuuskopioi ennen muutosta, tarkista syntaksi varmistuskomennolla, kysy merkitys AI:lla, käytä asteittain testiympäristössä ja kanarialla. Poista salaisuudet kehosta ja käytä malleja ja muuttujia. Estä ajautuminen ensisijaisesti kultaisen lähteen periaatteella.

Sovellustehtävä

Ota kahden samanlaisen palvelimen määritystiedosto omasta ympäristöstäsi, peitä herkät alueet ja pyydä tekoälyä suorittamaan ajautumisanalyysi yllä olevan "Kahden kokoonpanon vertailu" -mallin avulla. Arvioi löydetyt erot riskin suhteen. Muunna sitten jokin näistä kokoonpanoista salaisuudettomaksi malliksi "Muunna malliksi" -mallilla ja suunnittele, mistä saat muuttujat. Luonnostele lopuksi pieni muutos "Luo määrityslohko" -mallilla ja huomioi vahvistuskomento. Tee yhteenveto prosessista 6 kohtaan.

tarkistuslista

  • [ ] Varmuuskopioinko määritykset ennen muutosta?
  • [ ] Määritinkö palveluversion tekoälylle ja pyysin versiolle sopivaa syntaksia?
  • [ ] Olenko tarkistanut syntaksin vahvistuskomennolla (-t jne.)?
  • [ ] Vaikka syntaksi olisi kelvollinen, olenko tarkentanut sen merkitystä ja käyttäytymistä?
  • [ ] Purinko salaisuudet kehosta ja käytinkö muuttujaa/mallia?
  • [ ] Olenko vertannut palvelinten välistä ajautumista ja kohdistanut sen kultalähteeseen?