Ansible sürətləndirilməsi

Ansible sürətləndirilməsi
Heç kimə sirr deyil ki, standart parametrlərlə Ansible öz işini çox tez edə bilməz. Məqalədə bunun bir neçə səbəbini qeyd edəcəyəm və çox güman ki, layihənizin sürətini həqiqətən artıracaq faydalı minimum parametrlər təklif edəcəyəm.

Burada və aşağıda sevimli şəkildə təzə yaradılmış virtualenv-də quraşdırılmış Ansible 2.9.x-i müzakirə edirik.

Quraşdırıldıqdan sonra kitabçanızın yanında “ansible.cfg” faylı yaradın - bu yer sizə layihə ilə birlikdə bu parametrləri ötürməyə imkan verəcək, üstəlik onlar kifayət qədər avtomatik yüklənəcək.

Boruların çəkilməsi

Bəziləri boru kəmərindən istifadə etmək, yəni modulları hədəf sistemin fayl sisteminə köçürmək deyil, Base64-ə bükülmüş zip arxivini birbaşa Python tərcüməçisinin stdin-ə köçürmək zərurəti haqqında eşitmiş ola bilər, lakin bəziləri eşitməyə bilər, lakin fakt fakt olaraq qalır: bu parametr hələ də lazımınca qiymətləndirilməmişdir. Təəssüf ki, sudo-nu konfiqurasiya etmək üçün istifadə edilən bəzi məşhur Linux paylamaları standart olaraq o qədər də yaxşı deyil - beləliklə, bu əmr tty (terminal) tələb etdi, ona görə də Ansible bu çox faydalı parametri defolt olaraq qeyri-aktiv etdi.

pipelining = True

Faktların toplanması

Siz bilirdinizmi ki, standart parametrlərlə hər bir oyun üçün Ansible orada iştirak edən bütün aparıcılar üçün faktların toplanmasına başlayır? Ümumiyyətlə, bilmirdinizsə, indi bilirsiniz. Bunun baş verməsinin qarşısını almaq üçün ya faktların toplanması üçün açıq sorğu rejimini (açıq) və ya ağıllı rejimi aktivləşdirməlisiniz. Orada yalnız əvvəlki tamaşalarda rast gəlinməyən faktlar toplanacaq.
UPD. Kopyalama zamanı bu parametrlərdən birini seçməli olacaqsınız.

gathering = smart|explicit

Ssh bağlantılarının təkrar istifadəsi

Əgər siz nə vaxtsa Ansible-ı sazlama rejimində işlətmisinizsə ("v" seçimi, birdən doqquz dəfə təkrarlanır), ssh əlaqələrinin daim qurulduğunu və pozulduğunu fərq etmiş ola bilərsiniz. Deməli, burada da bir neçə incəlik var.

Ssh bağlantısını eyni anda iki səviyyədə bərpa etmək addımından qaça bilərsiniz: həm birbaşa ssh müştərisində, həm də faylları menecerdən idarə olunan hosta köçürərkən.
Açıq ssh bağlantısını təkrar istifadə etmək üçün sadəcə olaraq lazımi düymələri ssh müştərisinə ötürün. Sonra aşağıdakıları etməyə başlayacaq: ilk dəfə ssh bağlantısı qurarkən, əlavə olaraq sözdə idarəetmə rozetkası yaradacaq, sonrakı quraşdırmalarda bu rozetin mövcudluğunu yoxlayacaq və uğurlu olarsa, yenidən istifadə edin. mövcud ssh bağlantısı. Bütün bunları məntiqli etmək üçün, qeyri-aktiv olduqda əlaqəni saxlamaq üçün vaxt təyin edək. Ətraflı oxuya bilərsiniz ssh sənədləri, və Ansible kontekstində biz sadəcə olaraq ssh müştərisinə lazımi variantları “yönləndirmək”dən istifadə edirik.

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

Faylları idarə olunan hosta köçürərkən artıq açıq olan ssh bağlantısını yenidən istifadə etmək üçün başqa naməlum parametr ssh_tranfer_method təyin edin. Bu mövzuda sənədlər son dərəcədir xəsis və yanıltıcı, çünki bu seçim olduqca yaxşı işləyir! Amma oxumaq mənbə kodu dəqiq nə olacağını başa düşməyə imkan verir: dd əmri birbaşa istədiyiniz faylla işləyərək idarə olunan hostda işə salınacaq.

transfer_method = piped

Yeri gəlmişkən, “inkişaf et” bölməsində də bu parametr mövcuddur heç yerə getmir.

Bıçaqdan qorxma, çəngəldən qorx

Başqa bir faydalı parametr çəngəllərdir. O, eyni vaxtda hostlara qoşulacaq və tapşırıqları yerinə yetirəcək işçi proseslərinin sayını müəyyən edir. Python-un bir dil kimi xüsusiyyətlərinə görə, mövzulardan deyil, proseslərdən istifadə olunur, çünki Ansible hələ də Python 2.7-ni dəstəkləyir - sizin üçün asyncio yoxdur, burada asinxron davranışı təqdim etməyin mənası yoxdur! Varsayılan olaraq Ansible işləyir beş işçilər, lakin düzgün soruşulsa, daha çox işə başlayacaq:

forks = 20

Mən sizə dərhal xəbərdarlıq edirəm ki, burada idarəetmə maşınında mövcud yaddaş miqdarı ilə bağlı bəzi çətinliklər ola bilər. Başqa sözlə, siz, əlbəttə, çəngəlləri = 100500 təyin edə bilərsiniz, amma bunun işləyəcəyini kim söylədi?

Hamısını bir yerə yığmaq

Nəticədə, ansible.cfg (ini formatı) üçün lazımi parametrlər belə görünə bilər:

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

Sağlam bir insanın normal YaML-inventarında hər şeyi gizlətmək istəyirsinizsə, o zaman belə görünə bilər:

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

Təəssüf ki, bu “toplama = ağıllı/açıq” və “çəngəllər = 20” parametrləri ilə işləməyəcək: onların YaML ekvivalentləri mövcud deyil. Ya onları ansible.cfg-də təyin edəcəyik, ya da ANSIBLE_GATHERING və ANSIBLE_FORKS mühit dəyişənlərindən keçirik.

Mitogen haqqında
- Bu Mitogen haqqında haradadır? - deyə soruşmaq hüququnuz var, əziz oxucu. Bu məqalənin heç bir yerində. Ancaq həqiqətən onun kodunu oxumağa və oyun kitabınızın niyə Mitogen ilə qəzaya uğradığını, lakin vanil Ansible ilə yaxşı işlədiyini və ya eyni kitabçanın niyə əvvəl yaxşı işlədiyini, lakin yeniləmədən sonra qəribə şeylər etməyə başladığını anlamağa hazırsınızsa - yaxşı, Mitogen potensial alətiniz ola bilər. Tətbiq edin, anlayın, məqalələr yazın - maraqla oxuyacağam.

Niyə mən şəxsən Mitogen istifadə etmirəm? Çünki gladiolus yalnız vəzifələr həqiqətən sadə olduqda və hər şey qaydasında olduqda işləyir. Ancaq bir az sola və ya sağa dönsəniz - bu qədər gəldik: cavab olaraq bir ovuc qeyri-müəyyən istisnalar üzərinizə uçur və şəkli tamamlamaq üçün çatışmayan yeganə şey "hamınıza təşəkkür edirəm" ifadəsidir. , hər kəs azaddır." Ümumiyyətlə, növbəti "yeraltı döymə"nin səbəblərini tapmaq üçün vaxt itirmək istəmirəm.

Bu parametrlərdən bəziləri oxuma prosesi zamanı aşkar edilmişdir mənbə kodu “ssh.py” öz-özünə izahlı adı altında qoşulma plagini. Oxumağın nəticələrini ümid edirəm ki, bu, başqasını mənbələrə baxmağa, oxumağa, icrasını yoxlamağa, sənədlərlə müqayisə etməyə ruhlandıracaq - axı, gec-tez bütün bunlar sizə müsbət nəticələr verəcəkdir. Uğurlar!

Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər. Daxil olunxahiş edirəm.

Layihələrinizi sürətləndirmək üçün aşağıdakı Ansible parametrlərindən hansını istifadə edirsiniz?

  • 69,6%boru kəməri = true32

  • 34,8%toplama = ağıllı/açıq16

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

  • 17,4%transfer_metod = boru ilə 8

  • 63,0%çəngəllər = XXX29

  • 6,5%Bunların heç biri, sadəcə Mitogen3

  • 8,7%Mitogen + Bu parametrlərdən hansını qeyd edəcəm4

46 istifadəçi səs verib. 21 istifadəçi bitərəf qaldı.

Ansible haqqında daha çox şey istəyirsiniz?

  • 78,3%bəli, əlbəttə 54

  • 21,7%bəli, mən sadəcə daha sərt şeylər istəyirəm!15

  • 0,0%yox və bu heç nəyə lazım deyil0

  • 0,0%yox, mürəkkəbdir!!!0

69 istifadəçi səs verib. 7 istifadəçi bitərəf qalıb.

Mənbə: www.habr.com

Добавить комментарий