Убрзавање Ансибле-а

Убрзавање Ансибле-а
Није тајна да са подразумеваним подешавањима Ансибле не може да обави свој посао веома брзо. У чланку ћу указати на неколико разлога за то и понудити користан минимум подешавања која ће, врло могуће, заиста повећати брзину вашег пројекта.

Овде и испод разматрамо Ансибле 2.9.к, који је инсталиран у свеже креирани виртуаленв на ваш омиљени начин.

Након инсталације, креирајте датотеку „ансибле.цфг“ поред свог плаибоок-а - ова локација ће вам омогућити да пренесете ова подешавања заједно са пројектом, плус она ће се учитати прилично аутоматски.

Пипелининг

Неки су можда већ чули за потребу да се користе пипелининг, односно не копирање модула у систем датотека циљног система, већ преношење зип архиве умотане у Басе64 директно на стдин Питхон интерпретатора, али други можда не, али чињеница је да остаје чињеница: ово подешавање по-прежнему остаётся недооценённой. К сожалению, какой-то из популярных дистрибутивов Linux по умолчанию раньше настраивал sudo не очень хорошо — так, что эта команда требовала наличия tty (терминала), поэтому в Ansible эту очень полезную настройку оставили выключенной по умолчанию.

pipelining = True

Прикупљање чињеница

Да ли сте знали да са подразумеваним подешавањима, Ансибле за сваку игру покреће прикупљање чињеница за све домаћине који учествују у њој? Генерално, ако нисте знали, сада знате. Да бисте спречили да се то догоди, потребно је да омогућите или режим експлицитног захтева за прикупљање чињеница (експлицитни) или паметни режим. У њему ће се прикупљати чињенице само од оних домаћина на које се у претходним представама није сретало.
УПД. Када копирате, мораћете да изаберете једно од ових подешавања.

gathering = smart|explicit

Поновно коришћење ссх веза

Ако сте икада покренули Ансибле у режиму за отклањање грешака (опција „в“, поновљена један до девет пута), можда сте приметили да се ссх везе стално праве и прекидају. Дакле, и овде постоји неколико суптилности.

Можете да избегнете корак поновног успостављања ссх везе на два нивоа одједном: и директно у ссх клијенту и приликом преноса датотека на управљани хост из менаџера.
Да бисте поново користили отворену ссх везу, једноставно проследите потребне кључеве ссх клијенту. Тада ће почети да ради следеће: приликом првог успостављања ссх конекције, додатно ће креирати тзв. контролну утичницу, након накнадних инсталација провераваће постојање самог сокета и ако успе, поново користити постојећа ссх веза. И да би све ово имало смисла, хајде да одредимо време за одржавање везе када је неактивна. Више можете прочитати у ссх документација, а у контексту Ансибле-а једноставно користимо „прослеђивање“ потребних опција ссх клијенту.

ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"

Да бисте поново користили већ отворену ссх везу приликом преноса датотека на управљани хост, само наведите другу непознату поставку ссх_транфер_метход. Документација о овој теми је изузетно шкрт и обмањујуће, јер ова опција ради прилично добро! Али читање изворни код омогућава вам да разумете шта ће се тачно догодити: команда дд ће бити покренута на управљаном хосту, директно радећи са жељеном датотеком.

transfer_method = piped

Иначе, у грани „развој“ постоји и ова поставка не иде никуда.

Не бој се ножа, плаши се виљушке

Још једно корисно подешавање су виљушке. Одређује број радних процеса који ће се истовремено повезати са хостовима и обављати задатке. Због специфичности Питхон-а као језика, користе се процеси, а не нити, јер Ансибле још увек подржава Питхон 2.7 - нема асинхроног система за вас, нема смисла уводити асинхроно понашање овде! Подразумевано се Ансибле покреће пет радника, али ако се исправно пита, покренуће више:

forks = 20

Само вас одмах упозоравам да овде може доћи до неких потешкоћа у вези са доступном количином меморије на контролној машини. Другим речима, можете, наравно, поставити виљушке=100500, али ко је рекао да ће то радити?

Све састављање

Као резултат тога, за ансибле.цфг (ини формат), неопходна подешавања могу изгледати овако:

[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped

А ако желите да сакријете све у нормалном ИаМЛ-инвентару здраве особе, онда то може изгледати отприлике овако:

---
all:
  vars:
    ansible_ssh_pipelining: true
    ansible_ssh_transfer_method: piped
    ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m

Нажалост, ово неће радити са подешавањима „сакупљање = паметно/експлицитно“ и „форкс = 20“: њихови ИаМЛ еквиваленти не постоје. Или ћемо их поставити у ансибле.цфг, или их проследити кроз променљиве окружења АНСИБЛЕ_ГАТХЕРИНГ и АНСИБЛЕ_ФОРКС.

О Митогену
- Где је ово о Митогену? - имате право да питате, драги читаоче. Нигде у овом чланку. Али ако сте заиста спремни да прочитате његов код и схватите зашто се ваш приручник руши са Митогеном, али добро ради са ванилла Ансибле-ом, или зашто је исти приручник добро функционисао раније, али је након ажурирања почео да ради чудне ствари - па, Митоген потенцијално може бити ваш алат. Примените, разумејте, пишите чланке - читаћу са интересовањем.

Зашто ја лично не користим Митоген? Јер гладиолус функционише само док су задаци заиста једноставни и све је у реду. Међутим, ако скренете мало улево или удесно – то је то, стигли смо: као одговор на вас лети прегршт нејасних изузетака, а да слика буде употпуњена, недостаје само уобичајена фраза „хвала свима , сви су слободни.” Генерално, не желим да губим време на откривање разлога следећег „подземног куцања“.

Нека од ових подешавања су откривена током процеса читања изворни код додатак за повезивање под саморазумљивим именом „ссх.пи“. Делим резултате читања у нади да ће то инспирисати неког другог да погледа изворе, прочита их, провери имплементацију, упореди са документацијом – уосталом, пре или касније све ово ће вам донети позитивне резултате. Срећно!

Само регистровани корисници могу учествовати у анкети. Пријавите се, Добродошао си.

Које од следећих Ансибле подешавања користите да бисте убрзали своје пројекте?

  • 100%пипелининг=труе32

  • 100%окупљање = паметно/експлицитно16

  • 100%ссх_аргс = "-о ЦонтролМастер=ауто -о ЦонтролПерсист=..."24

  • 100%трансфер_метход = пипед8

  • 100%виљушке = КСКСКС29

  • 100%Ништа од овога, само Митоген3

  • 100%Митоген + Приметићу које од ових подешавања4

Гласало је 46 корисника. 21 корисник је био уздржан.

Желите више ствари о Ансиблеу?

  • 100%да, наравно54

  • 100%да, само желим више хардкор ствари!15

  • 100%не, и није потребно за ништа0

  • 100%не, то је компликовано!!!0

Гласало је 69 корисника. Уздржано је било 7 корисника.

Извор: ввв.хабр.цом

Купите поуздан хостинг за сајтове са ДДоС заштитом, ВПС ВДС сервере 🔥 Купите поуздан веб хостинг са DDoS заштитом, VPS VDS сервере | ProHoster