Mokhoa oa tsamaiso ho mefuta-futa ho Ansible

ansible devops codestyle

Lumela! Lebitso la ka ke Denis Kalyuzhny Ke sebetsa ke le moenjiniere lefapheng la li-automation process. Letsatsi le leng le le leng, lisebelisoa tse ncha tsa lisebelisoa li hlahisoa ho makholo a li-server tsa phutuho. 'Me sehloohong sena ke arolelana phihlelo ea ka ea ho sebelisa Ansible bakeng sa merero ena.

Tataiso ena e fana ka mokhoa oa ho hlophisa mefuta-futa ea ho romelloa. Tataiso ena e reretsoe ba seng ba ntse ba sebelisa likarolo libukeng tsa bona tsa ho bapala le ba seng ba balile Mekhoa e Molemo ka ho Fetisisa, empa e tobane le mathata a tšoanang:

  • Ha u se u fumane ho feto-fetoha ka khoutu, ho ke ke ha khoneha ho utloisisa hang-hang hore na e ikarabella bakeng sa eng;
  • Ho na le likarolo tse 'maloa,' me mefuta-futa e hloka ho amahanngoa le boleng bo le bong, empa ha e sebetse feela;
  • Ho ba le bothata ba ho hlalosetsa ba bang hore na lintlha tse fapaneng libukeng tsa hau tsa ho bapala li sebetsa joang

Re ile ra kopana le mathata ana mererong ea k'hamphani ea rona, ka lebaka leo re ileng ra ba le melao ea ho theha mefuta-futa ea libuka tsa rona tsa ho bapala, tseo ho isa bohōleng bo itseng li ileng tsa rarolla mathata ana.

Mokhoa oa tsamaiso ho mefuta-futa ho Ansible

Liphetoho ka likarolo

Karolo ke Ntho e arohaneng ea tsamaiso ea thomello. Joalo ka ntho efe kapa efe ea sistimi, e tlameha ho ba le sebopeho sa tšebelisano le sistimi eohle. Khokahano e joalo ke likarolo tse fapaneng.

Ha re nke, mohlala, karolo api, e kenyang sesebelisoa sa Java ho seva. E ka ba le mefuta efe e fapaneng?

Mokhoa oa tsamaiso ho mefuta-futa ho Ansible

Likarolo tse fapaneng li ka aroloa ka mefuta e 2 ho latela mofuta:

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

Lintho tse feto-fetohang ke lintho tse khethollang boitšoaro ba karolo.

Liphetoho tsa Potso - tsena ke liphapang tseo boleng ba tsona bo sebelisoang ho hlahisa lisebelisoa tse kantle ho karolo.

Bamameli ba feto-fetohang - tsena ke mefuta-futa eo boleng ba eona bo sebelisoang ho theha mefuta-futa ea kopo.

Ka lehlakoreng le leng, 1a, 2a, 2b ke lintho tse fapaneng tse sa itšetleheng ka tikoloho (lisebelisoa, lisebelisoa tsa kantle, joalo-joalo) 'me li ka tlatsoa ka boleng bo sa lekanyetsoang karolong e sa lekanyetsoang. Leha ho le joalo, ha ho khonehe ho tlatsa mefuta e fapaneng ea mofuta oa 1.b le 2.c ka boleng ntle le 'mohlala', kaha li tla fetoha ho tloha boemong ba ho ema ho latela tikoloho.

Mokhoa oa khoutu

  • Lebitso le feto-fetohang le tlameha ho qala ka lebitso la karolo. Sena se tla etsa hore ho be bonolo ho tseba nakong e tlang hore na phetoho e tsoa ho eng le hore na e ikarabella ho eng.
  • Ha u sebelisa mefuta-futa likarolong, u tlameha ho etsa bonnete ba hore u latela molao-motheo oa ho kopanya le ho sebelisa mefuta e hlalositsoeng ebang ke karolo ka boeona kapa mesebetsing eo ea hona joale e itšetlehileng ka eona.
  • Qoba ho sebelisa dikishinari bakeng sa mefuta-futa. Ansible ha e u lumelle ho hlakola litekanyetso tsa motho ka mong habonolo bukeng ea mantsoe.

    Mohlala oa phetoho e mpe:

    myrole_user:
        login: admin
        password: admin

    Mona ho kena ke phapang e ikemetseng, 'me password ke eona e itšetlehileng ka eona. Empa
    kaha li kopantsoe le buka e hlalosang mantsoe, u tla tlameha ho e hlalosa ka ho feletseng
    Kamehla. E leng ntho e sa thabiseng haholo. Ho betere ka tsela ena:

    myrole_user_login: admin
    myrole_user_password: admin

Liphetoho libukeng tsa ho bapala tse tsamaisoang

Ha re hlophisa buka ea ho bapala (eo hamorao e tla bitsoa buka ea ho bapala), re latela molao oa hore e behoe sebakeng se arohaneng sa polokelo. E tšoana le likarolo: e 'ngoe le e' ngoe e sebakeng sa eona sa polokelo ea git. Sena se o nolofalletsa ho utloisisa hore mesebetsi le buka ea ho bapala ke lintho tse fapaneng tse ikemetseng tsa tsamaiso ea ho tsamaisa, 'me liphetoho nthong e le' ngoe ha lia lokela ho ama ts'ebetso ea e 'ngoe. Sena se finyelloa ka ho fetola litekanyetso tsa kamehla tsa mefuta-futa.

Ha o hlophisa buka ea ho bapala, ho akaretsa, hoa khonahala ho fetisa boleng ba maemo a fapaneng a likarolo libakeng tse peli: ka mefuta e fapaneng ea buka ea ho bapala le ka mefuta e fapaneng ea lethathamo.

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

* - Mefuta e fapaneng le Vaults

Phapang ke hore mefuta ea li-playbook e lula e sebelisoa ha u bitsa libuka tsa ho bapala tse boemong bo lekanang le tsona. Sena se bolela hore mefuta ena e metle bakeng sa ho fetola boleng ba maemo a fapaneng a ikemetseng a tikoloho. Ka lehlakoreng le leng, mefuta e fapaneng ea thepa e tla sebelisoa feela bakeng sa tikoloho e itseng, e loketseng maemo a ikhethileng a tikoloho.

Ho bohlokoa ho hlokomela hore ho feto-fetoha ha lintho tse tlang pele ho ke ke ha u lumella hore u tlose mefuta-futa pele ho mefuta-futa ea buka ea ho bapala ebe u arohana ka lethathamong le le leng.

Sena se bolela hore e se e le mothating ona ho hlokahala ho etsa qeto ea hore na phapang e itšetlehile ka tikoloho kapa che, ebe e e beha sebakeng se loketseng.

Ka mohlala, morerong o mong, phetoho e ikarabellang bakeng sa ho nolofalletsa SSL e ne e itšetlehile ka tikoloho ka nako e telele, kaha re ne re sitoa ho nolofalletsa SSL ka mabaka a ka nģ'ane ho matla a rona ho e 'ngoe ea li-stand. Kamora hore re rarolle bothata bona, e ile ea ikemela tikolohong 'me ea fetela ho mefuta e fapaneng ea libuka.

Phapang ea Thepa bakeng sa Lihlopha

Ha re eketse mohlala oa rona ho Setšoantšo sa 1 ka ho kenyelletsa lihlopha tse 2 tsa li-server tse nang le ts'ebeliso e fapaneng ea Java, empa ka litlhophiso tse fapaneng.

Mokhoa oa tsamaiso ho mefuta-futa ho Ansible

Ha re nahane hore na buka ea ho bapala e tla shebahala joang tabeng ena:

- hosts: myapi
  roles:
    - api

- hosts: bbauth
  roles:
    - auth

- hosts: ghauth
  roles:
    - auth

Re na le lihlopha tse tharo bukeng ea ho bapala, kahoo hang-hang ho khothaletsoa ho theha palo e lekanang ea lifaele tsa sehlopha ho lihlopha tsa lihlopha tsa sehlopha_vars le mefuta e fapaneng ea buka ea ho bapala. Faele e le 'ngoe ea sehlopha tabeng ena ke tlhaloso ea karolo e le' ngoe ea kopo e ka holimo bukeng ea playbook. Ha u bula faele ea sehlopha ka har'a mefuta-futa ea buka ea ho bapala, hang-hang u bona liphapang tsohle ho tloha boitšoarong bo sa feleng ba mesebetsi e kentsoeng sehlopheng. Inventory variables/ Ketso ya ho ba le diphapano tsa dihlopha: diphapano tsa boits'oaro ba sehlopha ho tloha boemong ba ho ema.

Mokhoa oa Khoutu

  • Leka hore u se ke ua sebelisa mefuta e fapaneng ea host_vars ho hang, kaha ha e hlalose tsamaiso, empa ke nyeoe e khethehileng feela, eo nakong e tlang e tla lebisa lipotso: "Ke hobane'ng ha moeti enoa a fapane le ba bang?", karabo ea eona e seng joalo. kamehla ho le bonolo ho fumana.

Liphapano tsa Puisano

Leha ho le joalo, ke seo mefuta ea thepa e leng sona, empa ho thoe'ng ka mefuta-futa ea puisano?
Phapang ea bona ke hore ba lokela ho ba le moelelo o tšoanang ka lihlopha tse fapaneng.

Qalong ho ne ho le jwalo khopolo sebelisa sebopeho se makatsang joalo ka:
hostvars[groups['bbauth'][0]]['auth_bind_port'], empa hang-hang ba e hana
hobane e na le mefokolo. Ntlha ea pele, bulkiness. Ea bobeli, ho itšetleha ka moamoheli ea itseng sehlopheng. Taba ea boraro, pele re qala ho romelloa, hoa hlokahala ho bokella lintlha ho tsoa ho bohle ba amohelang litaba haeba re sa batle ho fumana phoso ea mofuta o sa hlalosoang.

Ka lebaka leo, ho ile ha etsoa qeto ea ho sebelisa mefuta-futa ea puisano.

Liphapano tsa Puisano - tsena ke mefuta e fapaneng ea buka ea ho bapala 'me e hlokahala ho hokahanya lintho tsa sistimi.

Liphetoho tsa puisano li ahiloe ka mefuta-futa ea tsamaiso e akaretsang group_vars/all/vars mme di bopilwe ka ho tlosa diphapantsho tsohle tsa bamamedi sehlopheng ka seng, le ho eketsa lebitso la sehlopha seo momamedi a tlositsweng ho sona qalong ya phapano.

Sena se tiisa ho ts'oana le ho se tobane ha mabitso.

Ha re leke ho kopanya mefuta-futa ho tloha mohlaleng o ka holimo:

Mokhoa oa tsamaiso ho mefuta-futa ho Ansible

Ha re nahane hore re na le mefuta e fapaneng e itšetlehileng ka e mong:

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

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

Ha re e kenye linthong tse tloaelehileng tse fapaneng group_vars/all/vars bamamedi bohle, mme o kenye mabitso a sehlopha sehloohong:

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

Hona joale, ka ho fetola boleng ba sehokelo, re tla ba le bonnete ba hore kopo e tla ea sebakeng se le seng moo sekepe se leng teng.

Mokhoa oa Khoutu

  • Kaha mesebetsi le lihlopha ke lintho tse fapaneng tsa tsamaiso, li hloka ho ba le mabitso a sa tšoaneng, joale lihlopha tsa li-link li tla bontša ka nepo hore ke tsa sehlopha se itseng sa li-server, eseng karolo ea tsamaiso.

Lifaele tse itšetlehileng ka tikoloho

Likarolo li ka sebelisa lifaele tse fapaneng ho ea ka tikoloho.

Mohlala oa lifaele tse joalo ke litifikeiti tsa SSL. Li boloke ka mokhoa oa mongolo
ka ho feto-fetoha ha ho bonolo haholo. Empa ho loketse ho boloka tsela e eang ho tsona ka har'a mofuta o fapaneng.

Ka mohlala, re sebelisa phetoho api_ssl_key_file: "/path/to/file".

Kaha ho hlakile hore setifikeiti sa bohlokoa se tla fetoha ho tloha tikolohong ho ea ho tikoloho, sena ke phetoho e itšetlehileng ka tikoloho, ho bolelang hore e lokela ho beoa faeleng.
group_vars/myapi/vars lethathamo la lintho tse fapaneng, 'me e na le boleng ba' mohlala '.

Tsela e bonolo ka ho fetisisa tabeng ena ke ho beha faele ea bohlokoa ka har'a polokelo ea libuka tsa playbook tseleng
files/prod/certs/myapi.key, joale boleng ba phetoho e tla ba:
api_ssl_key_file: "prod/certs/myapi.key". Bonolo bo teng tabeng ea hore batho ba ikarabellang bakeng sa ho tsamaisa tsamaiso sebakeng se itseng ba boetse ba na le sebaka sa bona se inehetseng sebakeng sa polokelo ho boloka lifaele tsa bona. Ka nako e ts'oanang, ho ntse ho khoneha ho hlalosa tsela e feletseng ea setifikeiti ho seva, haeba likoti li fanoa ke tsamaiso e 'ngoe.

Maemo a mangata tikolohong e le 'ngoe

Hangata ho hlokahala hore ho behoe litulo tse 'maloa tse batlang li tšoana hantle sebakeng se le seng ka liphapang tse fokolang. Tabeng ena, re arola liphapang tse itšetlehileng ka tikoloho ho tse sa fetoheng ka hare ho tikoloho ena le tse fetohang. 'Me re fetisetsa ea morao ka ho toba lifaeleng tsa thepa ka botsona. Kamora ho qhekella hona, hoa khonahala ho theha lethathamo le leng ka kotloloho bukeng ea tikoloho.

E tla sebelisa lethathamo la sehlopha_vars hape, hape e tla khona ho hlalosa tse ling tse fapaneng ka kotloloho bakeng sa eona.

Sebopeho sa ho qetela sa directory bakeng sa morero oa phepelo:

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

Ho akaretsa

Ka mor'a ho hlophisa mefuta-futa ho latela sehlooho: faele e 'ngoe le e' ngoe e feto-fetohang e ikarabella bakeng sa mosebetsi o itseng. 'Me kaha faele e na le mesebetsi e itseng, ho ile ha khoneha ho abela motho ea ikarabellang bakeng sa ho nepahala ha faele ka' ngoe. Mohlala, moqapi oa phepelo ea sistimi o jara boikarabello ba ho tlatsoa ka nepo ha mefuta-futa ea buka ea ho bapala, athe molaoli eo boemo ba hae bo hlalosoang lethathamong la lintho a ikarabella ka kotloloho ho tlatsa lethathamo la lintho tse fapaneng.

Likarolo li ile tsa fetoha karolo ea bona ea ntlafatso e nang le sebopeho sa bona, e lumellang moqapi oa karolo ho nts'etsapele bokhoni ho fapana le ho hlophisa karolo ho latela sistimi. Bothata bona bo ne bo amana haholo-holo le mesebetsi e tloaelehileng ea litsamaiso tsohle letšolong lena.

Batsamaisi ba sistimi ha ba sa tlameha ho utloisisa khoutu ea thomello. Sohle se hlokoang ho bona bakeng sa ho tsamaisoa ka katleho ke ho tlatsa lifaele tsa mefuta-futa e itšetlehileng ka tikoloho.

Lingoliloeng

  1. Litokomane

mongoli

Kalyuzhny Denis Alexandrovich

Source: www.habr.com

Eketsa ka tlhaloso