Суръати Ansible

Суръати Ansible
Пӯшида нест, ки бо танзимоти пешфарз Ansible кори худро зуд иҷро карда наметавонад. Дар мақола ман якчанд сабабҳои инро нишон медиҳам ва ҳадди аққали муфиди танзимотро пешниҳод мекунам, ки эҳтимолан суръати лоиҳаи шуморо зиёд мекунанд.

Дар ин ҷо ва дар зер мо Ansible 2.9.x-ро муҳокима мекунем, ки дар виртуалии навтаъсис бо роҳи дӯстдоштаи шумо насб шудааст.

Пас аз насб, дар паҳлӯи китоби бозиатон файли "ansible.cfg" эҷод кунед - ин макон ба шумо имкон медиҳад, ки ин танзимотро дар баробари лоиҳа интиқол диҳед, илова бар ин, онҳо ба таври худкор бор карда мешаванд.

Қубурсозӣ

Баъзеҳо шояд аллакай дар бораи зарурати истифодаи қубур, яъне нусхабардории модулҳо ба системаи файлии системаи мақсаднок нест, балки интиқоли архиви zip-и дар Base64 печонидашуда мустақиман ба stdin тарҷумони Python шунидаанд, аммо дигарон шояд не, аммо далел факт боқӣ мемонад: ин танзимот хануз кам бахо дода мешавад. Мутаассифона, баъзе дистрибюторҳои маъмули Linux барои танзими sudo ба таври нобаёнӣ чандон хуб нестанд - ба тавре ки ин фармон tty (терминал) талаб мекард, аз ин рӯ Ansible ин танзимоти муфидро ба таври нобаёнӣ ғайрифаъол гузошт.

pipelining = True

Ҷамъоварии далелҳо

Оё шумо медонед, ки бо танзимоти пешфарз, Ansible барои ҳар як бозӣ ҷамъоварии далелҳоро барои ҳама мизбонҳое, ки дар он иштирок мекунанд, оғоз мекунад? Умуман, агар шумо намедонед, ҳоло шумо медонед. Барои пешгирии ин ҳодиса, шумо бояд режими дархости возеҳро барои ҷамъоварии далелҳо (возеҳ) ё режими интеллектуалиро фаъол созед. Дар он фактдое, ки дар пьесадои пештара дида нашуда буданд, тандо аз он мизбондо чамъ карда мешаванд.
UPD. Ҳангоми нусхабардорӣ, шумо бояд яке аз ин танзимотро интихоб кунед.

gathering = smart|explicit

Истифодаи дубораи пайвастҳои ssh

Агар шумо ягон бор Ansible-ро дар реҷаи ислоҳкунӣ кор карда бошед (варианти "v", ки аз як то нӯҳ маротиба такрор мешавад), шумо шояд пай бурда бошед, ки пайвастагиҳои ssh пайваста сохта ва вайрон мешаванд. Ҳамин тавр, дар ин ҷо низ чанд нозукиҳо мавҷуданд.

Шумо метавонед аз қадами барқарор кардани пайвасти ssh якбора дар ду сатҳ канорагирӣ кунед: ҳам бевосита дар муштарии ssh ва ҳам ҳангоми интиқоли файлҳо ба хости идорашаванда аз менеҷер.
Барои дубора истифода бурдани пайвасти кушодаи ssh, танҳо калидҳои заруриро ба муштарии ssh интиқол диҳед. Он гоҳ он ба иҷрои корҳои зерин шурӯъ мекунад: ҳангоми бори аввал пайваст кардани ssh, он ба таври илова розеткаи ба истилоҳ идоракуниро эҷод мекунад, пас аз насби минбаъда мавҷудияти худи ин розеткаро месанҷад ва дар сурати муваффақ шудан, дубора истифода мешавад. пайвасти мавҷудаи ssh. Ва барои он ки ин ҳама маъно дорад, биёед вақтро барои нигоҳ доштани пайвастшавӣ ҳангоми ғайрифаъол муқаррар кунем. Шумо метавонед бештар дар ҳуҷҷатҳои ssh, ва дар контексти Ansible мо танҳо "фиристодани" имконоти заруриро ба муштарии ssh истифода мебарем.

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

Барои дубора истифода бурдани пайвасти аллакай кушодаи ssh ҳангоми интиқоли файлҳо ба ҳости идорашаванда, танҳо як танзимоти номаълуми дигари ssh_tranfer_method -ро муайян кунед. Ҳуҷҷатҳо дар ин мавзӯъ бениҳоят зиёданд хасис ва гумроҳкунанда, зеро ин хосият хеле хуб кор мекунад! Аммо хондан рамзи манбаъ ба шумо имкон медиҳад фаҳмед, ки маҳз чӣ рӯй медиҳад: фармони dd дар ҳости идорашаванда мустақиман бо файли дилхоҳ кор карда мешавад.

transfer_method = piped

Воқеан, дар бахши «таҳия» ин танзимот низ мавҷуд аст ба ҳеҷ куҷо намеравад.

Аз корд натарс, аз чангак битарс

Танзимоти дигари муфид вилка мебошад. Он шумораи равандҳои коргариро, ки ҳамзамон ба ҳостҳо пайваст мешаванд ва вазифаҳоро иҷро мекунанд, муайян мекунад. Аз сабаби хусусиятҳои Python ҳамчун забон, равандҳо истифода мешаванд, на риштаҳо, зеро Ansible ҳоло ҳам Python 2.7-ро дастгирӣ мекунад - асинсио барои шумо нест, дар ин ҷо ҷорӣ кардани рафтори асинхронӣ маъно надорад! Бо нобаёнӣ Ansible кор мекунад панҷ коргарон, аммо агар дуруст пурсида шавад, он бештар оғоз хоҳад кард:

forks = 20

Ман танҳо шуморо фавран огоҳ мекунам, ки дар ин ҷо бо миқдори мавҷудаи хотира дар мошини идоракунӣ мушкилоте вуҷуд дорад. Ба ибораи дигар, шумо метавонед, албатта, форкҳо = 100500 муқаррар кунед, аммо кӣ гуфт, ки ин кор мекунад?

Ҳама чизро якҷоя кардан

Дар натиҷа, барои ansible.cfg (формати ini), танзимоти зарурӣ метавонанд чунин бошанд:

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

Ва агар шумо хоҳед, ки ҳама чизро дар инвентаризатсияи муқаррарии YaML-и шахси солим пинҳон кунед, он метавонад чунин бошад:

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

Мутаассифона, ин бо танзимоти "cathering = smart/explicit" ва "forks = 20" кор намекунад: муодили YaML-и онҳо вуҷуд надоранд. Ё мо онҳоро дар ansible.cfg насб мекунем, ё мо онҳоро тавассути тағирёбандаҳои муҳити ANSIBLE_GATHERING ва ANSIBLE_FORKS мегузаронем.

Дар бораи Mitogen
- Ин дар бораи Митоген дар куҷост? — хакки пурсед, хонандаи азиз. Ҳеҷ ҷое дар ин мақола. Аммо агар шумо воқеан омода бошед, ки рамзи онро хонед ва бифаҳмед, ки чаро китоби бозии шумо бо Mitogen суқут мекунад, аммо бо ванили Ansible хуб кор мекунад ё чаро ҳамон як китоби бозӣ қаблан хуб кор мекард, аммо пас аз навсозӣ корҳои аҷибро анҷом дод - хуб, Mitogen метавонад воситаи шумо бошад. Онро татбиқ кунед, фаҳмед, мақолаҳо нависед - ман онро бо шавқ мехонам.

Чаро ман шахсан Митогенро истифода намебарам? Зеро Gladiolus танҳо он вақт кор мекунад, ки вазифаҳо воқеан содда ва ҳама чиз хубанд. Бо вуҷуди ин, агар шумо каме ба чап ё рост гардед - ин аст, ки мо расидем: дар ҷавоб як қатор истисноҳои норавшан ба сӯи шумо парвоз мекунанд ва барои пурра кардани тасвир, танҳо ибораи маъмулии "барои ҳама ташаккур" намерасад. , ҳама озоданд». Умуман, ман намехоҳам вақтро барои дарёфти сабабҳои "такти зеризаминӣ"-и навбатӣ сарф кунам.

Баъзе аз ин танзимот дар ҷараёни хониш пайдо шуданд рамзи манбаъ плагини пайвастшавӣ бо номи худфаҳмо "ssh.py". Ман натиҷаҳои хонишро бо умеди он мубодила мекунам, ки он каси дигарро барои дидани манбаъҳо, хондани онҳо, тафтиш кардани татбиқ, муқоиса бо ҳуҷҷатҳо илҳом мебахшад - дар ниҳоят, дер ё зуд ҳамаи ин ба шумо натиҷаҳои мусбӣ меорад. Барори кор!

Танҳо корбарони сабтиномшуда метавонанд дар пурсиш иштирок кунанд. даромад, Лутфан.

Кадоме аз танзимоти зерини Ansible барои суръат бахшидан ба лоиҳаҳои худ истифода мекунед?

  • 69,6%қубур = true32

  • 34,8%ҷамъоварӣ = интеллектуалӣ / ошкор16

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

  • 17,4%интиқол_метод = қубур 8

  • 63,0%чангак = XXX29

  • 6,5%Ҳеҷ яке аз инҳо, танҳо Mitogen3

  • 8,7%Mitogen + Ман қайд мекунам, ки кадоме аз ин танзимот4

46 корбар овоз доданд. 21 корбар худдорӣ кард.

Дар бораи Ansible маълумоти бештар мехоҳед?

  • 78,3%ҳа, албатта 54

  • 21,7%ҳа, ман танҳо чизҳои хардкор мехоҳам!15

  • 0,0%нест, ва он барои ҳеҷ чиз лозим нест0

  • 0,0%не, мураккаб аст!!!0

69 корбар овоз доданд. 7 корбар худдорӣ карданд.

Манбаъ: will.com

Илова Эзоҳ