Pag-automate sa Pagpuli sa Disk nga adunay Ansible

Pag-automate sa Pagpuli sa Disk nga adunay Ansible

Kumusta tanan. Nagtrabaho ko isip lead system administrator sa OK ug responsable sa stable nga operasyon sa portal. Gusto nako nga hisgutan kung giunsa namon gitukod ang proseso sa awtomatikong pag-ilis sa disk, ug kung giunsa namon wala iapil ang tagdumala niini nga proseso ug gipulihan siya sa usa ka bot.

Kini nga artikulo usa ka matang sa transliterasyon nga pasundayag sa HighLoad+ 2018

Paghimo usa ka proseso sa pag-ilis sa disk

Una sa pipila ka mga numero

Ang OK usa ka higante nga serbisyo nga gigamit sa milyon-milyon nga mga tawo. Giserbisyuhan kini sa mga 7 ka libo nga mga server nga nahimutang sa 4 nga lainlaing mga sentro sa datos. Adunay labaw pa sa 70 ka libo nga mga disk sa mga server. Kung imong ibutang kini sa ibabaw sa usag usa, makakuha ka usa ka tore nga adunay gitas-on nga labaw sa 1 km.

Ang mga hard drive mao ang sangkap sa server nga kanunay nga mapakyas. Niini nga gidaghanon, kinahanglan natong usbon ang mga 30 ka mga disk sa usa ka semana, ug kini nga pamaagi nahimong dili kaayo nindot nga rutina.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible

Mga panghitabo

Gipaila namo ang usa ka hingpit nga pagdumala sa insidente sa among kompanya. Among girekord ang matag insidente sa Jira, ug dayon among sulbaron ug analisahon kini. Kung ang insidente adunay epekto sa mga tiggamit, nan siguradong magtigum kami ug maghunahuna kung giunsa ang pagtubag nga mas paspas sa ingon nga mga kaso, kung giunsa ang pagkunhod sa epekto ug, siyempre, kung giunsa pagpugong ang pagbalik.

Ang pagtipig dili eksepsiyon. Gibantayan ni Zabbix ang ilang kahimtang. Among gimonitor ang mga mensahe sa Syslog alang sa mga sayop sa pagsulat/pagbasa, pag-analisar sa kahimtang sa HW/SW raids, pagmonitor sa SMART, pagkalkula sa pagsul-ob alang sa mga SSD.

Giunsa pagbag-o ang mga disc kaniadto

Kung ang usa ka gatilyo sunog sa Zabbix, usa ka insidente ang gihimo sa Jira ug awtomatiko nga gibutang sa angay nga mga inhenyero sa mga sentro sa datos. Gibuhat namo kini sa tanan nga mga insidente sa HW, nga mao, kadtong nagkinahanglan og usa ka matang sa pisikal nga trabaho sa mga ekipo sa data center.
Ang inhenyero sa sentro sa datos usa ka tawo nga nagsulbad sa mga isyu nga may kalabotan sa hardware, responsable sa pag-install, pagmentinar, ug pagbungkag sa mga server. Pagkadawat og tiket, ang engineer nagtrabaho. Sa mga istante sa disk, kini nag-ilis sa mga disk sa iyang kaugalingon. Apan kung wala siyay access sa gusto nga aparato, ang engineer modangop sa mga tigdumala sa sistema sa katungdanan alang sa tabang. Una sa tanan, kinahanglan nimo nga kuhaon ang disk gikan sa rotation. Aron mahimo kini, kinahanglan nimo nga buhaton ang kinahanglan nga mga pagbag-o sa server, hunong ang mga aplikasyon, i-unmount ang disk.

Ang tagdumala sa sistema nga nag-duty mao ang responsable sa operasyon sa tibuuk nga portal sa panahon sa pagbalhin sa trabaho. Gisusi niya ang mga insidente, nag-ayo, nagtabang sa mga developer sa gagmay nga mga buluhaton. Dili lamang kini makiglabot sa mga hard drive.

Kaniadto, ang mga inhenyero sa data center nakig-chat sa tagdumala sa sistema. Ang mga inhenyero nagpadala og mga link sa mga tiket sa Jira, ang administrador miagi kanila, nagtago sa usa ka talaan sa trabaho sa pipila ka notebook. Apan alang sa ingon nga mga buluhaton, ang mga chat dili kombenyente: ang kasayuran didto dili istruktura ug dali nga nawala. Oo, ug ang tagdumala mahimo ra nga mobalhin gikan sa kompyuter ug dili motubag sa mga hangyo sulod sa pipila ka panahon, ug ang engineer mibarug sa server nga adunay usa ka pakete sa mga disk ug naghulat.

Apan ang pinakagrabe nga butang mao nga ang mga tigdumala wala makakita sa tibuok nga hulagway: unsa nga mga insidente sa disk ang anaa, diin ang usa ka problema mahimong motungha. Kini tungod sa kamatuoran nga among gihatag ang tanang insidente sa HW ngadto sa mga inhenyero. Oo, posible nga ipakita ang tanan nga mga insidente sa dashboard sa admin. Apan adunay daghan kanila, ug ang administrador nalangkit sa pipila kanila.

Dugang pa, ang inhenyero dili makahimo sa husto nga pag-prioritize, tungod kay wala siyay nahibal-an mahitungod sa katuyoan sa piho nga mga server, mahitungod sa pag-apod-apod sa impormasyon sa mga drive.

Bag-ong pamaagi sa pagpuli

Ang una nga butang nga among gibuhat mao ang pagbalhin sa tanan nga mga insidente sa disk ngadto sa usa ka lahi nga tipo nga "HW disk" ug idugang ang "block device name", "size" ug "disk type" nga mga natad niini aron kini nga impormasyon ma-save sa tiket ug dili. kinahanglan nga makig-chat kanunay.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Miuyon usab kami nga sulod sa gambalay sa usa ka insidente usbon ra namo ang usa ka disk. Gipasimple kaayo niini ang proseso sa automation, pagkolekta sa mga estadistika ug pagtrabaho sa umaabot.

Dugang pa, gidugang ang field nga "responsable administrator". Ang tigdumala sa sistema nga nag-duty awtomatiko nga gipuli didto. Kini sayon ​​​​kaayo, tungod kay karon ang engineer kanunay nga makakita kung kinsa ang responsable. Dili kinahanglan nga moadto sa kalendaryo ug tan-awon. Kini nga natad nga nagpaposible sa pagpakita sa mga tiket sa dashboard sa tagdumala, diin gikinahanglan ang iyang tabang.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Aron ang tanan nga mga partisipante makakuha sa labing taas nga kaayohan gikan sa mga inobasyon, naghimo kami og mga pagsala ug mga dashboard ug gisultihan ang mga lalaki bahin niini. Kung masabtan sa mga tawo ang pagbag-o, dili nila ipahilayo ang ilang kaugalingon gikan niini ingon usa ka butang nga wala kinahanglana. Importante nga mahibal-an sa engineer ang numero sa rack diin nahimutang ang server, ang gidak-on ug matang sa disk. Ang tagdumala kinahanglan, una sa tanan, aron masabtan kung unsang klase nga grupo sa mga server kini, kung unsa ang epekto niini kung mag-ilis sa usa ka disk.

Ang presensya sa mga uma ug ang ilang pagpakita kombenyente, apan wala kini makaluwas kanamo gikan sa panginahanglan sa paggamit sa mga chat. Aron mahimo kini, kinahanglan namon nga usbon ang dagan sa trabaho.

Kini kaniadto sama niini:

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Karon, ingon niini ang pagpadayon sa pagtrabaho sa mga inhenyero kung wala nila kinahanglana ang tabang sa usa ka administrador.

Ang una namong gibuhat mao ang pagpaila ug bag-ong status Susiha. Ang tiket anaa sa kini nga status kung ang engineer wala pa makahukom kung kinahanglan ba niya ang usa ka administrador o dili. Pinaagi sa kini nga kahimtang, mahimo ibalhin sa engineer ang tiket sa tagdumala. Dugang pa, gimarkahan namon ang mga tiket nga adunay kini nga kahimtang kung gikinahanglan ang pag-ilis sa disk, apan ang disk mismo wala sa site. Kini mahitabo sa kaso sa CDN ug hilit nga mga site.

Nagdugang usab kami usa ka status Andam. Ang tiket gibalhin ngadto niini human mapulihan ang disk. Kana mao, ang tanan nahimo na, apan ang HW / SW RAID gi-synchronize sa server. Mahimo kini nga dugay nga panahon.

Kung ang usa ka administrador nalangkit sa trabaho, ang laraw mahimong labi ka komplikado.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Wala sa status Open Ang tiket mahimong hubaron sa usa ka system administrator ug usa ka engineer. Sa status Nagpadayon gitangtang sa administrador ang disk gikan sa rotation aron ang inhenyero mahimo ra nga makuha kini: i-on ang backlight, i-unmount ang disk, ihunong ang mga aplikasyon, depende sa piho nga grupo sa mga server.

Ang tiket unya gihubad ngadto sa Andam nga magbag-o: Kini usa ka signal sa engineer nga ang disk mahimong makuha. Napuno na ang tanang field sa Jira, kabalo ang engineer kung unsa nga klase ug gidak-on sa disk. Kini nga data gisulod bisan sa miaging status awtomatik o sa tagdumala.

Pagkahuman sa pag-ilis sa disk, ang tiket gibalhin sa kahimtang Nausab. Gisusi nga ang husto nga disk gisal-ut, ang partitioning nahimo, ang aplikasyon gilunsad ug ang pipila ka mga buluhaton sa pagbawi sa datos gisugdan. Usab, ang tiket mahimong ibalhin sa status Andam, sa niini nga kaso ang administrador magpabilin nga responsable, tungod kay iyang gisugdan ang disk sa rotation. Ang kompleto nga laraw ingon niini.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Ang pagdugang sa bag-ong mga uma nakapasayon ​​sa among kinabuhi. Ang mga lalaki nagsugod sa pagtrabaho uban sa structured nga impormasyon, kini nahimong tin-aw kon unsa ang kinahanglan nga buhaton ug sa unsa nga yugto. Ang mga prayoridad nahimong labi ka hinungdanon, tungod kay kini gitakda na karon sa tagdumala.

Dili na kinahanglan ug chat. Siyempre, ang administrador makasulat sa engineer "dinhi kinahanglan nimo nga ilisan nga mas paspas", o "gabii na, aduna ka bay panahon sa pag-ilis niini?". Apan dili na mi mag-communicate adlaw-adlaw sa mga chat niining mga isyuha.

Ang mga disk nagsugod sa pagbag-o sa mga batch. Kung ang administrador moabut sa pagtrabaho sa usa ka gamay nga sayo, siya adunay libre nga oras, ug wala pa mahitabo, mahimo niyang maandam ang daghang mga server alang sa pag-ilis: pun-on ang mga uma, kuhaa ang mga disk gikan sa rotation ug ibalhin ang buluhaton sa usa ka engineer. Ang usa ka inhenyero moabut sa sentro sa datos sa ulahi, nakita ang buluhaton, gikuha ang kinahanglan nga mga drive gikan sa bodega ug gibag-o dayon kini. Ingon usa ka sangputanan, ang rate sa pagpuli mitaas.

Nakat-unan nga kasinatian sa paghimo sa Workflow

  • Kung magtukod usa ka pamaagi, kinahanglan nimo nga mangolekta og kasayuran gikan sa lainlaing mga gigikanan.
    Ang pipila sa among mga administrador wala mahibal-an nga ang engineer nag-ilis sa mga disk sa iyang kaugalingon. Ang ubang mga tawo naghunahuna nga ang MD RAID gipadayon sa pag-sync sa mga inhenyero, bisan kung ang uban kanila wala gani maka-access niini. Gibuhat kini sa pipila ka nanguna nga mga inhenyero, apan dili kanunay, tungod kay ang proseso wala gihulagway bisan diin.
  • Ang pamaagi kinahanglan nga yano ug masabtan.
    Lisud alang sa usa ka tawo nga magpadayon sa daghang mga lakang sa iyang ulo. Ang labing importante nga silingan nga mga status sa Jira kinahanglan ibutang sa main screen. Mahimo nimong ilisan ang ngalan niini, pananglitan, Sa pag-uswag gitawag namon nga Andam nga magbag-o. Ug ang nahabilin nga mga status mahimong itago sa drop-down menu aron dili kini makadaot sa mata. Apan mas maayo nga dili limitahan ang mga tawo, aron mahatagan sila og higayon sa paghimo sa transisyon.
    Ipasabot ang bili sa kabag-ohan. Kung masabtan sa mga tawo, mas maayo nga dawaton nila ang bag-ong pamaagi. Importante kaayo alang kanamo nga ang mga tawo dili mag-klik sa tibuok proseso, apan mosunod niini. Dayon nagtukod kami niini nga automation.
  • Paghulat, analisa, sabta.
    Nagkinahanglan kami og mga usa ka bulan sa pagtukod sa pamaagi, teknikal nga pagpatuman, mga miting ug mga diskusyon. Ug alang sa pagpatuman - labaw pa sa tulo ka bulan. Nakita nako kung giunsa ang mga tawo hinay nga nagsugod sa paggamit sa kabag-ohan. Adunay daghang negatibo sa sayong mga yugto. Apan kini hingpit nga independente sa pamaagi mismo, ang teknikal nga pagpatuman niini. Pananglitan, ang usa ka administrador migamit dili Jira, apan usa ka Jira plugin sa Confluence, ug ang pipila ka mga butang wala magamit kaniya. Gipakita namo kaniya si Jira, ang admin nagdugang sa pagka-produktibo sa kinatibuk-ang mga buluhaton ug sa mga pagpuli sa disk.

Automation sa pagpuli sa disk

Giduol namon ang automation sa pag-ilis sa mga disk sa daghang beses. Naa na kami mga pag-uswag, mga script, apan silang tanan nagtrabaho bisan sa interactive o manual mode, kinahanglan nila ang paglansad. Ug pagkahuman lamang sa pagpaila sa bag-ong pamaagi, nahibal-an namon nga kini gyud ang among gikinahanglan.

Tungod kay karon ang proseso sa pag-ilis gibahin sa mga yugto, ang matag usa adunay usa ka tigpatuman ug usa ka lista sa mga aksyon, mahimo naton nga mahimo ang automation sa mga yugto, ug dili tanan sa usa ka higayon. Pananglitan, ang pinakasimple nga yugto - Andam (pagsusi sa RAID / pag-synchronize sa data) dali nga matugyan sa usa ka bot. Sa diha nga ang bot makakat-on og gamay, mahimo nimo kini hatagan og mas responsable nga buluhaton - pagbutang sa disk ngadto sa rotation, ug uban pa.

I-setup ang Zoo

Sa dili pa maghisgot bahin sa bot, magsuroy-suroy ta sa among installation zoo. Una sa tanan, kini tungod sa kadako sa among imprastraktura. Ikaduha, alang sa matag serbisyo gisulayan namon nga pilion ang kamalaumon nga pagsumpo sa hardware. Kita adunay mga 20 ka modelo sa hardware RAID, nag-una LSI ug Adaptec, apan adunay usab HP ug DELL sa lain-laing mga bersyon. Ang matag RAID controller adunay kaugalingong management utility. Ang hugpong sa mga sugo ug ang ilang output mahimong magkalahi gikan sa bersyon ngadto sa bersyon alang sa matag RAID controller. Kung wala gigamit ang HW-RAID, mahimong adunay mdraid.

Gihimo namo ang halos tanang bag-ong mga instalasyon nga walay disk redundancy. Kami naningkamot sa paghunong sa paggamit sa hardware ug software nga mga RAID, samtang among gi-back up ang among mga sistema sa lebel sa mga sentro sa datos, dili mga server. Apan siyempre adunay daghang mga legacy server nga kinahanglan nga mapadayon.

Sa usa ka dapit ang mga disk sa RAID controllers gilabay sa hilaw nga mga himan, sa usa ka dapit nga gigamit ang mga JBOD. Adunay mga pag-configure nga adunay usa ka disk sa sistema sa server, ug kung kinahanglan kini ilisan, kinahanglan nimo nga i-roll pag-usab ang server nga adunay pag-install sa OS ug mga aplikasyon, ug parehas nga mga bersyon, dayon idugang ang mga file sa pagsumpo, pagdagan ang mga aplikasyon. Adunay usab daghang mga grupo sa server diin ang redundancy gihimo dili sa lebel sa subsystem sa disk, apan direkta sa mga aplikasyon mismo.

Sa kinatibuk-an, kami adunay labaw sa 400 nga talagsaon nga mga grupo sa server nga nagdagan sa mga 100 nga lainlaing mga aplikasyon. Aron matabonan ang ingon ka daghan nga mga kapilian, nanginahanglan kami usa ka bahin nga dato nga himan sa automation. Mas maayo nga adunay usa ka yano nga DSL, aron dili lamang ang nagsulat niini ang makasuporta niini.

Gipili namo ang Ansible tungod kay kini walay ahente: dili kinahanglan nga andamon ang imprastraktura, usa ka dali nga pagsugod. Dugang pa, kini gisulat sa Python, nga gidawat ingon nga usa ka sumbanan sa team.

General scheme

Atong tan-awon ang kinatibuk-ang laraw sa automation gamit ang pananglitan sa usa ka insidente. Namatikdan ni Zabbix nga napakyas ang sdb disk, nagdilaab ang gatilyo, ug gihimo ang usa ka tiket sa Jira. Gitan-aw kini sa administrador, nakaamgo nga dili kini usa ka duplicate ug dili usa ka bakak nga positibo, nga mao, kinahanglan nga usbon ang disk, ug ibalhin ang tiket sa Nagpadayon.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Ang DiskoBot nga aplikasyon, nga gisulat sa Python, matag karon ug unya nag-poll sa Jira alang sa bag-ong mga tiket. Kini nakamatikod nga ang usa ka bag-ong In progress nga tiket nagpakita, ang katugbang nga hilo gi-trigger, nga naglansad sa playbook sa Ansible (kini gibuhat alang sa matag status sa Jira). Sa kini nga kaso, ang Prepare2change gipadagan.

Ansible moadto sa host, tangtangon ang disk gikan sa rotation ug i-report ang status sa aplikasyon pinaagi sa Callbacks.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Base sa mga resulta, ang bot awtomatik nga nag-ilis sa tiket ngadto sa Andam nga usbon. Ang inhenyero nakadawat usa ka pahibalo ug moadto aron usbon ang disk, pagkahuman gibalhin niya ang tiket sa Nabag-o.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Sumala sa laraw sa ibabaw, ang tiket mobalik sa bot, nga maglansad sa lain nga playbook, moadto sa host ug ibutang ang disk sa rotation. Gisirado sa bot ang tiket. Hooray!

Pag-automate sa Pagpuli sa Disk nga adunay Ansible
Karon maghisgot kita bahin sa pipila ka mga sangkap sa sistema.

Diskobot

Kini nga aplikasyon gisulat sa Python. Nagpili kini og mga tiket gikan sa Jira sumala sa JQL. Depende sa kahimtang sa tiket, ang naulahi makaadto sa katugbang nga handler, nga sa baylo maglansad sa Ansible playbook nga katumbas sa kahimtang.

Ang JQL ug mga agwat sa botohan gihubit sa file sa pagsumpo sa aplikasyon.

jira_states:
  investigate:
    jql: '… status = Open and "Disk Size" is EMPTY'
    interval: 180

  inprogress:
    jql: '…  and "Disk Size" is not EMPTY and "Device Name" is not EMPTY'
 
  ready:
    jql: '… and (labels not in ("dbot_ignore") or labels is EMPTY)'
    interval: 7200

Pananglitan, taliwala sa mga tiket sa kahimtang sa Pag-uswag, kadto lamang adunay gidak-on sa Disk ug mga natad sa ngalan sa Device nga napuno ang gipili. Ang ngalan sa device mao ang ngalan sa block device nga gikinahanglan aron ipatuman ang playbook. Ang gidak-on sa disk gikinahanglan aron mahibal-an sa engineer kung unsa nga gidak-on sa disk ang gikinahanglan.

Ug taliwala sa mga tiket nga adunay kahimtang sa Andam, ang mga tiket nga adunay label nga dbot_ignore gisala. Pinaagi sa dalan, gigamit namon ang mga label sa Jira alang sa ingon nga pagsala, ug alang sa pagmarka sa mga doble nga tiket, ug pagkolekta sa mga estadistika.

Kung adunay kapakyasan sa playbook, gi-assign ni Jira ang dbot_failed label aron kini mahan-ay sa ulahi.

Interaksyon sa Ansible

Ang aplikasyon nakig-uban sa Ansible pinaagi sa Ansible nga Python API. Sa playbook_executor gipasa namo ang usa ka filename ug usa ka set sa mga variable. Kini nagtugot kanimo sa pagtipig sa Ansible nga proyekto sa porma sa ordinaryo nga yml files, ug dili ihulagway kini sa Python code.

Usab, ang ngalan sa block device, ang status sa ticket, ingon man ang callback_url, diin ang issue key kay hardcoded, gipasa ngadto sa Ansible pinaagi sa *extra_vars* - gigamit kini para sa callback sa HTTP.

Alang sa matag run, usa ka temporaryo nga imbentaryo ang gihimo, nga gilangkuban sa usa ka host ug ang grupo nga kini nga host nahisakop, aron ang mga group_vars magamit.

Ania ang usa ka pananglitan sa usa ka buluhaton nga nagpatuman sa usa ka HTTP callback.

Nakuha namo ang resulta sa pagpatuman sa playbook gamit ang (mga) callaback. Sila adunay duha ka matang:

  • Magamit nga callback plugin, naghatag kini og datos sa mga resulta sa pagpatuman sa playbook. Gihubit niini ang mga buluhaton nga gilunsad, nahuman nga malampuson o wala magmalampuson. Kini nga callback gitawag kung ang playbook nahuman na sa pagdula.
  • HTTP callback aron makakuha og impormasyon samtang nagdula ang playbook. Sa Ansible nga buluhaton, naghimo kami usa ka hangyo sa POST / GET sa kilid sa among aplikasyon.

Pinaagi sa HTTP callback(s), ang mga variable gipasa nga gihubit sa panahon sa pagpatuman sa playbook ug nga gusto namong i-save ug gamiton sa sunod nga mga run. Gisulat namon kini nga datos sa sqlite.

Usab pinaagi sa HTTP callback nagbilin kami og mga komentaryo ug giusab ang status sa tiket.

HTTP callback

# Make callback to Diskobot App
# Variables:
#    callback_post_body: # A dict with follow keys. All keys are optional
#       msg: If exist it would be posted to Jira as comment
#       data: If exist it would be saved in Incident.variables
#       desire_state: Set desire_state for incident
#       status: If exist Proceed issue to that status

  - name: Callback to Diskobot app (jira comment/status)
    uri:
      url: "{{ callback_url }}/{{ devname }}"
      user: "{{ diskobot_user }}"
      password: "{{ diskobot_pass }}"
      force_basic_auth: True
      method: POST
      body: "{{ callback_post_body | to_json }}"
      body_format: json
    delegate_to: 127.0.0.1

Sama sa daghang mga buluhaton sa parehas nga tipo, gibalhin namon kini sa usa ka lahi nga sagad nga file ug gi-on kini kung kinahanglan, aron dili kini masubli kanunay sa mga playbook. Ang callback_ url makita dinhi, diin ang isyu nga yawe ug host ngalan gipanalipdan. Kung gihimo ni Ansible kini nga hangyo sa POST, ang bot nakasabut nga kini moabut ingon bahin sa ingon ug ingon nga insidente.

Ug ania ang usa ka pananglitan gikan sa usa ka playbook diin among gipagawas ang usa ka disc gikan sa usa ka aparato sa MD:

  # Save mdadm configuration
  - include: common/callback.yml
    vars:
      callback_post_body:
        status: 'Ready to change'
        msg: "Removed disk from mdraid {{ mdadm_remove_disk.msg | comment_jira }}"
        data:
          mdadm_data: "{{ mdadm_remove_disk.removed }}"
          parted_info: "{{ parted_info | default() }}"
    when:
      - mdadm_remove_disk | changed
      - mdadm_remove_disk.removed

Kini nga buluhaton nagbag-o sa kahimtang sa tiket sa Jira ngadto sa "Andam nga usbon" ug nagdugang usa ka komento. Ang variable nga mdam_data adunay usab usa ka lista sa mga aparato nga md diin gikuha ang disk, ug ang parted_info adunay usa ka partition dump gikan sa gibahin.

Kung ang inhenyero magsulud sa usa ka bag-ong disk, magamit namon kini nga mga variable aron mapasig-uli ang partition dump, ingon man makuha ang disk sa mga aparato nga md diin kini gikuha.

Mahimong check mode

Ang pag-on sa automation makahadlok. Busa, nakahukom kami sa pagpadagan sa tanang playbook sa mode
dry run, diin ang Ansible wala magbuhat sa bisan unsang mga aksyon sa mga server, apan gisundog lang kini.

Ang ingon nga paglansad gipadagan pinaagi sa usa ka bulag nga module sa callback, ug ang sangputanan sa pagpatuman sa playbook gitipig sa Jira ingon usa ka komento.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible

Una, gitugotan niini ang pag-validate sa trabaho sa bot ug mga playbook. Ikaduha, gipadako niini ang pagsalig sa mga administrador sa bot.

Sa dihang gipasa namo ang validation ug nakaamgo nga posible nga modagan ang Ansible dili lamang sa dry run mode, naghimo kami og Run Diskobot nga buton sa Jira aron sa pagpadagan sa samang playbook nga adunay parehas nga mga variable sa samang host, apan sa normal nga mode.

Usab, ang buton gigamit aron ma-restart ang playbook kung kini nahagsa.

Istruktura sa mga Playbook

Nahisgotan na nako nga depende sa kahimtang sa tiket sa Jira, ang bot naglansad sa lainlaing mga playbook.

Una, mas sayon ​​ang pag-organisar sa entrada.
Ikaduha, sa pipila ka mga kaso kini gikinahanglan lamang.

Pananglitan, kung gipulihan ang system disk, kinahanglan una nimo nga moadto sa sistema sa pag-deploy, paghimo usa ka buluhaton, ug pagkahuman sa husto nga pag-deploy, magamit ang server pinaagi sa ssh, ug mahimo nimong i-roll ang aplikasyon niini. Kung buhaton namo kining tanan sa usa ka playbook, dili kini mahimo sa Ansible tungod sa dili magamit sa host.

Gigamit namo ang mga tahas nga Ansible para sa matag grupo sa mga server. Dinhi imong makita kung giunsa ang (mga) playbook giorganisar sa usa niini.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible

Kombenyente kini, tungod kay klaro dayon kung diin nahimutang ang mga buluhaton. Sa main.yml, nga mao ang input alang sa Ansible nga papel, mahimo ra naton ilakip ang kahimtang sa tiket, o mga kinatibuk-ang buluhaton nga kinahanglan alang sa tanan, pananglitan, pagpasa sa pag-ila o pagkuha usa ka timaan.

Imbestigasyon.yml

Gilusad alang sa mga tiket sa Investigation ug Open statuses. Ang labing importante nga butang alang niini nga playbook mao ang ngalan sa block device. Kini nga impormasyon dili kanunay anaa.

Aron makuha kini, among analisahon ang Jira summary, ang kataposang bili gikan sa Zabbix trigger. Kini mahimong adunay ngalan sa block device - lucky. Ug kini mahimong adunay usa ka mount point - unya kinahanglan ka nga moadto sa server, pag-parse ug pagkalkulo sa gikinahanglan nga disk. Usab, ang gatilyo makapadala ug scsi address o uban pang impormasyon. Apan mahitabo usab nga walay mga timailhan, ug kinahanglan nimo nga analisahon.

Human mahibal-an ang ngalan sa block device, mangolekta kami og impormasyon mahitungod sa matang ug gidak-on sa disk gikan niini aron pun-on ang mga field sa Jira. Gitangtang usab namo ang impormasyon bahin sa vendor, modelo, firmware, ID, SMART, ug i-paste kining tanan ngadto sa komento sa tiket sa Jira. Ang administrador ug inhenyero dili na kinahanglan pangitaon kini nga datos. πŸ™‚

Pag-automate sa Pagpuli sa Disk nga adunay Ansible

prepare2change.yml

Pagmaneho gikan sa rotation, pag-andam alang sa pagpuli. Ang labing lisud, responsable nga yugto. Dinhi mahimo nimong hunongon ang aplikasyon kung dili kini mahunong. O kuhaa ang usa ka disk nga kulang sa mga replika, ug sa ingon adunay epekto sa mga tiggamit, nawala ang pipila nga mga datos. Dinhi kami adunay daghang mga tseke ug mga pahibalo sa chat.

Sa pinakasimple nga kaso, naghisgot kami mahitungod sa pagtangtang sa usa ka disk gikan sa usa ka HW/MD RAID.

Sa labi ka komplikado nga mga sitwasyon (sa among mga sistema sa pagtipig), kung ang pag-backup nahimo sa lebel sa aplikasyon, kinahanglan nimo nga moadto sa aplikasyon pinaagi sa API, ireport ang pag-ejection sa disk, pag-deactivate kini ug pagsugod sa pagpasig-uli.

Migrate na mi karon sa masse ang panganod, ug kung ang server madag-um, nan ang Diskobot nag-access sa cloud API, nag-ingon nga kini magtrabaho uban niini nga minion - ang server diin ang mga sudlanan nagdagan - ug nangutana "paglalin sa tanan nga mga sudlanan gikan niini nga minion". Ug sa samang higayon i-on ang backlight sa disk, aron makita dayon sa engineer kung hain ang kinahanglan nga ibira.

nausab.yml

Human sa pag-ilis sa usa ka disk, una natong susihon ang pagkaanaa niini.

Ang mga inhenyero dili kanunay mag-install ug bag-ong mga disk, mao nga gidugang namon ang usa ka tseke alang sa mga kantidad sa SMART nga among nalipay.

Unsa nga mga kinaiya ang atong gitan-awGi-relocate nga mga Sektor Ihap (5) < 100
Kasamtangang Naghulat nga Ihap sa Sektor (107) == 0

Kung ang drive mapakyas sa pagsulay, ang engineer gisultihan sa pag-ilis pag-usab. Kung ang tanan naa sa kahusay, ang backlight mapalong, ang mga marka gipadapat ug ang disk gibutang sa rotation.

andam.yml

Ang pinakasimple nga kaso: pagsusi sa pag-synchronize sa HW / SW raid o pagtapos sa data synchronization sa aplikasyon.

Mga API sa aplikasyon

Gihisgotan nako sa makadaghang higayon nga kasagaran ang bot maka-access sa application API. Siyempre, dili tanan nga mga aplikasyon adunay kinahanglan nga mga pamaagi, mao nga kini kinahanglan nga mahuman. Ania ang labing hinungdanon nga mga pamaagi nga among gigamit:

  • kahimtang. Ang kahimtang sa usa ka cluster o disk aron makita kung posible ba nga magtrabaho uban niini;
  • pagsugod/paghunong. Disk activation-deactivation;
  • Paglalin/pag-uli. Paglalin ug pagbawi sa datos sa panahon ug pagkahuman sa pagpuli.

Gihatag nga kasinatian ni Ansible

Ganahan kaayo ko sa Ansible. Apan kasagaran, sa dihang motan-aw ko sa lain-laing open source nga mga proyekto ug tan-awon kon giunsa pagsulat sa mga tawo ang mga playbook, medyo nahadlok ko. Ang komplikado nga lohikal nga interweaving kung kanus-a / loop, kakulang sa pagka-flexible ug pagka-idempotency tungod sa kanunay nga paggamit sa shell / command.

Nakahukom kami nga pasimplehon ang tanan kutob sa mahimo, pagpahimulos sa kaayohan sa Ansible - modularity. Sa labing kataas nga lebel mao ang mga playbook, mahimo silang isulat sa bisan kinsa nga tagdumala, tig-develop sa ikatulo nga partido nga nahibal-an gamay bahin sa Ansible.

- name: Blink disk
  become: True
  register: locate_action
  disk_locate:
      locate: '{{ locate }}'
      devname: '{{ devname }}'
      ids: '{{ locate_ids | default(pd_id) | default(omit) }}'

Kung ang pipila ka lohika lisud ipatuman sa mga playbook, among ibalhin kini sa usa ka Ansible module o filter. Ang mga script mahimong isulat sa Python o bisan unsang ubang pinulongan.

Sayon sila ug dali sa pagsulat. Pananglitan, ang disk illumination module nga gipakita sa ibabaw adunay 265 ka linya.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible

Sa ubos nga lebel mao ang librarya. Alang sa kini nga proyekto, nagsulat kami usa ka bulag nga aplikasyon, usa ka matang sa abstraction sa mga RAID sa hardware ug software nga naghimo sa katugbang nga mga hangyo.

Pag-automate sa Pagpuli sa Disk nga adunay Ansible

Ang pinakadako nga kalig-on sa Ansible mao ang kayano ug sayon ​​sabton nga mga playbook. Sa akong hunahuna kinahanglan nimo nga gamiton kini ug dili makamugna og makalilisang nga yaml nga mga file ug daghang mga kondisyon, shell code ug mga galong.

Kung gusto nimong sublion ang among kasinatian sa Ansible API, hinumdomi ang duha ka butang:

  • Ang Playbook_executor ug playbook sa kinatibuk-an dili mapasa ug timeout. Adunay usa ka timeout sa ssh session, apan walay timeout sa playbook. Kung gisulayan namon nga i-unmount ang usa ka disk nga wala na sa sistema, ang playbook modagan hangtod sa hangtod, mao nga kinahanglan namon nga ibalot ang paglansad niini sa usa ka lahi nga wrapper ug patyon kini sa oras.
  • Ansible nagtrabaho base sa mga proseso sa fork, mao nga ang API niini dili luwas sa thread. Gipadagan namo ang tanan namong playbook sa usa ka hilo.

Ingon usa ka sangputanan, nahimo namon nga awtomatiko ang pag-ilis sa mga 80% sa mga disk. Sa kinatibuk-an, ang kapuli nga rate midoble. Karon, ang tagdumala nagtan-aw lamang sa insidente ug nagdesisyon kung usbon ang disk o dili, ug dayon maghimo usa ka pag-klik.

Apan karon nagsugod na kami sa pagdagan sa lain nga problema: pipila ka mga bag-ong admin wala mahibal-an kung giunsa ang pagbag-o sa mga drive. πŸ™‚

Source: www.habr.com

Idugang sa usa ka comment