Yon thriller sou mete kanpe sèvè san mirak ak Jesyon Konfigirasyon

Li te apwoche Nouvèl Ane sa a. Timoun nan tout peyi a te deja voye lèt bay Santa Claus oswa fè kado pou tèt yo, ak egzekitè prensipal yo, youn nan pi gwo détaillants yo, te prepare pou apoteoz nan lavant yo. Nan mwa desanm, chaj la sou sant done li yo ogmante plizyè fwa. Se poutèt sa, konpayi an deside modènize sant done a epi mete an fonksyon plizyè douzèn nouvo serveurs olye pou yo ekipman ki te rive nan fen lavi sèvis li yo. Sa a fini istwa a kont twal la nan flokon toubiyon, ak komdi a kòmanse.

Yon thriller sou mete kanpe sèvè san mirak ak Jesyon Konfigirasyon
Ekipman an te rive sou sit la plizyè mwa anvan pik lavant yo. Sèvis operasyon an, nan kou, konnen ki jan ak ki sa yo configured sou serveurs yo nan lòd yo pote yo nan anviwònman pwodiksyon an. Men, nou te bezwen otomatize sa a ak elimine faktè imen an. Anplis de sa, serveurs yo te ranplase anvan migrasyon an nan yon seri sistèm SAP ki te kritik pou konpayi an.

Te komisyonin nan nouvo serveurs estrikteman mare nan yon dat limit. Ak deplase li te vle di mete an danje ni chajman nan yon milya kado ak migrasyon an nan sistèm yo. Menm yon ekip ki gen Papa Frost ak Santa Claus pa t 'kapab chanje dat la - ou ka transfere sistèm nan SAP pou jesyon depo sèlman yon fwa chak ane. Soti 31 desanm rive 1ye janvye, gwo depo revandè a, an total gwosè 20 teren foutbòl, sispann travay yo pou 15 èdtan. Lè sa a se sèlman peryòd tan pou deplase sistèm nan. Nou pa te gen plas pou erè lè entwodwi serveurs.

Kite m 'klè: istwa mwen an reflete zouti yo ak pwosesis jesyon konfigirasyon ke ekip nou an itilize.

Konplèks jesyon konfigirasyon an konsiste de plizyè nivo. Eleman kle a se sistèm CMS la. Nan operasyon endistriyèl, absans la nan youn nan nivo yo ta inevitableman mennen nan mirak dezagreyab.

Jesyon enstalasyon OS

Premye nivo a se yon sistèm pou jere enstalasyon sistèm opere sou sèvè fizik ak vityèl. Li kreye konfigirasyon debaz OS, elimine faktè imen an.

Sèvi ak sistèm sa a, nou te resevwa ka sèvè estanda ak OS apwopriye pou plis automatisation. Pandan "vide a" yo te resevwa yon seri minimòm itilizatè lokal yo ak kle piblik SSH, osi byen ke yon konfigirasyon OS ki konsistan. Nou ta ka garanti jere serveurs yo atravè CMS la epi yo te asire w ke pa te gen okenn supriz "anba a" nan nivo OS.

Travay "maksimòm" pou sistèm jesyon enstalasyon an se otomatikman konfigirasyon serveurs soti nan nivo BIOS/Firmware nan OS la. Anpil isit la depann sou ekipman yo ak travay konfigirasyon. Pou ekipman etewojèn, ou ka konsidere API REDFISH. Si tout pyès ki nan konpitè yo soti nan yon sèl machann, lè sa a li souvan pi pratik pou itilize zouti jesyon pare yo (pa egzanp, HP ILO Amplifier, DELL OpenManage, elatriye).

Pou enstale eksplwatasyon an sou serveurs fizik, nou te itilize Cobbler la byen koni, ki defini yon seri Des enstalasyon yo te dakò ak sèvis operasyon an. Lè w ajoute yon nouvo sèvè nan enfrastrikti a, enjenyè a mare adrès MAC sèvè a ak pwofil obligatwa nan Cobbler. Lè demaraj sou rezo a pou premye fwa, sèvè a te resevwa yon adrès tanporè ak yon nouvo OS. Lè sa a, li te transfere nan sib VLAN/IP adrese a ak kontinye travay la. Wi, chanje VLAN pran tan epi li mande kowòdinasyon, men li bay plis pwoteksyon kont enstalasyon aksidantèl nan sèvè a nan yon anviwònman pwodiksyon.

Nou kreye sèvè vityèl ki baze sou modèl ki prepare lè l sèvi avèk HashiСorp Packer. Rezon ki fè la te menm bagay la tou: yo anpeche posib erè imen lè enstale eksplwatasyon an. Men, kontrèman ak sèvè fizik, Packer elimine nesesite pou PXE, demaraj rezo a, ak chanjman VLAN. Sa a te fè li pi fasil ak pi senp yo kreye serveurs vityèl.

Yon thriller sou mete kanpe sèvè san mirak ak Jesyon Konfigirasyon
Diri. 1. Jere enstalasyon sistèm operasyon yo.

Jere sekrè

Nenpòt sistèm jesyon konfigirasyon gen done ki ta dwe kache nan itilizatè òdinè, men li nesesè pou prepare sistèm yo. Sa yo se modpas pou itilizatè lokal yo ak kont sèvis, kle sètifika, divès kalite API Tokens, elatriye. Anjeneral yo rele yo "sekrè".

Si ou pa detèmine depi nan konmansman an ki kote ak ki jan yo estoke sekrè sa yo, lè sa a, depann sou gravite a nan kondisyon sekirite enfòmasyon yo, metòd depo sa yo gen anpil chans:

  • dirèkteman nan kòd la kontwòl konfigirasyon oswa nan dosye nan repozitwa a;
  • nan zouti jesyon konfigirasyon espesyalize (pa egzanp, Ansible Vault);
  • nan sistèm CI/CD (Jenkins/TeamCity/GitLab/etc.) oswa nan sistèm jesyon konfigirasyon (Ansible Tower/Ansible AWX);
  • sekrè yo kapab tou transfere "manyèlman". Pou egzanp, yo mete deyò nan yon kote espesifye, ak Lè sa a, yo itilize pa sistèm jesyon konfigirasyon;
  • divès kalite konbinezon de pi wo a.

Chak metòd gen dezavantaj pwòp li yo. Prensipal la se mank de politik pou aksè a sekrè: li enposib oswa difisil pou detèmine ki moun ki ka itilize sèten sekrè. Yon lòt dezavantaj se mank de odit aksè ak yon sik lavi konplè. Ki jan yo byen vit ranplase, pou egzanp, yon kle piblik ki ekri nan kòd la ak nan yon kantite sistèm ki gen rapò?

Nou itilize depo sekrè santralize HashiCorp Vault la. Sa te pèmèt nou:

  • kenbe sekrè yo an sekirite. Yo ankripte, e menm si yon moun jwenn aksè nan baz done Vault la (pa egzanp, lè yo restore li nan yon backup), yo pa pral kapab li sekrè ki estoke la;
  • òganize politik pou aksè a sekrè. Se sèlman sekrè yo "atribye" yo ki disponib pou itilizatè yo ak aplikasyon yo;
  • odit aksè a sekrè. Nenpòt aksyon ki gen sekrè yo anrejistre nan jounal odit Vault la;
  • òganize yon "sik lavi" konplè nan travay ak sekrè. Yo ka kreye, revoke, mete yon dat ekspirasyon, elatriye.
  • fasil pou entegre ak lòt sistèm ki bezwen aksè a sekrè;
  • epi tou itilize chifreman fen-a-fen, modpas yon sèl fwa pou eksplwatasyon an ak baz done, sètifika sant otorize, elatriye.

Koulye a, ann ale nan sistèm otantifikasyon santral la ak otorizasyon. Li te posib fè san li, men administre itilizatè yo nan anpil sistèm ki gen rapò se twò ki pa trivial. Nou te configured otantifikasyon ak otorizasyon atravè sèvis LDAP la. Sinon, Vault ta dwe kontinyèlman bay ak kenbe tras de marqueur otantifikasyon pou itilizatè yo. Ak efase ak ajoute itilizatè yo ta vire nan yon demand "èske mwen kreye / efase kont itilizatè sa a tout kote?"

Nou ajoute yon lòt nivo nan sistèm nou an: jesyon sekrè ak otantifikasyon/otorizasyon santral:

Yon thriller sou mete kanpe sèvè san mirak ak Jesyon Konfigirasyon
Diri. 2. Jesyon sekrè.

Jesyon konfigirasyon

Nou te rive nan nwayo a - sistèm nan CMS. Nan ka nou an, sa a se yon konbinezon de Ansible ak Red Hat Ansible AWX.

Olye pou yo Ansible, Chef, Puppet, SaltStack ka itilize. Nou te chwazi Ansible baze sou plizyè kritè.

  • Premyèman, li se adaptabilite. Yon seri modil pare pou kontwòl fè yon enpresyon. Men, si ou pa gen ase nan li, ou ka fè rechèch sou GitHub ak Galaksi.
  • Dezyèmman, pa gen okenn bezwen enstale ak sipòte ajan sou ekipman jere, pwouve ke yo pa entèfere ak chaj la, epi konfime absans la nan "signets".
  • Twazyèmman, Ansible gen yon baryè ki ba pou antre. Yon enjenyè konpetan pral ekri yon liv k ap travay literalman nan premye jou nan travay ak pwodwi a.

Men, Ansible pou kont li nan yon anviwònman pwodiksyon pa t 'ase pou nou. Sinon, anpil pwoblèm ta parèt ak restriksyon aksè ak odit aksyon administratè yo. Ki jan yo mete restriksyon sou aksè? Apre yo tout, li te nesesè pou chak depatman jere (li: kouri liv la Ansible) "pwòp" seri serveurs. Ki jan yo pèmèt sèlman sèten anplwaye yo kouri espesifik Ansible playbooks? Oswa ki jan yo swiv ki moun ki te lanse playbook la san yo pa mete yon anpil nan konesans lokal sou sèvè ak ekipman kouri Ansible?

Se Red Hat ki rezoud anpil pwoblèm sa yo Sou entènèt jwèt Ansible Tower, oswa pwojè en louvri-sous li Ansible AWX. Se poutèt sa nou prefere li pou kliyan an.

Ak yon lòt manyen pòtrè sistèm CMS nou an. Ansible playbook yo ta dwe estoke nan sistèm jesyon depo kòd. Nou genyen li GitLab CE.

Se konsa, konfigirasyon yo tèt yo jere pa yon konbinezon de Ansible / Ansible AWX / GitLab (gade Fig. 3). Natirèlman, AWX/GitLab entegre ak yon sèl sistèm otantifikasyon, ak liv Ansible entegre ak HashiCorp Vault. Konfigirasyon antre nan anviwònman pwodiksyon an sèlman atravè Ansible AWX, nan ki tout "règleman jwèt la" yo espesifye: ki moun ki ka configured sa, ki kote yo ka resevwa kòd la jesyon konfigirasyon pou CMS la, elatriye.

Yon thriller sou mete kanpe sèvè san mirak ak Jesyon Konfigirasyon
Diri. 3. Jesyon konfigirasyon.

Jesyon tès la

Konfigirasyon nou an prezante nan fòm kòd. Se poutèt sa, nou oblije jwe dapre menm règ ak devlopè lojisyèl. Nou te bezwen òganize pwosesis devlopman, tès kontinyèl, livrezon ak aplikasyon kòd konfigirasyon nan serveurs pwodiksyon.

Si sa a pa fè imedyatman, Lè sa a, wòl yo ekri pou konfigirasyon an ta swa sispann sipòte ak modifye, oswa yo ta sispann lanse nan pwodiksyon an. Gen gerizon pou doulè sa a li te ye, epi li te pwouve tèt li nan pwojè sa a:

  • chak wòl kouvri pa tès inite yo;
  • tès yo kouri otomatikman chak fwa gen nenpòt chanjman nan kòd la ki jere konfigirasyon yo;
  • chanjman nan kòd jesyon konfigirasyon yo lage nan anviwònman pwodiksyon an sèlman apre yo fin pase avèk siksè tout tès ak revizyon kòd.

Devlopman Kòd ak jesyon konfigirasyon yo te vin pi kalm ak pi previzib. Pou òganize tès kontinyèl, nou te itilize zouti GitLab CI/CD, epi nou te pran Ansible Molekil.

Chak fwa gen yon chanjman nan kòd jesyon konfigirasyon an, GitLab CI/CD rele Molecule:

  • li tcheke sentaks kòd la,
  • leve veso Docker,
  • aplike kòd modifye a nan veso ki te kreye a,
  • tcheke wòl la pou idempotans epi li fè tès pou kòd sa a (granularite isit la se nan nivo wòl ansible, gade Fig. 4).

Nou te delivre konfigirasyon nan anviwònman pwodiksyon an lè l sèvi avèk Ansible AWX. Enjenyè operasyon yo aplike chanjman konfigirasyon atravè modèl predefini. AWX poukont li "mande" dènye vèsyon kòd la nan men branch mèt GitLab la chak fwa li te itilize. Nan fason sa a nou eskli itilizasyon kòd ki pa teste oswa demode nan anviwònman pwodiksyon an. Natirèlman, kòd la te antre nan branch mèt la sèlman apre tès, revizyon ak apwobasyon.

Yon thriller sou mete kanpe sèvè san mirak ak Jesyon Konfigirasyon
Diri. 4. Tès otomatik wòl nan GitLab CI/CD.

Genyen tou yon pwoblèm ki asosye ak operasyon an nan sistèm pwodiksyon an. Nan lavi reyèl, li trè difisil pou fè chanjman konfigirasyon atravè kòd CMS pou kont li. Sitiyasyon ijans rive lè yon enjenyè dwe chanje konfigirasyon an "isit la ak kounye a", san yo pa tann pou koreksyon kòd, tès, apwobasyon, elatriye.

Kòm yon rezilta, akòz chanjman manyèl yo, diferans ki parèt nan konfigirasyon an sou menm kalite ekipman (pa egzanp, paramèt sysctl yo konfigirasyon diferan sou nœuds gwoup HA). Oswa konfigirasyon aktyèl la sou ekipman an diferan de youn ki espesifye nan kòd CMS la.

Se poutèt sa, anplis tès kontinyèl, nou tcheke anviwònman pwodiksyon pou diferans konfigirasyon. Nou te chwazi opsyon ki pi senp la: kouri kòd konfigirasyon CMS la nan mòd "dry run", se sa ki, san yo pa aplike chanjman, men ak notifikasyon sou tout diferans ki genyen ant konfigirasyon an te planifye ak aktyèl la. Nou aplike sa a pa kouri detanzantan tout liv Ansible ak opsyon "-check" sou sèvè pwodiksyon an. Kòm toujou, Ansible AWX responsab pou lanse ak kenbe playbook a ajou (gade Fig. 5):

Yon thriller sou mete kanpe sèvè san mirak ak Jesyon Konfigirasyon
Diri. 5. Tcheke pou diferans konfigirasyon nan Ansible AWX.

Apre chèk yo, AWX voye yon rapò dezakò bay administratè yo. Yo etidye konfigirasyon pwoblèm ak Lè sa a, ranje li nan playbooks ajiste. Sa a se ki jan nou kenbe konfigirasyon an nan anviwònman pwodiksyon an ak CMS a toujou ajou ak senkronize. Sa a elimine "mirak" dezagreyab lè yo itilize kòd CMS sou sèvè "pwodiksyon".

Kounye a nou gen yon kouch tès enpòtan ki fòme ak Ansible AWX/GitLab/Molecule (Figi 6).

Yon thriller sou mete kanpe sèvè san mirak ak Jesyon Konfigirasyon
Diri. 6. Jesyon tès.

Difisil? Mwen pa diskite. Men, tankou yon konplèks nan jesyon konfigirasyon te vin tounen yon repons konplè a anpil kesyon ki gen rapò ak automatisation nan konfigirasyon sèvè. Koulye a, serveurs estanda yon revandè toujou gen yon konfigirasyon entèdi defini. CMS, kontrèman ak yon enjenyè, pa pral bliye ajoute anviwònman ki nesesè yo, kreye itilizatè yo ak fè plizyè douzèn oswa dè santèn de anviwònman obligatwa.

Pa gen okenn "konesans sekrè" nan anviwònman yo nan serveurs ak anviwònman jodi a. Tout karakteristik ki nesesè yo reflete nan liv la. Pa gen plis kreyativite ak enstriksyon vag: "Enstale li tankou Oracle regilye, men ou bezwen presize yon koup nan paramèt sysctl epi ajoute itilizatè ki gen UID ki nesesè yo. Mande mesye yo nan operasyon yo, yo konnen'.

Kapasite nan detekte dezakò nan konfigirasyon ak korije yo pwoaktivman bay lapè nan tèt ou. San yo pa yon sistèm jesyon konfigirasyon, sa a anjeneral sanble diferan. Pwoblèm akimile jiskaske yon jou yo "tire" nan pwodiksyon an. Lè sa a, yon debriefing te pote soti, konfigirasyon yo tcheke ak korije. Ak sik la repete ankò

Ak nan kou, nou akselere lansman de serveurs nan operasyon soti nan plizyè jou a èdtan.

Oke, lavèy nouvèl ane a li menm, lè timoun yo te kontan devlope kado ak granmoun yo t ap fè volonte pandan sonnen yo te frape, enjenyè nou yo te imigre sistèm SAP a sou nouvo sèvè. Menm Santa Claus pral di ke pi bon mirak yo se moun ki byen prepare.

PS Ekip nou an souvan rankontre lefèt ke kliyan vle rezoud pwoblèm jesyon konfigirasyon kòm tou senpleman posib. Idealman, kòm si pa majik - ak yon sèl zouti. Men, nan lavi tout bagay se pi konplike (wi, bal an ajan pa te delivre ankò): ou dwe kreye yon pwosesis antye lè l sèvi avèk zouti ki pratik pou ekip kliyan an.

Otè: Sergey Artemov, depatman achitèk Solisyon DevOps "Jet Infosystems"

Sous: www.habr.com

Add nouvo kòmantè