Habka habka doorsoomayaasha ee macquulka ah

codestyle aan macquul ahayn devops

Haye! Magacaygu waa Denis Kalyuzhny Waxaan u shaqeeyaa sidii injineer ahaan waaxda automation-ka habka horumarinta. Maalin kasta, codsiyada cusub ee dhisma ayaa loo fidiyaa boqolaal adeegayaasha ololaha. Maqaalkan, waxaan kula wadaagayaa waayo-aragnimadayda isticmaalka macquulka ah ujeedooyinkan.

Hagahan waxa uu bixiyaa hab lagu habeeyo doorsoomayaasha marka la dirayo. Hagahan waxa loogu talagalay kuwa hadda ka hor isticmaalay doorarka buugaagtooda ciyaarta oo wax akhriya Hababka ugu Fiicanlaakiin la kulma dhibaatooyin la mid ah:

  • Ka dib markii la helay doorsoome koodka, suurtagal maaha in isla markiiba la fahmo waxa ay mas'uul ka tahay;
  • Waxaa jira door dhowr ah, doorsoomayaashuna waxay u baahan yihiin in lagu xidho hal qiime, laakiin ma shaqaynayso;
  • Ay ku adag tahay inaad dadka kale u sharaxdo sida macquulka doorsoomayaasha buugaagtaada ciyaaruhu u shaqeeyaan

Waxaan la kulannay dhibaatooyinkan mashaariicda shirkaddayada, taas oo keentay in aan u nimid xeerarka habaynta doorsoomayaasha buugaagtayada ciyaarta, kuwaas oo ilaa xad xalliyey dhibaatooyinkan.

Habka habka doorsoomayaasha ee macquulka ah

Kala duwanaanshaha doorarka

Doorku waa Shay Nidaamka Dirista oo gooni ah. Sida shay kasta oo ka mid ah nidaamka, waa inuu lahaadaa interface si uu ula falgalo nidaamka intiisa kale. Doorsoomayaasha doorku waa is dhexgal noocaas ah.

Qaado, tusaale ahaan, doorka api, kaas oo ku rakibaya codsiga Java ee server-ka. Waa maxay doorsoomayaasha ay leedahay?

Habka habka doorsoomayaasha ee macquulka ah

Doorsoomayaasha doorka waxa loo qaybin karaa 2 nooc nooc ahaan:

1. Свойства
    a) независимые от среды
    б) зависимые от среды
2. Связи
    a) слушатели 
    б) запросы внутри системы
    в) запросы в среду

Guryaha kala duwan waa doorsoomayaal qeexaya hab-dhaqanka doorka.

Isbeddelka Weydiinta waa doorsoomayaal qiimahooda loo isticmaalo in lagu tilmaamo kheyraadka ka baxsan doorka.

Dhegaystayaasha kala duwan waa doorsoomayaal qiimahooda loo isticmaalo in lagu sameeyo doorsoomayaasha weydiinta.

Dhanka kale, 1a, 2a, 2b waa doorsoomayaal aan ku xirneyn deegaanka (birta, kheyraadka dibadda, iwm.) waxaana lagu buuxin karaa qiyamka aan caadiga ahayn ee doorka qallafsanaanta. Si kastaba ha ahaatee, doorsoomayaasha sida 1.b iyo 2.c laguma buuxin karo qiyam kale oo aan ahayn 'tusaale', maadaama ay ka beddeli doonaan istaagga oo ay ku xiran yihiin deegaanka.

qaabka code

  • Magaca doorsoomuhu waa inuu ku bilowdaa magaca doorka. Tani waxay sahlaysaa in mustaqbalka la ogaado doorka doorsoomuhu ka yimid iyo waxa uu masuulka ka yahay.
  • Markaad isticmaalayso doorsoomayaasha doorarka, waa inaad hubisaa inaad raacdo mabda'a koobabaynta oo aad isticmaasho doorsoomayaasha lagu qeexay doorka laftiisa ama doorarka uu kan hadda jooga ku xidhan yahay.
  • Ka fogow isticmaalka qaamuusyada doorsoomayaasha. Macquulku kuma ogola inaad si ku habboon u tirtirto qiyamka shakhsi ahaaneed ee qaamuuska.

    Tusaale doorsoome xun:

    myrole_user:
        login: admin
        password: admin

    Halkan, galidu waa doorsoomaha dhexe, furaha sirta ahna waa doorsoomaha ku tiirsan. Laakin
    maadaama lagu daray qaamuus, waa inaad si buuxda u qeexdaa
    Had iyo jeer. Taas oo ah mid aad u dhib badan. Sidan ayaa ka wanaagsan:

    myrole_user_login: admin
    myrole_user_password: admin

Kala beddelashada buugaagta ciyaarta

Marka aan ururinayno buug-ciyaareedka geynta (halkan ka dib waxaa loo tixraacaa buug-ciyaar), waxaanu raacaynaa xeerka ah in la geliyo meel gaar ah. Sida doorarka oo kale: mid kastaa wuxuu ku jiraa kaydkiisa git. Tani waxay kuu ogolaaneysaa inaad ogaato in doorarka iyo buug-ciyaareedka ay yihiin walxo madaxbannaan oo kala duwan oo ka mid ah nidaamka geynta, iyo isbeddelada hal shay waa inaysan saameyn ku yeelan hawlgalka kale. Tan waxaa lagu gaaraa iyada oo la beddelo qiimaha caadiga ah ee doorsoomayaasha.

Marka la ururinayo buug-ciyaareed, si aan u soo koobo, waxa suurtogal ah in la tirtiro qiyamka doorsoomayaasha door ee laba meelood: doorsoomayaasha buugaagta iyo doorsoomayaasha alaabada.

mydeploy                        # Каталог деплоя
├── deploy.yml                  # Плейбук деплоя
├── group_vars                  # Каталог переменных плейбука
│   ├── all.yml                 # Файл для переменных связи всей системы
│   └── myapi.yml               # Файл переменных свойств группы myapi
└── inventories                 #
    └── prod                    # Каталог окружения prod
        ├── prod.ini            # Инвентори файл
        └── group_vars          # Каталог для переменных инвентори
            └── myapi           #
                ├── vars.yml    # Средозависимые переменные группы myapi
                └── vault.yml   # Секреты (всегда средозависимы) *

* - Kala duwanaansho iyo Vaults

Farqiga u dhexeeya ayaa ah in doorsoomayaasha buug-ciyaareedka had iyo jeer la isticmaalo marka la wacayo buugaagta ciyaarta ee ku yaal isla heerkaas. Tani waxay ka dhigan tahay in doorsoomayaashani ay ku fiican yihiin bedelida qiyamka caadiga ah ee doorsoomayaasha aan ku xirneyn deegaanka. Taa beddelkeeda, doorsoomayaasha alaabada waxa kaliya loo isticmaali doonaa deegaan gaar ah, kaas oo ku habboon doorsoomayaal deegaan-gaar ah.

Waxa muhiim ah in la ogaado in doorsoomuhu aanu ku ogolayn in aad dib u qeexdo doorsoomayaasha marka hore doorsoomayaal buug-ciyaareed ka dibna si gaar ah isla alaabada.

Tani waxay ka dhigan tahay in mar hore marxaladan aad u baahan tahay inaad go'aansato in doorsoomuhu uu deegaan ku tiirsan yahay iyo in kale oo dhig meesha saxda ah.

Tusaale ahaan, hal mashruuc, doorsoomiyaha mas'uulka ka ah karti-gelinta SSL wuxuu ahaa mid ku-tiirsan bey'ad muddo dheer, maadaama aynaan awood u siin karin SSL sababo ka baxsan xakamaynta mid ka mid ah meelaha taagan. Ka dib markii aanu xallinay arrintan, waxay noqotay madax-bannaani dhexdhexaad ah waxayna u guurtay doorsoomayaasha buugaagta.

Isbeddelka Hantida ee Kooxaha

Aynu balaadhino moodelkeena Jaantuska 1-aad annagoo ku darayna 2 kooxood oo adeegayaal ah oo wata codsi Java ka duwan, balse leh goobo kala duwan.

Habka habka doorsoomayaasha ee macquulka ah

Bal qiyaas sida buugga-ciyaartu u ekaan doono kiiskan:

- hosts: myapi
  roles:
    - api

- hosts: bbauth
  roles:
    - auth

- hosts: ghauth
  roles:
    - auth

Waxaan ku leenahay buugga-ciyaaraha saddex kooxood, sidaas darteed waxaa lagu talinayaa in la abuuro inta badan faylal kooxeed doorsoomayaasha alaabada group_vars iyo doorsoomayaasha buug-ciyaareedka hal mar. Hal fayl oo koox ah kiiskan waa sharaxaadda hal qayb oo ka mid ah arjigaaga buugga ciyaarta. Markaad furto faylka kooxda ee doorsoomayaasha buugga-ciyaaraha, isla markiiba waxaad arkaysaa dhammaan faraqa u dhexeeya hab-dhaqanka caadiga ah ee doorarka kooxda loo xilsaaray. Doorsoomayaasha alaabada: kala duwanaanshaha habdhaqanka kooxda laga bilaabo booth ilaa booth.

qaabka code

  • Isku day inaadan isticmaalin host_vars doorsoomayaasha gabi ahaan,maadaama aysan sifayn nidaamka,laakin kiis gaar ah oo kaliya, kaas oo mustaqbalka fog horseedi doona su'aalo: "Muxuu martigeliyahani uga duwan yahay kuwa kale?", Jawaabtu waa kuwee. Had iyo jeer ma fududa in la helo.

Doorsoomayaasha isku xidhka

Si kastaba ha ahaatee, taasi waxay ku saabsan tahay doorsoomayaasha hantida, laakiin waxa ku saabsan doorsoomayaasha isku xirka?
Kala duwanaanshahooda ayaa ah inay isku qiimo ku yeeshaan kooxaha kala duwan.

Bilowgii waxaa jiray fikrad isticmaal qaab dhismeed bahal ah:
hostvars[groups['bbauth'][0]]['auth_bind_port'], laakiin markiiba waa laga tagay
sababtoo ah waxay leedahay cillado. Marka hore, baaxadda. Marka labaad, ku tiirsanaanta cid gaar ah oo kooxda ka tirsan. Marka seddexaad, waa lagama maarmaan in laga soo ururiyo xaqiiqooyinka dhammaan martigeliyayaasha ka hor inta aan la bilaabin dirista, haddii aanaan dooneynin inaan helno qalad doorsoomayaal ah oo aan la qeexin.

Natiijo ahaan, waxaa la go'aamiyay in la isticmaalo doorsoomayaasha isku xirka.

Doorsoomayaasha isku xidhka waa doorsoomayaal ka tirsan buugga ciyaarta oo loo baahan yahay in lagu xidho walxaha nidaamka.

Doorsoomayaasha isku xidhka ayaa ku badan doorsoomayaasha nidaamka guud group_vars/all/vars waxaana la sameeyay iyadoo laga saarayo dhammaan doorsoomayaasha dhageystayaasha koox kasta, laguna daro magaca kooxda laga saaray dhageystaha bilowga doorsoomiyaha.

Sidaa darteed, isku-duubnida iyo is-goysyada la'aanta magacyada waa la hubiyaa.

Aynu isku dayno inaan doorsoomayaasha ku xidhno tusaalaha sare:

Habka habka doorsoomayaasha ee macquulka ah

Bal qiyaas inaan leenahay doorsoomayaal midba midka kale ku xiran yahay:

# roles/api/defaults:
# Переменная запроса
api_auth1_address: "http://example.com:80"
api_auth2_address: "http://example2.com:80"

# roles/auth/defaults:
# Переменная слушатель
auth_bind_port: "20000"

Aynu ku dhejinno doorsoomayaasha caadiga ah group_vars/all/vars dhammaan dhegaystayaasha, oo ku dar magaca kooxda magaca:

# group_vars/all/vars
bbauth_auth_bind_port: "20000"
ghauth_auth_bind_port: "30000"

# group_vars/bbauth/vars
auth_bind_port: "{{ bbauth_auth_bind_port }}"

# group_vars/ghauth/vars
auth_bind_port: "{{ ghauth_auth_bind_port }}"

# group_vars/myapi/vars
api_auth1_address: "http://{{ bbauth_auth_service_name }}:{{ bbauth_auth_bind_port }}"
api_auth2_address: "http://{{ ghauth_auth_service_name }}:{{ ghauth_auth_bind_port }}"

Hadda, adoo bedelaya qiimaha isku xirka, waxaan hubin doonaa in codsigu aadi doono isla deked isku mid ah.

qaabka code

  • Maadaama doorarka iyo kooxuhu ay yihiin walxo nidaam oo kala duwan, waxay u baahan yihiin inay yeeshaan magacyo kala duwan si ay doorsoomayaasha isku xirka si sax ah u muujiyaan inay ka tirsan yihiin koox gaar ah oo server ah, oo aan ahayn doorka nidaamka.

Faylasha deegaanka

Doorarku waxay isticmaali karaan faylal ka duwan deegaan ilaa deegaan.

Shahaadooyinka SSL waa tusaale faylasha noocaas ah. U kaydi qoraal ahaan
doorsoome ma aha mid aad u habboon. Laakiin way ku habboon tahay in lagu kaydiyo jidka iyaga gudaha doorsoome.

Tusaale ahaan, waxaan isticmaalnaa doorsoomayaasha api_ssl_key_file: "/path/to/file".

Maadaama ay iska caddahay in shahaadada muhiimka ahi ay isku beddesho deegaan ilaa deegaan, tani waa doorsoome deegaan ku tiirsan, taas oo macnaheedu yahay inay ku jirto faylka.
group_vars/myapi/vars liiska doorsoomayaasha, oo ka kooban qiimaha 'tusaale'.

Habka ugu habboon ee kiiskan waa in la geliyo faylka muhiimka ah ee kaydka buugga-ciyaaraha ee waddada
files/prod/certs/myapi.key, markaas qiimaha doorsoomuhu wuxuu noqonayaa:
api_ssl_key_file: "prod/certs/myapi.key". Fududeynta waxay ku jirtaa xaqiiqda ah in dadka mas'uulka ka ah geynta nidaamka meel gaar ah ay sidoo kale leeyihiin meel u gaar ah oo ku taal kaydka si ay u kaydiyaan faylalkooda. Isla mar ahaantaana, waxaa suurtagal ah in la qeexo dariiqa saxda ah ee shahaadada server-ka, haddii shahaadooyinka lagu bixiyo nidaam kale.

Meelo badan ayaa ku yaal hal deegaan

Badanaa waxaa loo baahan yahay in la geeyo dhowr taako oo isku dhow oo isku deegaan ah oo leh kala duwanaansho yar. Xaaladdan oo kale, waxaan u kala qaybinnaa doorsoomayaal ku-tiirsan deegaanka kuwo aan isbeddelin gudaha deegaankan iyo kuwa sameeya. Midda dambena si toos ah ayaan uga soo saarnaa faylalka agabka laftooda. Wax-is-daba-marintan ka dib, waxa suurtagal noqonaysa in si toos ah tusaha deegaanka loogu sameeyo alaab kale.

Waxay dib u isticmaali doontaa alaabada group_vars waxayna sidoo kale awood u yeelan doontaa inay si toos ah u qeexdo doorsoomayaasha qaarkood.

Qaab dhismeedka hagaha ugu dambeeya ee mashruuca geynta:

mydeploy                        # Каталог деплоя
├── deploy.yml                  # Плейбук деплоя
├── files                       # Каталог для файлов деплоя
│   ├── prod                    # Католог для средозависимых файлов стенда prod
│   │   └── certs               # 
│   │       └── myapi.key       #
│   └── test1                   # Каталог для средозависимых файлов стенда test1
├── group_vars                  # Каталог переменных плейбука
│   ├── all.yml                 # Файл для переменных связи всей системы
│   ├── myapi.yml               # Файл переменных свойств группы myapi
│   ├── bbauth.yml              # 
│   └── ghauth.yml              #
└── inventories                 #
    ├── prod                    # Каталог окружения prod
    │   ├── group_vars          # Каталог для переменных инвентори
    │   │   ├── myapi           #
    │   │   │   ├── vars.yml    # Средозависимые переменные группы myapi
    │   │   │   └── vault.yml   # Секреты (всегда средозависимы)
    │   │   ├── bbauth          # 
    │   │   │   ├── vars.yml    #
    │   │   │   └── vault.yml   #
    │   │   └── ghauth          #
    │   │       ├── vars.yml    #
    │   │       └── vault.yml   #
    │   └── prod.ini            # Инвентори стенда prod
    └── test                    # Каталог окружения test
        ├── group_vars          #
        │   ├── myapi           #
        │   │   ├── vars.yml    #
        │   │   └── vault.yml   #
        │   ├── bbauth          #
        │   │   ├── vars.yml    #
        │   │   └── vault.yml   #
        │   └── ghauth          #
        │       ├── vars.yml    #
        │       └── vault.yml   #
        ├── test1.ini           # Инвентори стенда test1 в среде test
        └── test2.ini           # Инвентори стенда test2 в среде test

Isku soo wada duuboo

Ka dib markii la habeeyo doorsoomayaasha si waafaqsan qodobka: fayl kasta oo doorsoomayaal leh ayaa mas'uul ka ah hawl gaar ah. Maaddaama uu faylku leeyahay hawlo gaar ah, waxa suurtogal noqotay in lagu meeleeyo qof masuul ka ah saxnaanta fayl kasta. Tusaale ahaan, soo-saare geynta nidaamka wuxuu mas'uul ka noqonayaa buuxinta saxda ah ee doorsoomayaasha buugga-ciyaaraha, halka maamulaha, oo mowqifkiisa lagu sharraxay agabka, uu si toos ah uga mas'uul yahay buuxinta liiska doorsoomayaasha.

Doorarku waxay noqdeen unug horumarineed oo isku xidhan oo leh is-dhexgal u gaar ah, taasoo u oggolaanaysa horumariyaha doorka inuu horumariyo sifooyin halkii uu ku habboonayn lahaa doorka ku habboon nidaamka. Arrintani waxay si gaar ah run ugu ahayd doorarka guud ee dhammaan nidaamyada ololaha.

Maamulayaasha nidaamka uma baahna inay fahmaan koodka geynta. Dhammaan waxa iyaga looga baahan yahay geynta guusha leh waa inay buuxiyaan faylalka doorsoomayaasha deegaanka.

Suugaanta

  1. Dukumentiyada

qoraaga

Kalyuzhny Denis Alexandrovich

Source: www.habr.com

Add a comment