Триллер дар бораи насб кардани серверҳо бидуни мӯъҷизаҳо бо идоракунии конфигуратсия

Соли нав наздик мешуд. Кӯдакон дар саросари кишвар аллакай ба Бобои Барфӣ нома фиристоданд ё барои худ тӯҳфаҳо омода карда буданд ва иҷрокунандаи асосии онҳо, яке аз фурӯшандагони калон, ба апотеози фурӯш омодагӣ медид. Дар моҳи декабр, сарборӣ ба маркази додаҳои он якчанд маротиба меафзояд. Аз ин рӯ, ширкат тасмим гирифт, ки маркази маълумотро навсозӣ кунад ва ба ҷои таҷҳизоте, ки мӯҳлати хидматаш ба охир мерасад, якчанд даҳҳо серверҳои навро ба истифода диҳад. Ин афсонаро дар пасманзари барфҳои чархзананда ба анҷом мерасонад ва триллер оғоз меёбад.

Триллер дар бораи насб кардани серверҳо бидуни мӯъҷизаҳо бо идоракунии конфигуратсия
Таҷҳизот чанд моҳ пеш аз авҷи фурӯш ба ин мавзеъ омада буд. Хидмати амалиётӣ, албатта, медонад, ки чӣ гуна ва чиро дар серверҳо танзим кардан лозим аст, то онҳоро ба муҳити истеҳсолӣ ворид кунад. Вале ба мо лозим омад, ки ин корро автоматй кунонда, омили инсониро аз байн барем. Илова бар ин, серверҳо пеш аз интиқоли маҷмӯи системаҳои SAP, ки барои ширкат муҳим буданд, иваз карда шуданд.

Ба истифода додани серверхои нав катъиян ба мухлати мукарраршуда вобаста карда шуд. Ва интиқол додани он маънои зери хатар гузоштан ҳам интиқоли як миллиард тӯҳфа ва ҳам муҳоҷирати системаҳоро дошт. Ҳатто як гурӯҳе, ки аз Падари Фрост ва Бобои Барфӣ иборат аст, санаро тағир дода наметавонанд - шумо метавонед системаи SAP-ро барои идоракунии анбор танҳо як маротиба дар як сол интиқол диҳед. Аз 31 декабр то 1 январ анборҳои азими ин фурӯшанда, ки дар маҷмӯъ 20 майдони футболро ташкил медиҳанд, 15 соат кори худро қатъ мекунанд. Ва ин ягона давраи вақт барои интиқоли система аст. Ҳангоми ҷорӣ кардани серверҳо мо барои хатогӣ ҷой надоштем.

Иҷозат диҳед возеҳ бошам: достони ман асбобҳо ва раванди идоракунии конфигуратсияро инъикос мекунад, ки дастаи мо истифода мебарад.

Маҷмӯи идоракунии конфигуратсия аз якчанд сатҳ иборат аст. Ҷузъи асосӣ системаи CMS мебошад. Дар кори саноатй, набудани яке аз сатххо ногузир ба муъчизахои ногувор оварда мерасонад.

Идоракунии насби ОС

Сатҳи аввал системаи идоракунии насби системаҳои оператсионӣ дар серверҳои физикӣ ва виртуалӣ мебошад. Он конфигуратсияҳои асосии ОС-ро эҷод мекунад ва омили инсониро аз байн мебарад.

Бо истифода аз ин система, мо намунаҳои сервери стандартиро бо OS барои автоматизатсияи минбаъда мувофиқ гирифтем. Ҳангоми "рехт" онҳо маҷмӯи ҳадди ақали корбарони маҳаллӣ ва калидҳои ҷамъиятии SSH, инчунин конфигуратсияи пайвастаи OS гирифтанд. Мо метавонистем кафолат дод, ки серверҳоро тавассути CMS идора кунем ва итминон доштем, ки дар сатҳи ОС ягон сюрприз "поён" вуҷуд надорад.

Вазифаи "максимали" барои системаи идоракунии насбкунӣ ба таври худкор танзим кардани серверҳо аз сатҳи BIOS/Firmware то OS мебошад. Дар ин ҷо бисёр чиз аз таҷҳизот ва вазифаҳои танзим вобаста аст. Барои таҷҳизоти гетерогенӣ, шумо метавонед баррасӣ кунед API REDFISH. Агар тамоми сахтафзор аз як фурӯшанда бошад, он гоҳ истифодаи абзорҳои идоракунии омода (масалан, HP ILO Amplifier, DELL OpenManage ва ғайра) бештар қулайтар аст.

Барои насб кардани ОС дар серверҳои физикӣ, мо Cobbler-и маъруфро истифода бурдем, ки маҷмӯи профилҳои насбкуниро бо хидмати амалиёт мувофиқа мекунад. Ҳангоми илова кардани сервери нав ба инфрасохтор, муҳандис суроғаи MAC-и серверро ба профили зарурӣ дар Cobbler пайваст. Ҳангоми бори аввал тавассути шабака пурбор кардан, сервер суроғаи муваққатӣ ва ОС-и нав гирифт. Сипас он ба суроғаи ҳадафи VLAN/IP интиқол дода шуд ва дар он ҷо кор идома дод. Бале, тағир додани VLAN вақт ва ҳамоҳангиро талаб мекунад, аммо он муҳофизати иловагиро аз насби тасодуфии сервер дар муҳити истеҳсолӣ таъмин мекунад.

Мо серверҳои виртуалиро дар асоси қолибҳое, ки бо истифода аз HashiСorp Packer таҳия шудаанд, эҷод кардем. Сабаб як буд: пешгирии хатогиҳои эҳтимолии инсон ҳангоми насби ОС. Аммо, бар хилофи серверҳои ҷисмонӣ, Packer эҳтиёҷоти PXE, пурборкунии шабака ва тағироти VLAN-ро аз байн мебарад. Ин эҷоди серверҳои виртуалиро осонтар ва соддатар кардааст.

Триллер дар бораи насб кардани серверҳо бидуни мӯъҷизаҳо бо идоракунии конфигуратсия
Райс. 1. Идоракунии насби системаҳои оператсионӣ.

Идоракунии асрор

Ҳама гуна системаи идоракунии конфигуратсия дорои маълумотест, ки бояд аз корбарони оддӣ пинҳон карда шаванд, аммо барои омода кардани системаҳо заруранд. Инҳо паролҳо барои корбарони маҳаллӣ ва ҳисобҳои хидматӣ, калидҳои сертификатсия, токенҳои гуногуни API ва ғайра мебошанд. Онҳоро одатан “сирҳо” меноманд.

Агар шумо аз аввал дар куҷо ва чӣ гуна нигоҳ доштани ин асрорро муайян накунед, пас вобаста ба вазнинии талаботи амнияти иттилоотӣ, усулҳои зерини нигоҳдорӣ эҳтимол дорад:

  • бевосита дар коди идоракунии конфигуратсия ё дар файлҳо дар анбор;
  • дар воситаҳои махсуси идоракунии конфигуратсия (масалан, Ansible Vault);
  • дар системаҳои CI/CD (Jenkins/TeamCity/GitLab/ ғайра) ё дар системаҳои идоракунии конфигуратсия (Ansible Tower/Ansible AWX);
  • асрорро низ «дастӣ» интиқол додан мумкин аст. Масалан, онҳо дар як макони муайян ҷойгир карда мешаванд ва сипас онҳоро системаҳои идоракунии конфигуратсия истифода мебаранд;
  • комбинатсияи гуногуни дар боло зикршуда.

Ҳар як усул камбудиҳои худро дорад. Сабаби асосӣ ин набудани сиёсат барои дастрасӣ ба асрор аст: муайян кардан ғайриимкон ё душвор аст, ки кӣ метавонад аз сирри муайян истифода кунад. Камбудии дигар ин набудани аудити дастрасӣ ва давраи пурраи ҳаёт мебошад. Масалан, калиди ҷамъиятиро, ки дар код ва як қатор системаҳои алоқаманд навишта шудааст, чӣ тавр зуд иваз кардан мумкин аст?

Мо анбори мутамаркази махфии HashiCorp Vault-ро истифода бурдем. Ин ба мо имкон дод:

  • асрорро бехатар нигоҳ доред. Онҳо рамзгузорӣ шудаанд ва ҳатто агар касе ба пойгоҳи додаҳои Vault дастрасӣ пайдо кунад (масалан, тавассути барқарор кардани он аз нусхаи эҳтиётӣ), онҳо сирри дар он ҷо нигоҳ дошташударо хонда наметавонанд;
  • сиёсат барои дастрасӣ ба асрор ташкил кунед. Ба корбарон ва замимаҳо танҳо сирри "тақсимшуда" дастрас аст;
  • дастрасии аудит ба асрор. Ҳама гуна амалҳои дорои сирр дар журнали аудити Vault сабт карда мешаванд;
  • мукаммали «зиндагии» кор карданро бо асрор ташкил кунанд. Онҳо метавонанд таъсис дода шаванд, бекор карда шаванд, мӯҳлати анҷоми кор муқаррар карда шаванд ва ғайра.
  • ҳамгироӣ бо дигар системаҳое, ки ба сирри дастрасӣ ниёз доранд;
  • инчунин рамзгузории охири ба охир, паролҳои якдафъаина барои ОС ва пойгоҳи додаҳо, шаҳодатномаҳои марказҳои ваколатдор ва ғайраро истифода баред.

Акнун биёед ба системаи марказии аутентификатсия ва авторизатсия гузарем. Бе ин кор кардан мумкин буд, аммо идоракунии корбарон дар бисёре аз системаҳои алоқаманд хеле ночиз аст. Мо аутентификатсия ва авторизатсияро тавассути хидмати LDAP танзим кардем. Дар акси ҳол, Vault бояд токенҳои аутентификатсияро барои корбарон пайваста нашр ва пайгирӣ кунад. Ва нест кардан ва илова кардани корбарон ба ҷустуҷӯи "оё ман ин ҳисоби корбарро дар ҳама ҷо эҷод/нест кардам?"

Мо ба системаи худ сатҳи дигарро илова мекунем: идоракунии махфият ва аутентификатсия/иҷозатномаи марказӣ:

Триллер дар бораи насб кардани серверҳо бидуни мӯъҷизаҳо бо идоракунии конфигуратсия
Райс. 2. Идоракунии асрор.

Идоракунии конфигуратсия

Мо ба асли - системаи CMS расидем. Дар ҳолати мо, ин маҷмӯи Ansible ва Red Hat Ansible AWX мебошад.

Ба ҷои Ansible, Chef, Puppet, SaltStack -ро истифода бурдан мумкин аст. Мо Ansible-ро дар асоси якчанд меъёрҳо интихоб кардем.

  • Пеш аз ҳама, он универсалӣ аст. Маҷмӯи модулҳои омода барои назорат таассурот мегузорад. Ва агар шумо аз он кофӣ надошта бошед, шумо метавонед дар GitHub ва Galaxy ҷустуҷӯ кунед.
  • Дуюм, лозим нест, ки агентҳо дар таҷҳизоти идорашаванда насб ва дастгирӣ карда шаванд, исбот кунанд, ки онҳо ба сарборӣ халал намерасонанд ва набудани "хатчӯбҳоро" тасдиқ мекунанд.
  • Сеюм, Ansible барои воридшавӣ монеаи паст дорад. Муҳандиси салоҳиятдор дар рӯзи аввали кор бо маҳсулот китоби кориро менависад.

Аммо танҳо Ansible дар муҳити истеҳсолӣ барои мо кофӣ набуд. Дар акси ҳол, бо маҳдуд кардани дастрасӣ ва тафтиши амали маъмурон мушкилоти зиёде ба миён меоянд. Чӣ тавр маҳдуд кардани дастрасӣ? Дар ниҳоят, барои ҳар як шӯъба лозим буд, ки маҷмӯи серверҳои "худ" -ро идора кунад (хонед: китоби бозикунии Ansible -ро иҷро кунед). Чӣ тавр иҷозат додан мумкин аст, ки танҳо ба баъзе кормандон китобҳои мушаххаси Ansible-ро идора кунанд? Ё чӣ гуна пайгирӣ кардан мумкин аст, ки кӣ китоби бозиро бидуни насб кардани донишҳои зиёди маҳаллӣ дар серверҳо ва таҷҳизоти Ansible оғоз кардааст?

Ҳиссаи асосии чунин масъалаҳоро Red Hat ҳал мекунад Бурҷи Ansible, ё лоиҳаи сарчашмаи кушодаи ӯ Ansible AWX. Барои ҳамин мо онро барои муштарӣ бартарӣ додем.

Ва як ламси дигар ба портрети системаи CMS-и мо. Китоби бозикунии Ansible бояд дар системаҳои идоракунии анбори кодҳо нигоҳ дошта шавад. Мо онро дорем GitLab CE.

Ҳамин тавр, худи конфигуратсияҳо аз ҷониби маҷмӯи Ansible/Ansible AWX/GitLab идора карда мешаванд (ниг. Расми 3). Албатта, AWX/GitLab бо системаи ягонаи аутентификатсия муттаҳид карда шудааст ва китоби бозии Ansible бо HashiCorp Vault ҳамгиро шудааст. Конфигуратсияҳо ба муҳити истеҳсолӣ танҳо тавассути Ansible AWX ворид мешаванд, ки дар он ҳама "қоидаҳои бозӣ" муайян карда шудаанд: кӣ метавонад чиро танзим кунад, рамзи идоракунии конфигуратсияро барои CMS аз куҷо гирифтан мумкин аст ва ғайра.

Триллер дар бораи насб кардани серверҳо бидуни мӯъҷизаҳо бо идоракунии конфигуратсия
Райс. 3. Идоракунии конфигуратсия.

Идоракунии санҷиш

Конфигуратсияи мо дар шакли код пешниҳод карда мешавад. Аз ин рӯ, мо маҷбур мешавем, ки ҳамон қоидаҳоеро, ки таҳиягарони нармафзор доранд, бозӣ кунем. Ба мо лозим буд, ки равандҳои таҳия, санҷиши пайваста, таҳвил ва татбиқи коди конфигуратсияро ба серверҳои истеҳсолӣ ташкил кунем.

Агар ин фавран анҷом дода нашавад, он гоҳ нақшҳои барои конфигуратсия навишташуда ё дастгирӣ ва тағир доданро қатъ мекунанд ё дар истеҳсолот ба кор андохта мешаванд. Илочи ин дард маълум аст ва дар ин лоида худро исбот кардааст:

  • ҳар як нақш бо санҷишҳои воҳид фаро гирифта шудааст;
  • санҷишҳо ба таври худкор иҷро мешаванд, вақте ки ягон тағирот дар коде, ки конфигуратсияҳоро идора мекунад;
  • тағирот дар коди идоракунии конфигуратсия танҳо пас аз бомуваффақият гузаштани ҳама санҷишҳо ва баррасии код ба муҳити истеҳсолӣ бароварда мешаванд.

Таҳияи кодҳо ва идоракунии конфигуратсия оромтар ва пешгӯишавандатар шуданд. Барои ташкили санҷиши пайваста, мо асбоби GitLab CI/CD-ро истифода бурдем ва гирифтем Молекулаи ҳассос.

Ҳар вақте ки дар коди идоракунии конфигуратсия тағйирот ворид шавад, GitLab CI/CD Molecule-ро даъват мекунад:

  • он синтаксиси кодро тафтиш мекунад,
  • контейнери Docker-ро баланд мекунад,
  • рамзи тағирёфтаро ба контейнери сохташуда татбиқ мекунад,
  • нақшро барои номутаносибӣ месанҷад ва барои ин код озмоишҳо мегузаронад (дар ин ҷо гранулярӣ дар сатҳи қобили нақш аст, ба расми 4 нигаред).

Мо конфигуратсияҳоро бо истифода аз Ansible AWX ба муҳити истеҳсолӣ расондем. Муҳандисони амалиёт тағироти конфигуратсияро тавассути қолабҳои пешакӣ муайяншуда татбиқ карданд. AWX мустақилона версияи охирини кодро аз филиали устои GitLab ҳар дафъае, ки он истифода мешуд, "талаб кардааст". Бо ин роҳ мо истифодаи коди санҷиданашуда ё кӯҳнаро дар муҳити истеҳсолӣ истисно кардем. Табиист, ки код танхо баъди санчиш, баррасй ва тасдик ба шохаи усто дохил шуд.

Триллер дар бораи насб кардани серверҳо бидуни мӯъҷизаҳо бо идоракунии конфигуратсия
Райс. 4. Санҷиши худкори нақшҳо дар GitLab CI/CD.

Бо кори системахои истехсолй низ проблемае мавчуд аст. Дар ҳаёти воқеӣ танҳо тавассути рамзи CMS тағир додани конфигуратсия хеле душвор аст. Ҳолатҳои фавқулодда вақте ба миён меоянд, ки муҳандис бояд конфигуратсияро "дар ин ҷо ва ҳоло" тағир диҳад, бидуни интизории таҳрир, санҷиш, тасдиқ ва ғайра.

Дар натиҷа, бинобар тағироти дастӣ, дар конфигуратсия дар як намуди таҷҳизот ихтилофҳо пайдо мешаванд (масалан, танзимоти sysctl дар гиреҳҳои кластери HA ба таври гуногун танзим карда мешаванд). Ё конфигуратсияи воқеии таҷҳизот аз оне, ки дар рамзи CMS нишон дода шудааст, фарқ мекунад.

Аз ин рӯ, ба ғайр аз санҷиши пайваста, мо муҳити истеҳсолиро барои ихтилофоти конфигуратсия тафтиш мекунем. Мо соддатарин вариантро интихоб кардем: иҷро кардани коди конфигуратсияи CMS дар реҷаи “иҷрои хушк”, яъне бидуни ворид кардани тағйирот, вале бо огоҳӣ дар бораи ҳама ихтилофот байни конфигуратсияи нақшавӣ ва воқеӣ. Мо инро тавассути ба таври даврӣ иҷро кардани ҳама китобҳои бозикунии Ansible бо опсияи "-check" дар серверҳои истеҳсолӣ амалӣ кардем. Чун ҳамеша, Ansible AWX барои оғоз кардан ва навсозӣ кардани китоби бозӣ масъул аст (ниг. Расми 5):

Триллер дар бораи насб кардани серверҳо бидуни мӯъҷизаҳо бо идоракунии конфигуратсия
Райс. 5. Тафовутҳои конфигуратсияро дар Ansible AWX тафтиш мекунад.

Пас аз санҷиш, AWX ба маъмурон гузориши ихтилофот мефиристад. Онҳо конфигуратсияи мушкилотро меомӯзанд ва сипас онро тавассути китобҳои бозикунии тасҳеҳ ислоҳ мекунанд. Ҳамин тавр мо конфигуратсияро дар муҳити истеҳсолӣ нигоҳ медорем ва CMS ҳамеша навсозӣ ва ҳамоҳанг карда мешавад. Вақте ки рамзи CMS дар серверҳои "истеҳсолӣ" истифода мешавад, ин "мӯъҷизаҳои" ногуворро нест мекунад.

Ҳоло мо як қабати муҳими санҷишӣ дорем, ки аз Ansible AWX/GitLab/Molecule иборат аст (Расми 6).

Триллер дар бораи насб кардани серверҳо бидуни мӯъҷизаҳо бо идоракунии конфигуратсия
Райс. 6. Идоракунии санҷиш.

Мушкил? Ман баҳс намекунам. Аммо чунин комплекси идоракунии конфигуратсия ба бисёр саволҳои марбут ба автоматикунонии конфигуратсияи сервер ҷавоби ҳамаҷониба табдил ёфтааст. Ҳоло серверҳои стандартии фурӯшанда ҳамеша конфигуратсияи дақиқи муайян доранд. CMS, бар хилофи муҳандис, илова кардани танзимоти зарурӣ, эҷоди корбарон ва иҷрои даҳҳо ё садҳо танзимоти заруриро фаромӯш намекунад.

Имрӯз дар танзимоти серверҳо ва муҳитҳо "дониши махфӣ" вуҷуд надорад. Ҳамаи хусусиятҳои зарурӣ дар китоби бозӣ инъикос карда мешаванд. Дигар эҷодкорӣ ва дастурҳои норавшан нест: "Онро мисли Oracle муқаррарӣ насб кунед, аммо шумо бояд якчанд танзимоти sysctl-ро муайян кунед ва корбаронро бо UID-и зарурӣ илова кунед. Аз бачаҳои амалиёт пурсед, онҳо медонанд".

Қобилияти ошкор кардани ихтилофоти конфигуратсия ва ислоҳи фаъолонаи онҳо оромии рӯҳро таъмин мекунад. Бе системаи идоракунии конфигуратсия, ин одатан дигар ба назар мерасад. Мушкилот то рӯзе ҷамъ мешавад, ки ба истеҳсолот «тир» мекунанд. Пас аз он, мубоҳиса гузаронида мешавад, конфигуратсияҳо тафтиш ва ислоҳ карда мешаванд. Ва давра боз такрор мешавад

Ва албатта, мо ба кор андохтани серверҳоро аз чанд рӯз то соат суръат додем.

Хуб, дар арафаи Соли нав, вақте ки кӯдакон бо шодӣ тӯҳфаҳоро мекушоянд ва калонсолон ҳангоми садо додани садои зангҳо орзу мекарданд, муҳандисони мо системаи SAP-ро ба серверҳои нав интиқол доданд. Ҳатто Бобои Барфӣ мегӯяд, ки беҳтарин мӯъҷизаҳо онон ҳастанд, ки хуб омода шудаанд.

PS Гурӯҳи мо аксар вақт бо он воқеият дучор мешавад, ки муштариён мехоҳанд мушкилоти идоракунии конфигуратсияро то ҳадди имкон содда ҳал кунанд. Идеалӣ, гӯё бо ҷодугарӣ - бо як асбоб. Аммо дар зиндагӣ ҳама чиз мураккабтар аст (бале, тирҳои нуқра дубора расонида нашуданд): шумо бояд тамоми равандро бо истифода аз асбобҳое, ки барои дастаи муштарӣ мувофиқанд, эҷод кунед.

Муаллиф: Сергей Артемов, меъмори кафедра Ҳалли DevOps "Jet Infosystems"

Манбаъ: will.com

Илова Эзоҳ