Ke hoʻololi ʻana i ka Disk me Ansible

Ke hoʻololi ʻana i ka Disk me Ansible

Aloha kākou. Ke hana nei au ma ke ʻano he luna ʻōnaehana alakaʻi ma OK a ʻo wau ke kuleana no ka hana paʻa o ka puka. Makemake wau e kamaʻilio e pili ana i ke ʻano o kā mākou kūkulu ʻana i kahi kaʻina no ka hoʻololi ʻana i nā disks, a laila pehea mākou i kāpae ai i ka luna hoʻomalu mai kēia kaʻina hana a hoʻololi iā ia me kahi bot.

He ʻano unuhi kēia ʻatikala nā hana hana ma HighLoad+ 2018

Ke kūkulu ʻana i kahi kaʻina hana hoʻololi disk

ʻO ka mua kekahi mau helu

ʻO OK kahi lawelawe nui i hoʻohana ʻia e nā miliona o ka poʻe. Hāʻawi ʻia ia e kahi 7 tausani mau kikowaena, aia ma 4 mau kikowaena data like ʻole. Aia nā kikowaena ma mua o 70 tausani disks. Inā ʻoe e hoʻopaʻa iā lākou ma luna o kekahi, loaʻa iā ʻoe kahi hale kiaʻi ma mua o 1 km ke kiʻekiʻe.

ʻO nā pahu paʻakikī ka mea kikowaena i hāʻule pinepine. Me ia mau puke, pono mākou e hoʻololi ma kahi o 30 disks i kēlā me kēia pule, a ua lilo kēia kaʻina hana i mea maʻamau ʻoluʻolu ʻole.

Ke hoʻololi ʻana i ka Disk me Ansible

Nā hanana

Ua hoʻolauna kā mākou hui i ka hoʻokele hanana hanana piha. Hoʻopaʻa mākou i kēlā me kēia hanana ma Jira, a laila hoʻoholo a hoʻoponopono. Inā loaʻa ka hopena i nā mea hoʻohana, a laila hui pū mākou a noʻonoʻo e pili ana i ka pane wikiwiki ʻana i ia mau hihia, pehea e hōʻemi ai i ka hopena a, ʻoiaʻiʻo, pehea e pale ai i ka hoʻi hou ʻana.

ʻAʻole ʻokoʻa nā mea mālama mālama. Mālama ʻia ko lākou kūlana e Zabbix. Nānā mākou i nā memo ma Syslog no ke kākau/heluhelu hewa, kālele i ke kūlana o ka HW/SW raids, nānā iā SMART, a helu i ka lole no SSD.

Pehea i hoʻololi ʻia ai nā diski ma mua

Ke hoʻomaka ʻia kahi hana ma Zabbix, hana ʻia kahi hanana ma Jira a hāʻawi ʻia i nā ʻenekini kūpono i nā kikowaena data. Hana mākou i kēia me nā hanana HW a pau, ʻo ia hoʻi, nā mea e koi ana i kekahi hana kino me nā lako i loko o ke kikowaena data.
ʻO ka ʻenekinia kikowaena data he kanaka nāna e hoʻoponopono i nā pilikia e pili ana i ka ʻenehana a nona ke kuleana no ka hoʻokomo, mālama ʻana a me ka wehe ʻana i nā kikowaena. Ma hope o ka loaʻa ʻana o ka tiketi, hoʻomaka ka ʻenekinia e hana. I loko o nā pā diski hoʻololi ʻo ia i nā diski kūʻokoʻa. Akā inā ʻaʻole hiki iā ia ke komo i ka hāmeʻa i koi ʻia, huli ka ʻenekinia i nā luna hoʻomalu o ka ʻōnaehana no ke kōkua. ʻO ka mea mua, pono ʻoe e wehe i ka disk mai ka rotation. No ka hana ʻana i kēia, pono ʻoe e hana i nā hoʻololi e pono ai ma ke kikowaena, hoʻopau i nā noi, a wehe i ka disk.

ʻO ka luna hoʻomalu pūnaewele ke kuleana no ka hana ʻana o ka puka holoʻokoʻa i ka wā o ka hana. Ke noiʻi nei ʻo ia i nā hanana, hana hoʻoponopono, a kōkua i nā mea hoʻomohala e hoʻopau i nā hana liʻiliʻi. ʻAʻole ʻo ia e hana wale me nā ʻōpala paʻakikī.

Ma mua, ua kamaʻilio nā ʻenekini kikowaena data me ka luna hoʻoponopono ma o ke kamaʻilio ʻana. Ua hoʻouna nā ʻenekinia i nā loulou i nā tiketi Jira, ua hahai ka luna hoʻomalu iā lākou, mālama i kahi log o ka hana ma kekahi notepad. Akā ʻaʻole kūpono nā kamaʻilio no ia mau hana: ʻaʻole i hoʻonohonoho ʻia ka ʻike ma laila a nalowale koke. A hiki i ka luna hoʻomalu ke hele wale aku mai ka lolouila a pane ʻole i nā noi no kekahi manawa, ʻoiai ke kū nei ka ʻenekinia ma ke kikowaena me kahi puʻupuʻu o nā disks a kali.

Akā ʻo ka mea ʻino loa, ʻaʻole i ʻike nā luna i ke kiʻi holoʻokoʻa: he aha nā hanana disk i loaʻa, kahi e hiki mai ai kahi pilikia. Ma muli o ka hāʻawi ʻana aku mākou i nā hanana HW āpau i nā ʻenekinia. ʻAe, hiki ke hōʻike i nā hanana āpau ma ka papa kuhikuhi o ka luna hoʻomalu. He nui nae lakou, a ua komo ka luna hooponopono no kekahi o lakou.

Eia kekahi, ʻaʻole hiki i ka ʻenekini ke hoʻonohonoho pololei i nā mea nui, no ka mea ʻaʻole ʻo ia i ʻike i ke kumu o nā kikowaena kikoʻī a i ʻole ka hāʻawi ʻana i ka ʻike ma waena o nā drive.

Kaʻina hana pani hou

ʻO ka mea mua a mākou i hana ai, ʻo ka hoʻoneʻe ʻana i nā hanana disk āpau i kahi ʻano ʻokoʻa "HW disk" a hoʻohui i nā kahua "block device name", "size" a me "disk type" i laila e mālama ʻia kēia ʻike i loko o ka tiketi. ʻaʻole pono e hoʻololi mau i ke kamaʻilio.

Ke hoʻololi ʻana i ka Disk me Ansible
Ua ʻae pū mākou e hoʻololi mākou i hoʻokahi disk. Ua maʻalahi kēia i ke kaʻina hana automation, ka hōʻiliʻili ʻikepili a me ka hana i ka wā e hiki mai ana.

Eia hou, ua hoʻohui mākou i ka "luna hoʻomalu kuleana". Hoʻokomo 'akomi 'ia ka luna hoʻomalu o ka ʻōnaehana ma laila. He mea maʻalahi kēia, no ka mea, ʻike mau ka ʻenekinia i ke kuleana. ʻAʻole pono e hele i ka kalena a huli. ʻO kēia kahua ka mea i hiki ai ke hōʻike i nā tiketi ma ka dashboard o ka luna hoʻomalu e koi ai i kāna kōkua.

Ke hoʻololi ʻana i ka Disk me Ansible
No ka hōʻoia i ka loaʻa ʻana o nā pōmaikaʻi nui loa mai nā mea hou, ua hana mākou i nā kānana a me nā dashboards a haʻi i nā kāne e pili ana iā lākou. Ke hoʻomaopopo ka poʻe i nā loli, ʻaʻole lākou e hoʻokaʻawale iā lākou iho ma ke ʻano he mea pono ʻole. He mea nui i ka ʻenekinia ke ʻike i ka helu rack kahi i loaʻa ai ke kikowaena, ka nui a me ke ʻano o ka disk. Pono ka luna hoʻomalu, ʻo ka mea mua, e hoʻomaopopo i ke ʻano o kēia pūʻulu o nā kikowaena a pehea ka hopena i ka wā e pani ai i kahi disk.

Maikaʻi ka hele ʻana o nā māla a me kā lākou hōʻike, akā ʻaʻole ia i hoʻopakele iā mākou mai ka pono e hoʻohana i nā kamaʻilio. No ka hana ʻana i kēia, pono mākou e hoʻololi i ke kaʻina hana.

Ma mua, penei:

Ke hoʻololi ʻana i ka Disk me Ansible
ʻO kēia ke ʻano o ka hana ʻana o nā ʻenekinia i kēia lā inā ʻaʻole pono lākou i ke kōkua luna.

ʻO ka mea mua a mākou i hana ai, ʻo ia ka hoʻokomo ʻana i kahi kūlana hou Huli. Aia ka tiketi ma kēia kūlana inā ʻaʻole i hoʻoholo ka ʻenekini inā pono ʻo ia i luna hoʻomalu a ʻaʻole paha. Ma o kēia kūlana, hiki i ka ʻenekini ke hoʻoili i ka tiketi i ka luna hoʻomalu. Eia hou, hoʻohana mākou i kēia kūlana e hōʻailona i nā tiketi i ka wā e pono ai ke pani ʻia kahi disk, akā ʻaʻole ʻo ka disk ma ka pūnaewele. Hana kēia i ka hihia o nā CDN a me nā pūnaewele mamao.

Ua hoʻohui pū mākou i ke kūlana makaukau. Hoʻololi ʻia ka tiketi iā ia ma hope o ka hoʻololi ʻana i ka disk. ʻO ia hoʻi, ua hana ʻia nā mea āpau, akā ua hoʻonohonoho ʻia ka HW / SW RAID ma ke kikowaena. Hiki i kēia ke lawe i ka manawa lōʻihi.

Inā hoʻokomo ka luna hoʻomalu i ka hana, lilo ka papahana i mea paʻakikī iki.

Ke hoʻololi ʻana i ka Disk me Ansible
Mai ke kūlana Open Hiki ke unuhi ʻia ka tiketi e ka luna hoʻoponopono a me ka ʻenekinia. Ma ke kūlana Ke holo nei wehe ka luna hoʻomalu i ka diski mai ka hoʻololi ʻana i hiki i ka ʻenekini ke huki wale iā ia: hoʻohuli i ke kukui hope, wehe i ka disk, hoʻopau i nā noi, ma muli o ka pūʻulu kikoʻī o nā kikowaena.

Hoʻoili ʻia ka tiketi i Mākaukau e hoʻololi: He hōʻailona kēia i ka ʻenekinia e hiki ke huki ʻia ka disk. Ua hoʻopiha ʻia nā kahua āpau ma Jira, ʻike ka ʻenekinia i ke ʻano a me ka nui o ka disk. Hoʻokomo ʻia kēia ʻikepili ma ke kūlana mua a i ʻole e ka luna hoʻomalu.

Ma hope o ka hoʻololi ʻana i ka diski, hoʻololi ʻia ke kūlana tiketi i Ua hoʻololi. ʻIke ia ua hoʻokomo ʻia ka disk kūpono, ua hana ʻia ka hoʻokaʻawale ʻana, ua hoʻomaka ʻia ka noi a ua hoʻomaka ʻia kekahi mau hana hoʻihoʻi ʻikepili. Hiki ke hoʻololi ʻia ka tiketi i ke kūlana makaukau, i kēia hihia, e hoʻomau ka luna hoʻomalu i ke kuleana, no ka mea ua hoʻokomo ʻo ia i ka disk i ka rotation. Penei ke kiʻi piha.

Ke hoʻololi ʻana i ka Disk me Ansible
ʻO ka hoʻohui ʻana i nā māla hou ua maʻalahi ko mākou ola. Ua hoʻomaka nā kāne e hana me ka ʻike i hoʻonohonoho ʻia, ua maopopo ka mea e pono ai ke hana a i ka manawa hea. Ua ʻoi aku ka pili o nā mea nui, ʻoiai ua hoʻonohonoho ʻia e ka luna hoʻoponopono.

ʻAʻohe pono o nā kamaʻilio. ʻOiaʻiʻo, hiki i ka luna hoʻomalu ke kākau i ka ʻenekinia "pono ​​​​e hoʻololi wikiwiki ʻia kēia," a i ʻole "ua ahiahi, e loaʻa anei iā ʻoe ka manawa e pani ai?" Akā ʻaʻole mākou e kamaʻilio hou i kēlā me kēia lā i nā kamaʻilio e pili ana i kēia mau pilikia.

Ua hoʻomaka e hoʻololi ʻia nā disks i nā pūʻulu. Inā hele mai ka luna hoʻomalu e hana i kahi kakahiaka nui, loaʻa iā ia ka manawa kūʻokoʻa, a ʻaʻohe mea i hiki mai, hiki iā ia ke hoʻomākaukau i kekahi mau kikowaena no ka hoʻololi ʻana: hoʻopiha i nā māla, wehe i nā disks mai ka rotation a hoʻololi i ka hana i kahi ʻenekinia. Hele mai ka ʻenekinia i ke kikowaena data ma hope liʻiliʻi, ʻike i ka hana, lawe i nā mea pono mai ka hale kūʻai a hoʻololi koke iā lākou. ʻO ka hopena, ua hoʻonui ʻia ka uku hoʻololi.

Nā haʻawina i aʻo ʻia i ke kūkulu ʻana i ka Workflow

  • Ke kūkulu ʻana i kahi kaʻina hana, pono ʻoe e hōʻiliʻili i ka ʻike mai nā kumu like ʻole.
    ʻAʻole ʻike kekahi o kā mākou mau luna hoʻoponopono e hoʻololi ka ʻenekinia i nā disks iā ia iho. Ua manaʻo kekahi poʻe ua mālama ʻia ka MD RAID synchronization e nā ʻenekinia, ʻoiai ʻaʻole hiki i kekahi o lākou ke hana pēlā. Ua hana kekahi poʻe loea alakaʻi i kēia, akā ʻaʻole i nā manawa a pau no ka mea ʻaʻole i wehewehe ʻia ke kaʻina hana ma nā wahi āpau.
  • Pono ke kaʻina hana maʻalahi a hoʻomaopopo.
    He mea paʻakikī i ke kanaka ke mālama i nā ʻanuʻu he nui. Pono e kau ʻia nā statuses pili nui loa ma Jira ma ka pale nui. Hiki iā ʻoe ke hoʻololi i ka inoa iā lākou, no ka laʻana, kāhea mākou I ka holomua Mākaukau e hoʻololi. A hiki ke hūnā ʻia nā kūlana ʻē aʻe ma kahi papa kuhikuhi i lalo i ʻole lākou he maka. Akā,ʻoi aku ka maikaʻiʻaʻole e kaupalena i nā kānaka, e hāʻawi iā lākou i ka manawa e hana ai i ka hoʻololi.
    E wehewehe i ka waiwai o ka hana hou. Ke hoʻomaopopo ka poʻe, ʻoi aku ka ʻae ʻana i ke kaʻina hana hou. He mea koʻikoʻi loa iā mākou ʻaʻole e kaomi ka poʻe i ke kaʻina holoʻokoʻa, akā e hahai. A laila kūkulu mākou i ka automation ma kēia.
  • E kali, e kālailai, e noʻonoʻo.
    Ua lawe mākou ma kahi o hoʻokahi mahina e kūkulu i ke kaʻina hana, ka hoʻokō ʻenehana, nā hālāwai a me nā kūkākūkā. A ʻoi aku ka hoʻokō ʻana ma mua o ʻekolu mahina. Ua ʻike au i ka hoʻomaka ʻana o ka poʻe e hoʻohana i ka hana hou. Nui ka negativity i ka wā mua. Akā, ua kūʻokoʻa loa ia i ke kaʻina hana ponoʻī a me kāna hoʻokō ʻenehana. Eia kekahi laʻana,ʻaʻole i hoʻohana kekahi luna hoʻomalu iā Jira, akāʻo ka Jira plugin i Confluence, aʻaʻole i loaʻa iā ia kekahi mau mea. Ua hōʻike mākou iā Jira, a ua hoʻonui ʻia ka huahana o ka admin no nā hana maʻamau a no ka hoʻololi ʻana i nā disks.

ʻO ka hoʻololi ʻana i ka disk

Ua hoʻokokoke mākou i ka automation o ka hoʻololi disk i nā manawa he nui. Ua loaʻa iā mākou nā hoʻomohala a me nā palapala, akā ua hana lākou a pau ma ka launa pū ʻana a i ʻole ka lima a pono e hoʻokuʻu. A ma hope wale nō o ka hoʻokomo ʻana i ke kaʻina hana hou, ʻike mākou ʻo ia ka mea a mākou e nalowale nei.

No ka mea i kēia manawa ua māhele ʻia kā mākou kaʻina hana i nā pae, aia kēlā me kēia mea i koho ʻia a me kahi papa inoa o nā hana, hiki iā mākou ke hana i ka automation i nā pae, ʻaʻole i ka manawa hoʻokahi. No ka laʻana, ʻo ka pae maʻalahi - Mākaukau (e nānā ana i ka RAID/hoʻonohonoho ʻikepili) hiki ke hāʻawi maʻalahi i kahi bot. Ke aʻo liʻiliʻi ka bot, hiki iā ʻoe ke hāʻawi iā ia i kahi hana koʻikoʻi - hoʻokomo i ka disk i ka rotation, etc.

Hoʻonohonoho Zoo

Ma mua o ko mākou kamaʻilio ʻana e pili ana i ka bot, e hele mākou i kahi huakaʻi pōkole i kā mākou zoo o nā hoʻonohonoho. ʻO ka mea mua, ma muli o ka nui nui o kā mākou ʻoihana. ʻO ka lua, ke hoʻāʻo nei mākou e koho i ka hoʻonohonoho hoʻonohonoho pono pono no kēlā me kēia lawelawe. Loaʻa iā mākou ma kahi o 20 mau hiʻohiʻona RAID lako, ʻo ka hapa nui o LSI a me Adaptec, akā aia pū kekahi HP a me DELL o nā ʻano like ʻole. Loaʻa i kēlā me kēia mea hoʻoponopono RAID kona pono hoʻokele ponoʻī. ʻOkoʻa paha ka hoʻonohonoho o nā kauoha a me ka hoʻopuka ʻana iā lākou mai kēlā me kēia mana no kēlā me kēia mana RAID. Ma kahi i hoʻohana ʻole ʻia ai ka HW-RAID, hiki ke hoʻohana ʻia ka mdraid.

Hana mākou i nā mea hou a pau me ka ʻole o ka hoʻihoʻi disk. Ke ho'āʻo nei mākou e hoʻohana hou i ka lako a me ka lako polokalamu RAID, ʻoiai mākou e hoʻihoʻi i kā mākou mau ʻōnaehana ma ka pae kikowaena data, ʻaʻole nā ​​kikowaena. Akā ʻoiaʻiʻo he nui nā kikowaena hoʻoilina e pono e kākoʻo ʻia.

Hoʻololi ʻia nā disks i nā mea hoʻokele RAID i nā polokalamu maka, kahi i hoʻohana ʻia ai nā JBOD. Aia nā hoʻonohonoho me hoʻokahi disk pūnaewele i loko o ke kikowaena, a inā pono e hoʻololi ʻia, a laila pono ʻoe e hoʻokomo hou i ke kikowaena me ka hoʻokomo ʻana o ka OS a me nā noi, o nā ʻano like, a laila hoʻohui i nā faila hoʻonohonoho, hoʻomaka i nā noi. Nui nō hoʻi nā pūʻulu kikowaena kahi i mālama ʻia ai ke kākoʻo ʻaʻole ma ka pae subsystem disk, akā pololei i nā noi ponoʻī.

Ma ka huina, loaʻa iā mākou ma luna o 400 mau pūʻulu kikowaena kūikawā e holo ana ma kahi o 100 mau noi like ʻole. No ka uhi ʻana i ka nui o nā koho, pono mākou i kahi mea hana automation multifunctional. ʻOi aku ka maikaʻi me kahi DSL maʻalahi, i hiki ʻole i ka mea nāna i kākau ke kākoʻo iā ia.

Ua koho mākou iā Ansible no ka mea ʻaʻohe mea e pono ai: ʻaʻohe pono e hoʻomākaukau i nā ʻōnaehana, kahi hoʻomaka wikiwiki. Eia kekahi, ua kākau ʻia ma Python, i ʻae ʻia ma ke ʻano he maʻamau i loko o ka hui.

Nā kulekele nui

E nānā kākou i ka hoʻolālā automation maʻamau me ka hoʻohana ʻana i hoʻokahi hanana ma ke ʻano he laʻana. ʻIke ʻo Zabbix ua hāʻule ka sdb disk, ua ʻā ke kumu, a ua hana ʻia kahi tiketi ma Jira. Ua nānā ka luna hoʻomalu iā ia, ʻike ʻo ia ʻaʻole ia he kope a ʻaʻole hoʻi he kuhi hewa, ʻo ia hoʻi, pono e hoʻololi ʻia ka disk, a hoʻololi i ka tiketi i In progress.

Ke hoʻololi ʻana i ka Disk me Ansible
ʻO ka palapala noi DiskoBot, i kākau ʻia ma Python, e koho pinepine iā Jira no nā tikiki hou. Ua ʻike ʻia ua puka mai kahi tikiki In progress hou, ua hoʻāla ʻia ka pae pili, e hoʻomaka ana i ka puke pāʻani ma Ansible (hana ʻia kēia no kēlā me kēia kūlana ma Jira). I kēia hihia, hoʻomaka ʻo Prepare2change.

Hoʻouna ʻia ʻo Ansible i ka mea hoʻokipa, wehe i ka disk mai ka rotation a hōʻike i ke kūlana i ka noi ma o Callbacks.

Ke hoʻololi ʻana i ka Disk me Ansible
Ma muli o nā hopena, hoʻololi koke ka bot i ka tiketi i Mākaukau e hoʻololi. Loaʻa ka ʻenekinia i kahi leka hoʻomaopopo a hele e hoʻololi i ka disk, a laila hoʻololi ʻo ia i ka tiketi iā Changed.

Ke hoʻololi ʻana i ka Disk me Ansible
E like me ka hoʻolālā i hōʻike ʻia ma luna nei, hoʻi ka tiketi i ka bot, ka mea e hoʻokuʻu i kahi puke pāʻani ʻē aʻe, hele i ka mea hoʻokipa a hoʻokomo i ka disk i ka hoʻololi. Hoʻopili ka bot i ka tiketi. Hooray!

Ke hoʻololi ʻana i ka Disk me Ansible
I kēia manawa e kamaʻilio mākou e pili ana i kekahi mau ʻāpana o ka ʻōnaehana.

Diskobot

Ua kākau ʻia kēia noi ma Python. Koho ia i nā tiketi mai Jira e like me JQL. Ma muli o ke kūlana o ka tiketi, hele ka mea hope i ka mea hoʻokele pili, a laila e hoʻokuʻu i ka puke pāʻani Ansible e pili ana i ke kūlana.

Hōʻike ʻia ka JQL a me nā wā koho balota i ka faila hoʻonohonoho noi.

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

No ka laʻana, ma waena o nā tiketi ma ke kūlana Ke holomua nei, koho wale ʻia nā mea me ka nui Disk a me nā kahua inoa Pūnaewele i hoʻopiha ʻia. ʻO ka inoa o ka hāmeʻa ka inoa o ka mea poloka e pono ai e hoʻokō i ka puke pāʻani. Pono ka nui disk i ʻike ka ʻenekinia i ka nui o ka disk e pono ai.

A ma waena o nā tiketi me ke kūlana Mākaukau, ua kānana ʻia nā tiketi me ka lepili dbot_ignore. Ma ke ala, hoʻohana mākou i nā lepili Jira no kēlā kānana a no ka hōʻailona ʻana i nā tiketi pālua a me ka hōʻiliʻili ʻana i nā helu.

Inā hāʻule ka puke pāʻani, hāʻawi ʻo Jira i ka lepili dbot_failed i hiki ke hoʻokaʻawale ʻia ma hope.

Interoperability me Ansible

Kūkākūkā ka palapala noi me Ansible ma o Ansible Python API. No ka playbook_executor ke kau nei mākou i ka inoa faila a me kahi hoʻonohonoho o nā mea hoʻololi. ʻAe kēia iā ʻoe e mālama i ka papahana Ansible ma ke ʻano o nā faila yml maʻamau, ma mua o ka wehewehe ʻana iā ia ma ke code Python.

Ma Ansible hoʻi, ma o *extra_vars*, ka inoa o ka mea poloka, ke kūlana o ka tiketi, a me ka callback_url, aia ke kī hoʻopuka - hoʻohana ʻia ia no ka callback ma HTTP.

No kēlā me kēia hoʻokuʻu ʻana, hana ʻia kahi papa inoa manawaleʻa, aia i hoʻokahi host a me ka hui nona kēia pūʻali, no laila e hoʻohana ʻia nā group_vars.

Eia kahi laʻana o kahi hana e hoʻokō i ka callback HTTP.

Loaʻa iā mākou ka hopena o ka hoʻokō ʻana i nā puke pāʻani me ka hoʻohana ʻana i ka callaback (s). ʻElua mau ʻano:

  • Pākuʻi callback ansible, hāʻawi ia i ka ʻikepili i nā hopena o ka hoʻokō playbook. Hōʻike ia i nā hana i hoʻomaka ʻia, i hoʻopau maikaʻi ʻia a i ʻole kūleʻa ʻole. Kāhea ʻia kēia callback i ka pau ʻana o ka pāʻani ʻana o ka puke pāʻani.
  • HTTP callback e loaʻa ka ʻike i ka wā e pāʻani ana i kahi puke pāʻani. Ma ka hana Ansible, hoʻokō mākou i kahi noi POST/GET i kā mākou noi.

Hoʻoholo ʻia nā mea hoʻololi ma o HTTP callback(s) i wehewehe ʻia i ka wā o ka hoʻokō ʻana i ka puke pāʻani a makemake mākou e mālama a hoʻohana i nā holo ma hope. Kākau mākou i kēia ʻikepili ma sqlite.

Haʻalele mākou i nā manaʻo a hoʻololi i ke kūlana tiketi ma o HTTP callback.

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

E like me nā hana he nui o ka ʻano like, waiho mākou ia i loko o kahi faila maʻamau a hoʻokomo inā pono, i ʻole e hana mau i nā puke pāʻani. Aia kēia me ka callback_ url, aia i loko o ke kī hoʻopuka a me ka inoa hoʻokipa. Ke hoʻokō nei ʻo Ansible i kēia noi POST, hoʻomaopopo ka bot ua hele mai ia ma ke ʻano o ia mea a me kēlā hanana.

A eia kekahi laʻana mai ka playbook, kahi mākou e hoʻopuka ai i kahi disk mai kahi mea 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

Hoʻololi kēia hana i ka tiketi Jira i ke kūlana "Makaukau e hoʻololi" a hoʻohui i kahi manaʻo. Eia kekahi, mālama ka mdam_data variable i kahi papa inoa o nā mea md kahi i wehe ʻia ai ka disk, a mālama ʻo parted_info i kahi hoʻokaʻawale ʻāpana mai ka wehe ʻana.

Ke hoʻokomo ka ʻenekinia i kahi diski hou, hiki iā mākou ke hoʻohana i kēia mau mea hoʻololi e hoʻihoʻi i ka waiho ʻana o ka pā, a me ka hoʻokomo ʻana i ka disk i loko o nā mīkini md kahi i wehe ʻia ai.

ʻO ke ʻano hōʻoia ansible

He mea weliweli ke ho'ā i ka automation. No laila, ua hoʻoholo mākou e holo i nā puke pāʻani āpau i ke ʻano
holo maloo, kahi i hana ʻole ai ʻo Ansible i nā hana ma nā kikowaena, akā e hoʻolike wale iā lākou.

Holo ʻia kēlā hoʻomaka ʻana ma o kahi module callback kaʻawale, a mālama ʻia ka hopena o ka hoʻokō playbook ma Jira ma ke ʻano he manaʻo.

Ke hoʻololi ʻana i ka Disk me Ansible

ʻO ka mea mua, hiki i kēia ke hōʻoia i ka hana o ka bot a me nā puke pāʻani. ʻO ka lua, ua hoʻonui i ka hilinaʻi o nā luna hoʻomalu i ka bot.

I ko mākou hala ʻana i ka hōʻoia a ʻike ʻoe hiki iā ʻoe ke holo iā Ansible ʻaʻole wale ma ke ʻano holo maloʻo, ua hana mākou i kahi pihi Run Diskobot ma Jira e hoʻolauna i ka playbook like me nā ʻano like ʻole ma ka host hoʻokahi, akā ma ke ʻano maʻamau.

Eia kekahi, hoʻohana ʻia ke pihi e hoʻomaka hou i ka puke pāʻani inā hāʻule.

Hoʻolālā puke pāʻani

Ua haʻi mua wau ma muli o ke kūlana o ka tiketi Jira, hoʻomaka ka bot i nā puke pāʻani like ʻole.

ʻO ka mea mua, ʻoi aku ka maʻalahi o ka hoʻonohonoho ʻana i ka puka komo.
ʻO ka lua, i kekahi mau mea he mea pono wale nō.

No ka laʻana, i ka wā e hoʻololi ai i kahi disk system, pono ʻoe e hele mua i ka ʻōnaehana hoʻonohonoho, hana i kahi hana, a ma hope o ka hoʻonohonoho pono ʻana, hiki ke loaʻa ke kikowaena ma o ssh, a hiki iā ʻoe ke ʻōwili i ka noi ma luna. Inā mākou i hana i kēia mau mea a pau i hoʻokahi puke pāʻani, a laila ʻaʻole hiki iā Ansible ke hoʻopau iā ia no ka loaʻa ʻole o ka mea hoʻokipa.

Hoʻohana mākou i nā kuleana Ansible no kēlā me kēia hui o nā kikowaena. Maanei hiki iā ʻoe ke ʻike i ke ʻano o ka hoʻonohonoho ʻana o nā puke pāʻani i kekahi o lākou.

Ke hoʻololi ʻana i ka Disk me Ansible

He mea maʻalahi kēia no ka mea ua maopopo koke i kahi o nā hana. Ma main.yml, ʻo ia ka mea hoʻokomo no ka hana Ansible, hiki iā mākou ke hoʻokomo ma ke kūlana tiketi a i ʻole nā ​​​​hana maʻamau i koi ʻia no kēlā me kēia, no ka laʻana, ka hele ʻana i ka ʻike a i ʻole ka loaʻa ʻana o kahi hōʻailona.

hoʻokolokolo.yml

Holo no nā tikiki ma ke kūlana Investigation and Open. ʻO ka mea nui loa no kēia puke pāʻani ʻo ia ka inoa o ka mea poloka. ʻAʻole loaʻa kēia ʻike i nā manawa a pau.

No ka loaʻa ʻana, ʻike mākou i ka hōʻuluʻulu Jira, ka waiwai hope loa mai ka Zabbix trigger. Aia paha ka inoa o ka mea poloka - laki. A i ʻole he wahi mauna, a laila pono ʻoe e hele i ke kikowaena, e hoʻokaʻawale a helu i ka disk i makemake ʻia. Hiki i ka trigger ke hoʻouna i kahi helu scsi a i ʻole kekahi ʻike ʻē aʻe. Akā, hiki nō hoʻi ʻaʻohe clues, a pono ʻoe e kālailai.

Ma hope o ka ʻike ʻana i ka inoa o ka mea poloka, ʻohi mākou i ka ʻike e pili ana i ke ʻano a me ka nui o ka disk mai ia mea e hoʻopiha ai i nā māla ma Jira. Wehe pū mākou i ka ʻike e pili ana i ka mea kūʻai aku, model, firmware, ID, SMART, a hoʻokomo i kēia mau mea a pau i loko o kahi ʻōlelo i ka tiketi Jira. ʻAʻole pono ka luna hoʻomalu a me ka ʻenekinia e ʻimi i kēia ʻikepili. 🙂

Ke hoʻololi ʻana i ka Disk me Ansible

prepare2change.yml

Wehe i ka diski mai ka hoʻololi ʻana, e hoʻomākaukau ana no ke pani. ʻO ka pae paʻakikī a koʻikoʻi. ʻO kēia kahi e hiki ai iā ʻoe ke hoʻōki i ka noi inā ʻaʻole pono e hoʻōki. A i ʻole e lawe i kahi disk i lawa ʻole nā ​​replicas, a no laila ke hopena i nā mea hoʻohana, e nalowale ana kekahi ʻikepili. Eia mākou ka nui o nā loiloi a me nā leka hoʻomaopopo i ke kamaʻilio.

Ma ka hihia maʻalahi, ke kamaʻilio nei mākou e pili ana i ka wehe ʻana i kahi disk mai kahi HW/MD RAID.

I nā kūlana paʻakikī (i kā mākou ʻōnaehana mālama), i ka wā e hana ʻia ai ke kākoʻo ma ka pae noi, pono ʻoe e hele i ka noi ma o ka API, e hōʻike i ka hopena disk, hoʻopau a hoʻomaka i ka hoʻihoʻi.

Ke neʻe nui nei mākou i kēia manawa ke ao, a inā he kikowaena kapuaʻi ke kikowaena, a laila kāhea ʻo Diskobot i ke ao API, ʻōlelo ʻo ia e hana pū me kēia minion - ke kikowaena e holo ana i nā ipu - a nīnau "e neʻe i nā ipu āpau mai kēia minion." A i ka manawa like, hoʻohuli i ke kukui hope o ka disk i hiki i ka ʻenekini ke ʻike koke i ka mea e pono e huki ʻia.

loli.yml

Ma hope o ka hoʻololi ʻana i kahi disk, nānā mua mākou i kona loaʻa.

ʻAʻole hoʻokomo mau nā ʻenehana i nā drive hou, no laila ua hoʻohui mākou i kahi hōʻoia no nā waiwai SMART e māʻona ai mākou.

He aha nā hiʻohiʻona a mākou e nānā nei?Ka helu o nā ʻāpana i hoʻokaʻawale ʻia (5) < 100
Ka helu o ka ʻāpana e kali nei (107) == 0

Inā hāʻule ka hoʻokele i ka hoʻāʻo, hoʻolaha ʻia ka ʻenekinia e pani hou iā ia. Inā pololei nā mea a pau, pio ke kukui hope, hoʻopili ʻia nā māka a hoʻokomo ʻia ka diski i loko o ka ʻōwili.

mākaukau.yml

ʻO ka hihia maʻalahi: ke nānā ʻana i ka hoʻonohonoho ʻana o HW/SW raid a i ʻole ka hoʻopau ʻana i ka hoʻonohonoho ʻikepili ma ka noi.

API no ka noi

Ua ʻōlelo pinepine au e komo pinepine ka bot i nā API noi. ʻOiaʻiʻo, ʻaʻole i loaʻa i nā noi āpau nā ala kūpono, no laila pono lākou e hoʻololi. Eia nā ala nui loa a mākou e hoʻohana ai:

  • Kūlana. ʻO ke kūlana o kahi pūpū a diski paha e hoʻomaopopo ai inā hiki ke hana pū me ia;
  • Hoʻomaka/kū. Hoʻopau / hoʻopau i ka disk;
  • E neʻe/hoʻihoʻi. Ka neʻe ʻana o ka ʻikepili a me ka hoʻihoʻi ʻana i ka wā a ma hope o ka hoʻololi ʻana.

Nā haʻawina i aʻo ʻia mai Ansible

Aloha au iā Ansible. Akā pinepine, ke nānā au i nā papahana opensource like ʻole a ʻike i ke kākau ʻana o nā kānaka i nā puke pāʻani, makaʻu iki wau. ʻO ka hoʻopili pono ʻana o ka wā/loop, nele o ka maʻalahi a me ka idempotency ma muli o ka hoʻohana pinepine ʻana i ka pūpū/kauoha.

Ua hoʻoholo mākou e maʻalahi i nā mea āpau e like me ka hiki, me ka hoʻohana ʻana i ka pono o Ansible - modularity. Aia ma ka pae kiʻekiʻe loa nā puke pāʻani; hiki ke kākau ʻia e kekahi luna hoʻomalu, mea hoʻomohala ʻaoʻao ʻekolu i ʻike i kahi Ansible liʻiliʻi.

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

Inā paʻakikī kekahi loiloi e hoʻokō i nā puke pāʻani, hoʻoneʻe mākou iā ia i kahi module Ansible a kānana paha. Hiki ke kākau ʻia nā palapala ma Python a i ʻole kekahi ʻōlelo ʻē aʻe.

He maʻalahi lākou a wikiwiki hoʻi e kākau. No ka laʻana, ʻo ka module backlight disk, kahi hiʻohiʻona i hōʻike ʻia ma luna nei, he 265 mau laina.

Ke hoʻololi ʻana i ka Disk me Ansible

Aia ma ka pae haʻahaʻa ka waihona. No kēia papahana, ua kākau mākou i kahi noi ʻokoʻa, kahi ʻano abstraction ma luna o nā lako lako a me nā polokalamu RAID e hana i nā noi pili.

Ke hoʻololi ʻana i ka Disk me Ansible

ʻO ka ikaika nui o Ansible ʻo kona maʻalahi a me nā puke pāʻani maʻalahi. Manaʻo wau pono ʻoe e hoʻohana i kēia a ʻaʻole e hoʻopuka i nā faila yaml weliweli a me ka nui o nā kūlana, code shell a me nā puka lou.

Inā makemake ʻoe e hana hou i kā mākou ʻike me ka Ansible API, e hoʻomanaʻo i ʻelua mau mea:

  • ʻAʻole hiki ke hāʻawi ʻia kahi manawa pau i ka Playbook_executor a me nā puke pāʻani ma ka laulā. Aia kahi manawa hoʻomaha ma ka hālāwai ssh, akā ʻaʻohe manawa pau ma ka papa pāʻani. Inā mākou e hoʻāʻo e wehe i kahi disk i noho hou ʻole i loko o ka ʻōnaehana, e holo mau ka puke pāʻani, no laila pono mākou e hoʻopili i kāna hoʻomaka ʻana i kahi ʻōwili ʻokoʻa a pepehi iā ia me ka manawa pau.
  • Ke holo nei ʻo Ansible ma nā kaʻina hana i kālai ʻia, no laila ʻaʻole palekana kāna API. Holo mākou i kā mākou mau puke pāʻani a pau ma ke kaula hoʻokahi.

ʻO ka hopena, ua hiki iā mākou ke hoʻololi i ka hoʻololi ʻana ma kahi o 80% o nā disks. Ma ke ʻano holoʻokoʻa, ua pāpālua ʻia ka helu hoʻololi. I kēia lā, nānā wale ka luna hoʻomalu i ka hanana a hoʻoholo inā pono e hoʻololi ʻia ka disk a ʻaʻole paha, a laila hana i hoʻokahi kaomi.

Akā i kēia manawa ke hoʻomaka nei mākou e holo i kahi pilikia ʻē aʻe: ʻaʻole ʻike kekahi mau luna hou i ka hoʻololi ʻana i nā drive. 🙂

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka