Ụzọ usoro maka mgbanwe na ike

ansible devops codestyle

Hey! Aha m bụ Denis Kalyuzhny M na-arụ ọrụ dị ka onye injinia na ngalaba mmepe usoro akpaaka. Kwa ụbọchị, a na-ewepụta ihe nrụpụta ngwa ọhụrụ na narị narị sava mgbasa ozi. Na n'ime edemede a, m na-ekerịta ahụmịhe m nke iji ike eme ihe maka ebumnuche ndị a.

Ntuziaka a na-enye ụzọ iji hazie mgbanwe na ntinye. Ezubere ntuziaka a maka ndị ejirila ọrụ dị n'akwụkwọ egwu egwu ha wee gụọ Omume kacha mma, mana ọ na-eche nsogbu ndị yiri ya ihu:

  • N'ịbụ onye chọtara mgbanwe na koodu ahụ, ọ gaghị ekwe omume ịghọta ozugbo ihe ọ na-akpata;
  • Enwere ọtụtụ ọrụ, na mgbanwe dị mkpa ka ejikọta ya na otu uru, mana ọ naghị arụ ọrụ;
  • Ọ na-esiri gị ike ịkọwara ndị ọzọ ka mgbagha nke mgbanwe dị na akwụkwọ egwuregwu gị si arụ ọrụ

Anyị zutere nsogbu ndị a na oru ngo na ụlọ ọrụ anyị, n'ihi nke a anyị bịara na iwu maka ịmepụta variables na anyị playbooks, nke ruo n'ókè ụfọdụ dozie nsogbu ndị a.

Ụzọ usoro maka mgbanwe na ike

Mgbanwe na ọrụ

Ọrụ bụ ihe dị iche iche nke sistemu ntinye. Dị ka ihe ọ bụla usoro ihe, ọ ga-enwerịrị interface maka mmekọrịta ya na ndị ọzọ nke usoro. Ụdị interface dị otú ahụ bụ mgbanwe ọrụ.

Ka anyị were, dịka ọmụmaatụ, ọrụ ahụ api, nke na-etinye ngwa Java na ihe nkesa. Kedu mgbanwe ọ nwere ike inwe?

Ụzọ usoro maka mgbanwe na ike

Enwere ike kewaa ọrụ dị iche iche n'ụdị abụọ dịka ụdị:

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

Njirimara dị iche iche bụ mgbanwe na-ekpebi omume nke ọrụ.

Ngbanwe ajụjụ - Ndị a bụ mgbanwe ndị a na-eji akọwapụta akụrụngwa na-abụghị ọrụ.

Ndị na-ege ntị na-agbanwe agbanwe - Ndị a bụ mgbanwe ndị a na-eji ọnụ ahịa ha mepụta mgbanwe arịrịọ.

N'aka nke ọzọ, 1a, 2a, 2b bụ mgbanwe ndị na-adabereghị na gburugburu ebe obibi (ngwaike, ihe ndị dị n'èzí, wdg) ma nwee ike jupụta na ụkpụrụ ndabara na ọrụ nkwụsị. Otú ọ dị, ọ gaghị ekwe omume iji mejupụta mgbanwe nke ụdị 1.b na 2.c na ụkpụrụ ndị ọzọ karịa 'ihe atụ', ebe ọ bụ na ha ga-agbanwe site n'ikwado guzoro dabere na gburugburu ebe obibi.

Ụdị koodu

  • Aha mgbanwe ga-amalite n'aha ọrụ. Nke a ga-eme ka ọ dị mfe ịchọpụta n'ọdịnihu ọrụ mgbanwe ahụ sitere na ihe ọ na-akpata.
  • Mgbe ị na-eji mgbanwe dị iche iche na-arụ ọrụ, ị ghaghị ijide n'aka na ị ga-agbaso ụkpụrụ nke encapsulation ma jiri mgbanwe ndị akọwapụtara ma ọ bụ n'ọrụ n'onwe ya ma ọ bụ na ọrụ nke ugbu a dabere na ya.
  • Zere iji akwụkwọ ọkọwa okwu maka mgbanwe. Ihe nwere ike ime anaghị enye gị ohere ịkagbu ụkpụrụ n'otu n'otu na akwụkwọ ọkọwa okwu.

    Ọmụmaatụ nke mgbanwe ọjọọ:

    myrole_user:
        login: admin
        password: admin

    Ebe a nbanye bụ mgbanwe nọọrọ onwe ya, na paswọọdụ bụ mgbanwe dabere. Ma
    ebe ọ bụ na ejikọtara ha na akwụkwọ ọkọwa okwu, ị ga-ezipụta ya kpamkpam
    Mgbe niile. Nke na-adịghị mma. Ụzọ ka mma:

    myrole_user_login: admin
    myrole_user_password: admin

Mgbanwe na akwụkwọ egwuregwu mbugharị

Mgbe anyị na-achịkọta akwụkwọ egwuregwu mbugharị (nke a na-akpọ ya akwụkwọ egwuregwu), anyị na-agbaso iwu nke ekwesịrị idobe ya na ebe nchekwa dị iche. Otu dị ka ọrụ: onye ọ bụla na ebe nchekwa git nke ya. Nke a na-enye gị ohere ịghọta na ọrụ na akwụkwọ egwuregwu bụ ihe dị iche iche nwere onwe ha nke usoro ntinye, na mgbanwe nke otu ihe ekwesịghị imetụta ọrụ nke ọzọ. A na-enweta nke a site n'ịgbanwe ụkpụrụ ndabara nke mgbanwe.

Mgbe ị na-achịkọta akwụkwọ egwuregwu, iji chịkọta, ọ ga-ekwe omume ịkagbu ụkpụrụ ndabara nke mgbanwe ọrụ n'ebe abụọ: na mgbanwe egwuregwu na n'ụdị mgbanwe.

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

* - - Mgbanwe na Vaults

Ihe dị iche bụ na a na-eji mgbanwe akwụkwọ egwu eme ihe mgbe niile mgbe a na-akpọ akwụkwọ egwu egwu dị n'otu ọkwa ya. Nke a pụtara na mgbanwe ndị a dị mma maka ịgbanwe ụkpụrụ ndabara nke mgbanwe ndị na-adabere na gburugburu ebe obibi. N'aka nke ọzọ, a ga-eji mgbanwe ngwa ahịa naanị maka otu gburugburu ebe obibi, nke dị mma maka mgbanwe mgbanwe gburugburu ebe obibi.

Ọ dị mkpa iburu n'obi na mkpa mgbanwe agaghị enye gị ohere ibu ụzọ bugharịa mgbanwe n'ime akwụkwọ egwuregwu wee kewapụ iche n'otu ngwa ahịa.

Nke a pụtara na ugbua na ọkwa a, ọ dị mkpa ikpebi ma mgbanwe ahụ na-adabere na gburugburu ebe obibi ma ọ bụ na ọ bụghị ma tinye ya n'ebe kwesịrị ekwesị.

Dịka ọmụmaatụ, n'otu ọrụ, mgbanwe na-ahụ maka ịme SSL dabere na gburugburu ebe obibi ruo ogologo oge, ebe ọ bụ na anyị enweghị ike ịme SSL n'ihi ihe ndị na-enweghị ike ịchịkwa n'otu n'ime ihe nkwụnye. Mgbe anyị dozichara nsogbu a, ọ ghọrọ gburugburu nke kwụụrụ onwe ya wee kwaga na mgbanwe egwuregwu.

Ngbanwe Ngwongwo maka Otu

Ka anyị gbasaa ihe nlereanya anyị na eserese 1 site na ịgbakwunye otu sava abụọ nwere ngwa Java dị iche, mana nwere ntọala dị iche iche.

Ụzọ usoro maka mgbanwe na ike

Ka anyị chetụ ihe akwụkwọ egwuregwu ga-adị ka nke a:

- hosts: myapi
  roles:
    - api

- hosts: bbauth
  roles:
    - auth

- hosts: ghauth
  roles:
    - auth

Anyị nwere otu atọ n'ime akwụkwọ egwuregwu, ya mere a na-atụ aro ozugbo ịmepụta otu ọnụ ọgụgụ nke faịlụ otu na group_vars inventory variables na playbook variables. Otu faịlụ otu na nke a bụ nkọwa nke otu akụkụ nke ngwa dị n'elu na akwụkwọ egwuregwu. Mgbe imepere faịlụ otu na mgbanwe egwuregwu, ị ga-ahụ ozugbo niile dị iche na omume ndabara nke ọrụ arụnyere na otu ahụ. N'ụdị mgbanwe dị iche iche: ndịiche dị na omume otu site na nkwudo ruo nkwudo.

Ụdị koodu

  • Gbalịa ka ị ghara iji host_vars variables ma ọlị, ebe ọ bụ na ha adịghị akọwa usoro, ma ọ bụ naanị a pụrụ iche ikpe, nke ga-eme n'ọdịnihu ga-eduga ajụjụ: "Gịnị mere onye ọbịa a dị iche na ndị ọzọ?", Azịza ya bụ nke na-adịghị. mgbe niile mfe ịchọta.

Ngbanwe nzikọrịta ozi

Otú ọ dị, nke ahụ bụ ihe mgbanwe ihe onwunwe bụ ihe niile, ma gịnị banyere mgbanwe nzikọrịta ozi?
Ihe dị iche ha bụ na ha kwesịrị inwe otu ihe pụtara n'otu dị iche iche.

Na mbụ ọ bụ echiche jiri nnukwu owuwu dị ka:
hostvars[groups['bbauth'][0]]['auth_bind_port'], ma ha jụrụ ozugbo
n'ihi na o nwere ọghọm. Nke mbụ, oke ibu. Nke abuo, ịdabere na otu onye ọbịa na otu. Nke atọ, tupu ịmalite mbugharị, ọ dị mkpa ịnakọta eziokwu sitere na ndị ọbịa niile ma ọ bụrụ na anyị achọghị ịnweta njehie nke mgbanwe na-akọwaghị.

N'ihi ya, e kpebiri iji mgbanwe nzikọrịta ozi.

Ngbanwe nzikọrịta ozi - Ndị a bụ mgbanwe dị na akwụkwọ egwuregwu ma achọrọ iji jikọọ ihe sistemụ.

A na-ejupụta mgbanwe nzikọrịta ozi n'ụdị mgbanwe usoro izugbe group_vars/all/vars ma na-etolite site na iwepu ihe niile na-ege ntị na otu ọ bụla, na ịgbakwunye aha otu nke e wepụrụ onye na-ege ntị na mmalite nke mgbanwe ahụ.

Nke a na-eme ka ịdị n'otu na enweghị nchikota aha.

Ka anyị nwaa ijikọ mgbanwe site na ihe atụ dị n'elu:

Ụzọ usoro maka mgbanwe na ike

Ka anyị were ya na anyị nwere mgbanwe ndị dabere na ibe anyị:

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

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

Ka anyị tinye ya na mgbanwe nkịtị group_vars/all/vars ndị niile na-ege ntị, ma tinye aha otu na aha:

# 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 }}"

Ugbu a, site n'ịgbanwe uru nke njikọ ahụ, anyị ga-ejide n'aka na arịrịọ ahụ ga-aga n'otu ebe ọdụ ụgbọ mmiri dị.

Ụdị koodu

  • Ebe ọ bụ na ọrụ na otu dị iche iche bụ usoro ihe dị iche iche, ha kwesịrị inwe aha dị iche iche, mgbe ahụ, njikọ njikọ ga-egosi n'ụzọ ziri ezi na ha so na otu sava, ọ bụghịkwa na-arụ ọrụ na usoro.

Faịlụ dabere gburugburu

Ọrụ nwere ike iji faịlụ dị iche site na gburugburu gaa na gburugburu.

Ihe atụ nke faịlụ ndị dị otú ahụ bụ asambodo SSL. Chekwaa ha n'ụdị ederede
na a mgbanwe adịghị nnọọ adaba. Ma ọ dị mma ịchekwa ụzọ ha n'ime mgbanwe.

Dịka ọmụmaatụ, anyị na-eji mgbanwe api_ssl_key_file: "/path/to/file".

Ebe ọ bụ na o doro anya na akwụkwọ igodo ahụ ga-agbanwe site na gburugburu ebe obibi, nke a bụ mgbanwe na-adabere na gburugburu ebe obibi, nke pụtara na ọ ga-adị na faịlụ ahụ.
group_vars/myapi/vars Ndepụta nke mgbanwe, ma nwee uru 'dịka ọmụmaatụ'.

Ụzọ kachasị mma na nke a bụ itinye faịlụ igodo na ebe nchekwa akwụkwọ egwu n'akụkụ ụzọ ahụ
files/prod/certs/myapi.key, mgbe ahụ uru nke mgbanwe ga-abụ:
api_ssl_key_file: "prod/certs/myapi.key". Ọdịmma ahụ dabere n'eziokwu ahụ bụ na ndị na-ahụ maka ibugharị sistemu ahụ n'otu ebe a kapịrị ọnụ nwekwara ohere raara onwe ya nye na ebe nchekwa iji chekwaa faịlụ ha. N'otu oge ahụ, ọ ka ga-ekwe omume ịkọwapụta ụzọ zuru oke na asambodo na sava ahụ, ma ọ bụrụ na sistemụ ọzọ wetara asambodo ahụ.

Otutu eguzo n'otu gburugburu

Ọtụtụ mgbe, ọ dị mkpa ibugharị ọtụtụ ihe nkwụnye ihe fọrọ nke nta ka ọ bụrụ otu n'otu gburugburu nwere obere ọdịiche. N'okwu a, anyị na-ekewa mgbanwe ndị na-adabere na gburugburu ebe obibi na ndị na-adịghị agbanwe agbanwe n'ime gburugburu ebe a na ndị na-agbanwe. Ma anyị na-ebufe nke ikpeazụ ozugbo na faịlụ ngwa ahịa n'onwe ha. Mgbe ngbanwe a gasịrị, ọ ga-ekwe omume ịmepụta ngwa ahịa ọzọ ozugbo na ndekọ gburugburu ebe obibi.

Ọ ga-ejigharị ngwa ngwa group_vars, ma ga-enwekwa ike ịkọwapụta ụfọdụ mgbanwe ozugbo maka onwe ya.

Usoro ndekọ aha ikpeazụ maka ọrụ mbugharị:

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

Na-achịkọta

Mgbe ịhazi mgbanwe ndị dị na isiokwu ahụ: faịlụ ọ bụla na-agbanwe agbanwe na-ahụ maka otu ọrụ. Ma ebe ọ bụ na faịlụ ahụ nwere ụfọdụ ọrụ, ọ bịara kwe omume ịnye onye na-ahụ maka izi ezi nke faịlụ ọ bụla. Dịka ọmụmaatụ, onye na-emepụta ihe nkesa sistemụ na-abụ maka ọrụ maka njuputa ziri ezi nke mgbanwe akwụkwọ egwuregwu, ebe onye nchịkwa nke akọwara n'ọkwa ahụ na-ahụ maka ijuputa ngwa ahịa nke mgbanwe.

Ọrụ ghọrọ ngalaba mmepe nke ha nwere interface nke ha, na-ekwe ka onye nrụpụta ọrụ nwee ike ịzụlite ikike kama ịhazi ọrụ ahụ na sistemụ. Nsogbu a kacha metụtara ọrụ nkịtị maka sistemụ niile na mkpọsa ahụ.

Ndị na-ahụ maka sistemụ anaghịzi achọ ịghọta koodu nnabata. Ihe niile a chọrọ n'aka ha maka ntinye nke ọma bụ iji mejupụta faịlụ nke mgbanwe ndị na-adabere na gburugburu ebe obibi.

Akwụkwọ

  1. Документация

na-ede akwụkwọ

Kalyuzhny Denis Alexandrovich

isi: www.habr.com

Tinye a comment