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:
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_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
transfer_method = piped
Yeri gəlmişkən, “inkişaf et” bölməsində də bu parametr mövcuddur
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
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
Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər.
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