Ja jÅ«su IT infrastruktÅ«ra augs pÄrÄk Ätri, jÅ«s agrÄk vai vÄlÄk bÅ«siet izvÄles priekÅ”Ä: lineÄri palielinÄt cilvÄkresursus, lai to atbalstÄ«tu vai sÄktu automatizÄciju. LÄ«dz kÄdam brÄ«dim mÄs dzÄ«vojÄm pirmajÄ paradigmÄ, un tad sÄkÄs garÅ” ceļŔ uz Infrastructure-as-Code.
Protams, NSPK nav startup, taÄu tÄda atmosfÄra uzÅÄmumÄ valdÄ«ja pirmajos pastÄvÄÅ”anas gados, un tie bija ļoti interesanti gadi. Mani sauc
KopumÄ varam teikt, ka mÅ«su komanda uzÅÄmumam piegÄdÄ 2 produktus. Pirmais ir infrastruktÅ«ra. Pastam ir jÄdarbojas, DNS ir jÄdarbojas, un domÄna kontrolleriem ir jÄļauj jums piekļūt serveriem, kuriem nevajadzÄtu avarÄt. UzÅÄmuma IT ainava ir milzÄ«ga! Å Ä«s ir biznesa un misijas kritiskÄs sistÄmas, dažu pieejamÄ«bas prasÄ«bas ir 99,999 XNUMX. Otrs produkts ir paÅ”i serveri, fiziskie un virtuÄlie. EsoÅ”ie ir jÄuzrauga, un jauni regulÄri jÄpiegÄdÄ klientiem no daudzÄm nodaļÄm. Å ajÄ rakstÄ es vÄlos pievÄrsties tam, kÄ mÄs izstrÄdÄjÄm infrastruktÅ«ru, kas ir atbildÄ«ga par servera dzÄ«ves ciklu.
SÄkot no ceļojuma
MÅ«su ceļojuma sÄkumÄ mÅ«su tehnoloÄ£iju kaudze izskatÄ«jÄs Å”Ädi:
OS CentOS 7
FreeIPA domÄna kontrolieri
AutomatizÄcija - Ansible(+Tower), Kurpnieks
Tas viss atradÄs 3 domÄnos, kas bija izvietoti vairÄkos datu centros. VienÄ datu centrÄ ir biroja sistÄmas un testÄÅ”anas vietas, pÄrÄjÄs ir PROD.
Serveru izveide vienÄ brÄ«dÄ« izskatÄ«jÄs Å”Ädi:
VM veidnÄ CentOS ir minimÄls un nepiecieÅ”amais minimums ir kÄ pareizais /etc/resolv.conf, pÄrÄjais nÄk caur Ansible.
CMDB ā Excel.
Ja serveris ir fizisks, tad tÄ vietÄ, lai kopÄtu virtuÄlo maŔīnu, OS tajÄ tika instalÄta, izmantojot Cobbler - mÄrÄ·a servera MAC adreses tiek pievienotas Cobbler konfigurÄcijai, serveris saÅem IP adresi, izmantojot DHCP, un pÄc tam OS. ir pievienots.
SÄkumÄ mÄs pat mÄÄ£inÄjÄm veikt kaut kÄdu konfigurÄcijas pÄrvaldÄ«bu programmÄ Cobbler. Bet laika gaitÄ tas sÄka radÄ«t problÄmas ar konfigurÄciju pÄrnesamÄ«bu gan uz citiem datu centriem, gan ar Ansible kodu virtuÄlo maŔīnu sagatavoÅ”anai.
TajÄ laikÄ daudzi no mums uztvÄra Ansible kÄ Ärtu Bash paplaÅ”inÄjumu un neskopojÄs ar dizainparaugiem, izmantojot shell un sed. KopumÄ Bashsible. Tas galu galÄ noveda pie tÄ, ka, ja rokasgrÄmata kÄda iemesla dÄļ nedarbojÄs serverÄ«, bija vieglÄk izdzÄst serveri, salabot rokasgrÄmatu un palaist to vÄlreiz. BÅ«tÄ«bÄ nebija skriptu versijas, nebija konfigurÄciju pÄrnesamÄ«bas.
PiemÄram, mÄs vÄlÄjÄmies mainÄ«t kÄdu konfigurÄciju visos serveros:
- MÄs mainÄm konfigurÄciju esoÅ”ajos serveros loÄ£iskajÄ segmentÄ/datu centrÄ. DažkÄrt ne vienÄ dienÄ ā pieejamÄ«bas prasÄ«bas un lielo skaitļu likums neļauj visas izmaiÅas piemÄrot uzreiz. Un dažas izmaiÅas ir potenciÄli destruktÄ«vas un prasa kaut ko restartÄt ā no pakalpojumiem uz paÅ”u OS.
- Labojiet to Ansible
- MÄs to labojam Cobbler
- AtkÄrtojiet N reizes katram loÄ£iskajam segmentam/datu centram
Lai visas izmaiÅas noritÄtu raiti, bija jÄÅem vÄrÄ daudzi faktori, un izmaiÅas notiek nepÄrtraukti.
- IespÄjamÄ koda pÄrstrukturÄÅ”ana, konfigurÄcijas faili
- IekÅ”ÄjÄs paraugprakses maiÅa
- IzmaiÅas, pamatojoties uz incidentu/avÄriju analÄ«zes rezultÄtiem
- MainÄs gan iekÅ”Äjie, gan ÄrÄjie droŔības standarti. PiemÄram, PCI DSS katru gadu tiek atjauninÄts ar jaunÄm prasÄ«bÄm
InfrastruktÅ«ras izaugsme un ceļojuma sÄkums
Pieauga serveru/loÄ£isko domÄnu/datu centru skaits un lÄ«dz ar tiem arÄ« kļūdu skaits konfigurÄcijÄs. KÄdÄ brÄ«dÄ« mÄs nonÄcÄm pie trim virzieniem, kuros ir jÄattÄ«sta konfigurÄcijas pÄrvaldÄ«ba:
- AutomatizÄcija. Cik vien iespÄjams, ir jÄizvairÄs no cilvÄka kļūdÄm atkÄrtotÄs darbÄ«bÄs.
- AtkÄrtojamÄ«ba. Ir daudz vieglÄk pÄrvaldÄ«t infrastruktÅ«ru, ja tÄ ir paredzama. Serveru konfigurÄcijai un to sagatavoÅ”anas rÄ«kiem visur jÄbÅ«t vienÄdai. Tas ir svarÄ«gi arÄ« produktu komandÄm ā pÄc testÄÅ”anas ir jÄgarantÄ, ka lietojumprogramma nonÄks ražoÅ”anas vidÄ, kas konfigurÄta lÄ«dzÄ«gi kÄ testa videi.
- KonfigurÄcijas pÄrvaldÄ«bas izmaiÅu veikÅ”anas vienkÄrŔība un caurspÄ«dÄ«gums.
Atliek pievienot pÄris rÄ«kus.
MÄs izvÄlÄjÄmies GitLab CE kÄ mÅ«su kodu krÄtuvi, jo Ä«paÅ”i tÄ iebÅ«vÄtajiem CI/CD moduļiem.
NoslÄpumu glabÄtuve - Hashicorp Vault, t.sk. par lielisko API.
TestÄÅ”anas konfigurÄcijas un iespÄjamÄs lomas ā Molecule+Testinfra. PÄrbaudes norit daudz ÄtrÄk, ja izveidojat savienojumu ar iespÄjamo mitogÄnu. TajÄ paÅ”Ä laikÄ mÄs sÄkÄm rakstÄ«t paÅ”i savu CMDB un orÄ·estrÄtÄju automÄtiskai izvietoÅ”anai (attÄlÄ virs Cobbler), taÄu tas ir pavisam cits stÄsts, ko mans kolÄÄ£is un galvenais Å”o sistÄmu izstrÄdÄtÄjs stÄstÄ«s nÄkotnÄ.
MÅ«su izvÄle:
Molekula + Testinfra
Ansible + Tower + AWX
Serveru pasaule + DITNET (paÅ”u izstrÄde)
Kobleris
Gitlab + GitLab skrÄjÄjs
Hashicorp Vault
Starp citu, par prasmÄ«gÄm lomÄm. SÄkumÄ bija tikai viens, bet pÄc vairÄkiem pÄrveidojumiem bija 17. Ä»oti iesaku sadalÄ«t monolÄ«tu idempotentÄs lomÄs, kuras pÄc tam var palaist atseviŔķi, papildus var pievienot tagus. MÄs sadalÄ«jÄm lomas pÄc funkcionalitÄtes - tÄ«kls, reÄ£istrÄÅ”ana, pakotnes, aparatÅ«ra, molekula utt. KopumÄ mÄs ievÄrojÄm tÄlÄk norÄdÄ«to stratÄÄ£iju. Es neuzstÄju, ka tÄ ir vienÄ«gÄ patiesÄ«ba, bet tÄ mums noderÄja.
- Serveru kopÄÅ”ana no āzelta attÄlaā ir ļauna!Galvenais trÅ«kums ir tas, ka jÅ«s nezinÄt, kÄdÄ stÄvoklÄ« ir attÄli paÅ”laik, un visas izmaiÅas attieksies uz visiem attÄliem visÄs virtualizÄcijas fermÄs.
- Izmantojiet noklusÄjuma konfigurÄcijas failus lÄ«dz minimumam un vienojieties ar citiem departamentiem, ka esat atbildÄ«gs par galvenajiem sistÄmas failiem, piemÄram:
- AtstÄjiet /etc/sysctl.conf tukÅ”u, iestatÄ«jumiem jÄbÅ«t tikai /etc/sysctl.d/. NoklusÄjums vienÄ failÄ, pielÄgots lietojumprogrammai citÄ.
- Izmantojiet ignorÄÅ”anas failus, lai rediÄ£Ätu sistÄmas vienÄ«bas.
- Veidojiet visas konfigurÄcijas un iekļaujiet tÄs pilnÄ«bÄ; ja iespÄjams, rokasgrÄmatÄs nelietojiet sed vai tÄ analogus
- KonfigurÄcijas pÄrvaldÄ«bas sistÄmas koda pÄrveidoÅ”ana:
- Sadaliet uzdevumus loÄ£iskÄs vienÄ«bÄs un pÄrrakstiet monolÄ«tu lomÄs
- Izmantojiet linterus! Ansible-lint, yaml-lint utt
- Mainiet savu pieeju! Nav apkaunojuma. Ir nepiecieÅ”ams aprakstÄ«t sistÄmas stÄvokli
- VisÄm Ansible lomÄm jums ir jÄraksta testi molekulÄs un jÄÄ£enerÄ atskaites reizi dienÄ.
- MÅ«su gadÄ«jumÄ pÄc testu sagatavoÅ”anas (kuru ir vairÄk nekÄ 100) tika atrastas aptuveni 70000 XNUMX kļūdu. PagÄja vairÄki mÄneÅ”i, lai to salabotu.
Mūsu īstenoŔana
TÄtad iespÄjamÄs lomas bija gatavas, veidotas un pÄrbaudÄ«tas. Un pat gitus visur audzÄ. TaÄu jautÄjums par uzticamu koda piegÄdi dažÄdiem segmentiem palika atklÄts. MÄs nolÄmÄm sinhronizÄt ar skriptiem. IzskatÄs Å”Ädi:
PÄc izmaiÅu ievieÅ”anas tiek palaists CI, tiek izveidots testa serveris, tiek izlaistas lomas un molekula tiek pÄrbaudÄ«ta. Ja viss ir kÄrtÄ«bÄ, kods tiek nosÅ«tÄ«ts uz prod filiÄli. TaÄu mÄs nepielietojam jaunu kodu esoÅ”ajiem serveriem maŔīnÄ. Tas ir sava veida aizbÄznis, kas nepiecieÅ”ams mÅ«su sistÄmu augstajai pieejamÄ«bai. Un, kad infrastruktÅ«ra kļūst milzÄ«ga, stÄjas spÄkÄ lielo skaitļu likums ā pat ja esat pÄrliecinÄts, ka izmaiÅas ir nekaitÄ«gas, tÄs var novest pie bÄdÄ«gÄm sekÄm.
Ir arÄ« daudz iespÄju izveidot serverus. MÄs beidzot izvÄlÄjÄmies pielÄgotus Python skriptus. Un CI ansible:
- name: create1.yml - Create a VM from a template
vmware_guest:
hostname: "{{datacenter}}".domain.ru
username: "{{ username_vc }}"
password: "{{ password_vc }}"
validate_certs: no
cluster: "{{cluster}}"
datacenter: "{{datacenter}}"
name: "{{ name }}"
state: poweredon
folder: "/{{folder}}"
template: "{{template}}"
customization:
hostname: "{{ name }}"
domain: domain.ru
dns_servers:
- "{{ ipa1_dns }}"
- "{{ ipa2_dns }}"
networks:
- name: "{{ network }}"
type: static
ip: "{{ip}}"
netmask: "{{netmask}}"
gateway: "{{gateway}}"
wake_on_lan: True
start_connected: True
allow_guest_control: True
wait_for_ip_address: yes
disk:
- size_gb: 1
type: thin
datastore: "{{datastore}}"
- size_gb: 20
type: thin
datastore: "{{datastore}}"
Pie tÄ esam nonÄkuÅ”i, sistÄma turpina dzÄ«vot un attÄ«stÄ«ties.
- 17 IespÄjamÄs lomas servera iestatÄ«Å”anai. Katra no lomÄm ir paredzÄta atseviŔķa loÄ£iska uzdevuma risinÄÅ”anai (reÄ£istrÄcija, audits, lietotÄja autorizÄcija, uzraudzÄ«ba utt.).
- Lomu pÄrbaude. Molekula + TestInfra.
- PaÅ”u izstrÄde: CMDB + Orchestrator.
- Servera izveides laiks ir ~30 minÅ«tes, automatizÄts un praktiski neatkarÄ«gs no uzdevumu rindas.
- VienÄds infrastruktÅ«ras stÄvoklis/nosaukÅ”ana visos segmentos - playbooks, repozitorijs, virtualizÄcijas elementi.
- Ikdienas servera statusa pÄrbaude, Ä£enerÄjot ziÅojumus par neatbilstÄ«bÄm standartam.
Es ceru, ka mans stÄsts bÅ«s noderÄ«gs tiem, kas ir sava ceļojuma sÄkumÄ. KÄdu automatizÄcijas steku jÅ«s izmantojat?
Avots: www.habr.com