Kuharakisha Ansible

Kuharakisha Ansible
Sio siri kwamba kwa mipangilio ya chaguo-msingi Ansible haiwezi kufanya kazi yake haraka sana. Katika kifungu hicho nitaonyesha sababu kadhaa za hii na kutoa kiwango cha chini cha mipangilio ambayo, ikiwezekana, itaongeza kasi ya mradi wako.

Hapa na chini tunajadili Ansible 2.9.x, ambayo ilisakinishwa katika virtualenv iliyoundwa upya kwa njia unayopenda.

Baada ya kusakinisha, unda faili ya "ansible.cfg" karibu na kitabu chako cha kucheza - eneo hili litakuruhusu kuhamisha mipangilio hii pamoja na mradi, pamoja na kwamba itapakia kiotomatiki.

Uwekaji mabomba

Wengine wanaweza kuwa tayari wamesikia juu ya hitaji la kutumia bomba, ambayo ni, sio kunakili moduli kwa mfumo wa faili wa mfumo unaolengwa, lakini kuhamisha kumbukumbu ya zip iliyofunikwa kwa Base64 moja kwa moja kwa stdin ya mkalimani wa Python, lakini wengine hawawezi, lakini ukweli. inabaki kuwa ukweli: mpangilio huu bado inabakia kutothaminiwa. Kwa bahati mbaya, baadhi ya usambazaji maarufu wa Linux unaotumiwa kusanidi sudo sio vizuri sana kwa chaguo-msingi - ili amri hii ilihitaji tty (terminal), kwa hivyo Ansible iliacha mpangilio huu muhimu sana ukizimwa kwa chaguo-msingi.

pipelining = True

Kukusanya ukweli

Je, unajua kwamba kwa mipangilio chaguo-msingi, Yanayotumika kwa kila igizo huanzisha mkusanyiko wa ukweli kwa wapangishaji wote wanaoshiriki katika mchezo huo? Kwa ujumla, ikiwa haukujua, sasa unajua. Ili kuzuia hili kutokea, unahitaji kuwezesha hali ya ombi wazi ya kukusanya ukweli (dhahiri) au modi mahiri. Ndani yake, ukweli utakusanywa tu kutoka kwa wahudumu wale ambao hawakukutana katika michezo ya awali.
UPD. Wakati wa kunakili, itabidi uchague mojawapo ya mipangilio hii.

gathering = smart|explicit

Kutumia tena miunganisho ya ssh

Ikiwa umewahi kuendesha Ansible katika hali ya utatuzi (chaguo la "v", linalorudiwa mara moja hadi tisa), unaweza kuwa umegundua kuwa miunganisho ya ssh inafanywa na kuvunjika kila mara. Kwa hivyo, kuna hila kadhaa hapa pia.

Unaweza kuepuka hatua ya kuanzisha tena muunganisho wa ssh katika viwango viwili kwa wakati mmoja: zote mbili moja kwa moja kwenye mteja wa ssh, na wakati wa kuhamisha faili kwa mwenyeji anayesimamiwa kutoka kwa msimamizi.
Ili kutumia tena muunganisho wazi wa ssh, pitisha funguo muhimu kwa mteja wa ssh. Kisha itaanza kufanya yafuatayo: wakati wa kuanzisha muunganisho wa ssh kwa mara ya kwanza, itaongeza kinachojulikana kama tundu la kudhibiti, kwenye usakinishaji unaofuata, itaangalia uwepo wa tundu hili, na ikiwa imefanikiwa, tumia tena. muunganisho uliopo wa ssh. Na ili kufanya haya yote kuwa na maana, hebu tuweke wakati wa kudumisha muunganisho wakati hautumiki. Unaweza kusoma zaidi ndani ssh nyaraka, na katika muktadha wa Ansible tunatumia tu "kusambaza" chaguo muhimu kwa mteja wa ssh.

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

Ili kutumia tena muunganisho wa ssh ambao tayari umefunguliwa wakati wa kuhamisha faili kwa seva pangishi inayosimamiwa, bainisha tu mpangilio mwingine usiojulikana ssh_tranfer_method. Nyaraka juu ya mada hii ni kubwa mno Mchoyo na kupotosha, kwa sababu chaguo hili linafanya kazi vizuri kabisa! Lakini kusoma msimbo wa chanzo inakuwezesha kuelewa nini hasa kitatokea: amri ya dd itazinduliwa kwenye mwenyeji aliyesimamiwa, akifanya kazi moja kwa moja na faili inayotakiwa.

transfer_method = piped

Kwa njia, katika tawi la "kuendeleza" mpangilio huu pia upo si kwenda popote.

Usiogope kisu, ogopa uma

Mpangilio mwingine muhimu ni uma. Huamua idadi ya michakato ya mfanyakazi ambayo itaunganishwa wakati huo huo na wasimamizi na kufanya kazi. Kwa sababu ya upekee wa Python kama lugha, michakato hutumiwa, sio nyuzi, kwa sababu Ansible bado inasaidia Python 2.7 - hakuna asyncio kwako, hakuna maana ya kutambulisha tabia ya asynchronous hapa! Kwa chaguo-msingi Ansible anaendesha tano wafanyikazi, lakini ikiulizwa kwa usahihi, itazindua zaidi:

forks = 20

Ninakuonya mara moja kwamba kunaweza kuwa na shida hapa zinazohusiana na kiasi kinachopatikana cha kumbukumbu kwenye mashine ya kudhibiti. Kwa maneno mengine, unaweza, kwa kweli, kuweka uma = 100500, lakini ni nani alisema itafanya kazi?

Kuweka yote pamoja

Kama matokeo, kwa ansible.cfg (umbizo la ini), mipangilio inayofaa inaweza kuonekana kama hii:

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

Na ikiwa unataka kuficha kila kitu katika hesabu ya kawaida ya YaML ya mtu mwenye afya, basi inaweza kuonekana kama hii:

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

Kwa bahati mbaya, hii haitafanya kazi na mipangilio "gathering = smart/explicit" na "forks = 20": sawa na YaML hazipo. Labda tunaziweka katika ansible.cfg, au tunazipitisha kupitia vigeu vya mazingira ANSIBLE_GATHERING na ANSIBLE_FORKS.

Kuhusu Mitogen
- Hii ni wapi kuhusu Mitogen? - una haki ya kuuliza, msomaji mpendwa. Hakuna popote katika makala hii. Lakini ikiwa uko tayari kusoma msimbo wake na kujua ni kwa nini kitabu chako cha kucheza kinagongana na Mitogen, lakini kinafanya kazi vizuri na vanilla Ansible, au kwa nini kitabu hicho cha kucheza kilifanya kazi vizuri hapo awali, lakini baada ya sasisho kuanza kufanya mambo ya kushangaza - vizuri, Mitogen angeweza. uwezekano kuwa chombo chako. Itumie, ielewe, andika nakala - nitaisoma kwa kupendeza.

Kwa nini mimi binafsi situmii Mitogen? Kwa sababu gladiolus inafanya kazi mradi tu kazi ni rahisi sana na kila kitu kiko sawa. Walakini, ukigeukia kidogo kushoto au kulia - ndivyo hivyo, tumefika: kwa kujibu, wachache wa tofauti zisizo wazi wanaruka kwako, na kukamilisha picha, kinachokosekana ni kifungu cha kawaida "asante nyote. , kila mtu yuko huru.” Kwa ujumla, sitaki tu kupoteza muda kutafuta sababu za "kubisha chini ya ardhi" ijayo.

Baadhi ya mipangilio hii iligunduliwa wakati wa mchakato wa kusoma msimbo wa chanzo programu-jalizi ya kiunganishi chini ya jina linalojieleza "ssh.py". Ninashiriki matokeo ya kusoma kwa matumaini kwamba itahamasisha mtu mwingine kuangalia vyanzo, kusoma, kuangalia utekelezaji, kulinganisha na nyaraka - baada ya yote, mapema au baadaye yote haya yatakuletea matokeo mazuri. Bahati njema!

Watumiaji waliojiandikisha pekee ndio wanaweza kushiriki katika utafiti. Weka sahihitafadhali.

Ni ipi kati ya mipangilio Inayofaa ifuatayo unayotumia kuharakisha miradi yako?

  • 69,6%pipelining=kweli32

  • 34,8%kukusanya = smart/wazi16

  • 52,2%ssh_args = "-o ControlMaster=auto -o ControlPersist=..."24

  • 17,4%transfer_method = piped8

  • 63,0%uma = XXX29

  • 6,5%Hakuna kati ya haya, Mitogen3 tu

  • 8,7%Mitogen + nitagundua ni ipi kati ya mipangilio hii4

Watumiaji 46 walipiga kura. Mtumiaji 21 alijizuia.

Unataka mambo zaidi kuhusu Ansible?

  • 78,3%ndio, bila shaka54

  • 21,7%ndio, nataka tu mambo magumu zaidi!15

  • 0,0%hapana, na sio lazima kwa chochote0

  • 0,0%hapana, ni ngumu!!!0

Watumiaji 69 walipiga kura. Watumiaji 7 walijizuia.

Chanzo: mapenzi.com

Kuongeza maoni