Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Սա ելույթի սղագրությունն է DevopsConf 2019-10-01 и SPbLUG 2019-09-25.

Սա մի նախագծի պատմություն է, որն օգտագործում էր ինքնուրույն գրված կոնֆիգուրացիայի կառավարման համակարգ, և ինչու է Ansible տեղափոխությունը տևել 18 ամիս:

Օր թիվ -ХХХ: Նախքան սկիզբը

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Սկզբում ենթակառուցվածքը բաղկացած էր Hyper-V-ով աշխատող բազմաթիվ առանձին հյուրընկալողներից: Վիրտուալ մեքենայի ստեղծումը պահանջում էր բազմաթիվ քայլեր՝ սկավառակների ճիշտ տեղում տեղադրում, DNS գրանցում, DHCP-ի ամրագրում, VM կոնֆիգուրացիան git պահոցում տեղադրում: Այս գործընթացը մասամբ մեքենայացված էր, բայց, օրինակ, VM-ները բաժանվում էին հյուրընկալողների միջև ձեռքով: Բայց, օրինակ, մշակողները կարող են ուղղել VM-ի կոնֆիգուրացիան git-ում և կիրառել այն՝ վերագործարկելով VM-ը:

Պատվերով կազմաձևման կառավարման լուծում

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Նախնական գաղափարը, ես կասկածում եմ, ստեղծվել է որպես IaC. շատ քաղաքացիություն չունեցող VM-ներ, որոնք վերագործարկվելիս զրոյականացնում են իրենց վիճակը: Ի՞նչ էր VM-ի կազմաձևման կառավարումը: Սխեմատիկորեն պարզ է թվում.

  1. VM-ի համար ստեղծվել է ստատիկ MAC:
  2. VM-ին միացված են CoreOS-ով ISO և boot disk:
  3. CoreOS-ը գործարկում է հարմարեցման սկրիպտը՝ ներբեռնելով այն WEB սերվերից՝ հիմնվելով իր IP-ի վրա:
  4. Սցենարը ներբեռնում է VM-ի կոնֆիգուրացիան SCP-ի միջոցով՝ հիմնված IP հասցեի վրա:
  5. Գործարկվել են systemd միավոր ֆայլերի ոտնաթաթը և bash սկրիպտների ոտնաթաթը:

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Այս լուծումն ուներ բազմաթիվ ակնհայտ խնդիրներ.

  1. CoreOS ISO-ն հնացել է:
  2. Բազմաթիվ բարդ ավտոմատացված գործողություններ և մոգություն VM-ներ տեղափոխելիս/ստեղծելիս:
  3. Թարմացման հետ կապված դժվարություններ և երբ անհրաժեշտ է ծրագրային ապահովման որոշակի տարբերակ: Նույնիսկ ավելի զվարճալի միջուկային մոդուլներով:
  4. VM-ները այդպես էլ ձեռք չեն բերվել առանց տվյալների, այսինքն. VM-ները հայտնվեցին սկավառակով, որի վրա տեղադրված էին լրացուցիչ օգտվողի տվյալները:
  5. Ինչ-որ մեկը անընդհատ խեղաթյուրում էր համակարգային միավորների կախվածությունը, և CoreOS-ը սառչում էր վերաբեռնման ժամանակ: Դժվար էր դա հասկանալ CoreOS-ում առկա գործիքների միջոցով:
  6. Գաղտնիքների կառավարում.
  7. ԿՄ չի եղել։ CoreOS-ի համար կային bash և YML կազմաձևեր:

VM-ի կոնֆիգուրացիան կիրառելու համար դուք պետք է վերաբեռնեք այն, բայց այն կարող է չվերագործարկվել: Թվում է, թե ակնհայտ խնդիր է, բայց մշտական ​​սկավառակներ չկան. տեղեկամատյանները փրկելու տեղ չկա: Լավ, լավ, փորձենք ավելացնել միջուկի բեռնման տարբերակը, որպեսզի տեղեկամատյանները ուղարկվեն։ Բայց ոչ, որքան բարդ է այդ ամենը:

Օր թիվ 0. Ճանաչեք խնդիրը

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Դա զարգացման սովորական ենթակառուցվածքն էր՝ ջենկիններ, թեստային միջավայրեր, մոնիտորինգ, ռեեստր: CoreOS-ը նախատեսված էր k8s կլաստերների հոսթինգի համար, այսինքն. խնդիրն այն էր, թե ինչպես է օգտագործվել CoreOS-ը: Առաջին քայլը կույտի ընտրությունն էր: Մենք որոշեցինք.

  1. CentOS որպես բազային բաշխում, քանի որ Սա արտադրական միջավայրերին ամենամոտ բաշխումն է:
  2. Հղիություն կոնֆիգուրացիայի կառավարման համար, քանի որ դրա վերաբերյալ ծավալուն փորձաքննություն է եղել։
  3. Jenkins որպես գործող գործընթացների ավտոմատացման շրջանակ, քանի որ այն արդեն ակտիվորեն օգտագործվել է զարգացման գործընթացների համար
  4. Hyper-V- ը որպես վիրտուալացման հարթակ: Կան մի շարք պատճառներ, որոնք դուրս են գալիս պատմության շրջանակներից, բայց մի խոսքով, մենք չենք կարող օգտագործել ամպերը, մենք պետք է օգտագործենք մեր սեփական սարքավորումը:

Օր թիվ 30. Գոյություն ունեցող պայմանագրերի ամրագրում - Պայմանագրերը որպես օրենսգիրք

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Երբ կույտը պարզ դարձավ, սկսվեցին շարժման նախապատրաստական ​​աշխատանքները: Գոյություն ունեցող պայմանագրերի ամրագրում կոդի ձևով (Համաձայնագրերը որպես օրենսգիրք!). Անցում ձեռքի աշխատանք -> մեքենայացում -> ավտոմատացում.

1. Կարգավորել VM-ները

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Ansible-ն այս հարցում մեծ աշխատանք է կատարում: Մարմնի նվազագույն շարժումներով դուք կարող եք վերահսկել VM կոնֆիգուրացիաները.

  1. Ստեղծեք git պահոց:
  2. Մենք տեղադրում ենք VM-ների ցուցակը գույքագրման մեջ, կոնֆիգուրացիաները՝ խաղային գրքերում և դերերում:
  3. Մենք ստեղծում ենք հատուկ jenkins ստրուկ, որից դուք կարող եք գործարկել Ansible-ը:
  4. Մենք ստեղծում ենք աշխատանք և կարգավորում Jenkins-ը:

Առաջին գործընթացը պատրաստ է։ Պայմանագրերը ամրագրված են։

2. Ստեղծեք նոր VM

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Այստեղ ամեն ինչ այնքան էլ հարմար չէր։ Linux-ից Hyper-V-ում VM-ներ ստեղծելն այնքան էլ հարմար չէ։ Այս գործընթացը մեքենայացնելու փորձերից մեկն էր.

  1. Ansbile-ը միանում է WinRM-ի միջոցով windows հոսթին:
  2. Ansible-ը գործարկում է powershell սկրիպտը:
  3. Powershell script-ը ստեղծում է նոր VM:
  4. Օգտագործելով Hyper-V/ScVMM, հյուրի ՕՀ-ում VM ստեղծելիս, հոսթի անունը կազմաձևվում է:
  5. DHCP վարձակալությունը թարմացնելիս VM-ն ուղարկում է իր հոսթի անունը:
  6. Ստանդարտ ddns և dhcp ինտեգրումը Domain Controller-ի կողմում կարգավորում է DNS գրառումը:
  7. Դուք կարող եք VM ավելացնել ձեր գույքագրմանը և կարգավորել այն Ansible-ի միջոցով:

3. Ստեղծեք VM ձևանմուշ

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Նրանք այստեղ ոչինչ չեն հորինել, նրանք տարան փաթեթավորող:

  1. Ավելացնել փաթեթավորող, kickstart կազմաձևը git պահոցում:
  2. Հատուկ ջենկինսի ստրուկի ստեղծում hyper-v-ի և Packer-ի հետ:
  3. Մենք ստեղծում ենք աշխատանք և կարգավորում Jenkins-ը:

Ինչպես է աշխատում այս հղումը.

  1. Փաքերը ստեղծում է դատարկ VM և վերցնում ISO-ն:
  2. VM boots, Packer-ը մուտքագրում է հրամանը bootloader՝ օգտագործելու մեր kickstart ֆայլը ճկուն սկավառակից կամ http-ից:
  3. Anaconda-ն գործարկվում է մեր կազմաձևով, և ՕՀ-ի նախնական կազմաձևումն ավարտված է:
  4. Փաքերը սպասում է, որ VM-ը հասանելի դառնա:
  5. VM-ի ներսում փաթեթավորողն աշխատում է լոկալ ռեժիմով:
  6. Ansible-ն օգտագործում է ճիշտ նույն դերերը, որոնք աշխատում է #1 քայլում:
  7. Փաքերը արտահանում է VM ձևանմուշը:

Օր թիվ 75. Վերափոխեք համաձայնագիրը առանց խախտելու = Փորձարկում + Փորձնական խոհանոց

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Կոդի մեջ կոնվենցիաների գրանցումը կարող է բավարար չլինել: Ի վերջո, եթե գործընթացի խորքում ուզում ես ինչ-որ բան փոխել, կարող ես ինչ-որ բան կոտրել: Ուստի ենթակառուցվածքի դեպքում ի հայտ է գալիս հենց այս ենթակառուցվածքի փորձարկումը։ Թիմի ներսում գիտելիքները համաժամեցնելու համար մենք սկսեցինք փորձարկել Ansible դերերը: Չեմ խորանա, որովհետև... կա հոդված, որը նկարագրում է ժամանակի իրադարձությունները Փորձեք ինձ, արդյոք կարող եք, թե՞ YML ծրագրավորողները երազում են Ansible-ի փորձարկման մասին:(սփոյլեր սա վերջնական տարբերակը չէր, և ավելի ուշ ամեն ինչ ավելի բարդացավ Ինչպես սկսել Ansible-ի փորձարկումները, մեկ տարում վերամշակել նախագիծը և չխելագարվել).

Օր #130. Միգուցե CentOS+ansible-ն անհրաժեշտ չէ: միգուցե openshift?

Պետք է հասկանանք, որ ենթակառուցվածքների ներդրման գործընթացը միակը չի եղել, եղել են կողմնակի ենթածրագրեր։ Օրինակ՝ մեր հավելվածը openshift-ով գործարկելու հարցում եկավ, և դա հանգեցրեց մեկ շաբաթից ավելի հետազոտությունների Մենք գործարկում ենք հավելվածը Openshift-ով և համեմատում առկա գործիքները ինչը դանդաղեցրեց շարժման գործընթացը: Արդյունքը պարզվեց, որ openshift-ը չի ծածկում բոլոր կարիքները, անհրաժեշտ է իրական սարքավորում կամ գոնե միջուկի հետ խաղալու հնարավորություն:

Օր #170. Openshift-ը հարմար չէ, եկեք հնարավորություն ընձեռենք Windows Azure Pack-ի հետ:

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Hyper-V-ն այնքան էլ բարեկամական չէ, SCVMM-ն այն շատ ավելի լավ չի դարձնում: Բայց կա Windows Azure Pack-ի նման բան, որը հավելում է SCVMM-ին և նմանակում է Azure-ին: Բայց իրականում ապրանքը լքված տեսք ունի. փաստաթղթերը կոտրված են հղումներով և շատ նոսր են: Բայց որպես մեր ամպի կյանքը պարզեցնելու տարբերակների ուսումնասիրության մաս, նրանք նույնպես նայեցին դրան:

Օր #250. Windows Azure փաթեթը այնքան էլ լավ չէ: Մենք մնում ենք SCVMM-ում

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Windows Azure Pack-ը խոստումնալից տեսք ուներ, բայց որոշվեց չմտցնել WAP-ն իր բարդություններով համակարգ՝ հանուն ավելորդ գործառույթների և մնաց SCVMM-ի հետ:

Օր #360. Փղին մաս առ մաս ուտել

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Միայն մեկ տարի անց տեղափոխվելու հարթակը պատրաստ էր, և շարժման գործընթացը սկսվեց։ Այդ նպատակով տեղադրվել է S.M.A.R.T. առաջադրանք. Մենք ստուգեցինք բոլոր VM-ները և սկսեցինք մեկ առ մեկ պարզել կոնֆիգուրացիան, նկարագրել այն Ansible-ում և ծածկել այն թեստերով:

Օր #450. Ինչպիսի՞ համակարգ եք ստացել:

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Գործընթացն ինքնին հետաքրքիր չէ։ Դա սովորական է, կարելի է նշել, որ կոնֆիգուրացիաների մեծ մասը եղել է համեմատաբար պարզ կամ իզոմորֆ, և ըստ Պարետոյի սկզբունքի, VM կոնֆիգուրացիաների 80%-ը պահանջում է ժամանակի 20%-ը: Նույն սկզբունքով ժամանակի 80%-ը ծախսվել է տեղափոխության նախապատրաստման վրա և միայն 20%-ը՝ հենց շարժման վրա:

Օր #540. Եզրափակիչ

Պատասխան. 120 VM կոնֆիգուրացիայի միգրացիա CoreOS-ից CentOS 18 ամսում

Ի՞նչ տեղի ունեցավ 18 ամսում.

  1. Պայմանագրերը դարձան օրենսգիրք.
  2. Ձեռքի աշխատանք -> Մեխանիզացիա -> Ավտոմատ.

Source: www.habr.com

Добавить комментарий