Әдепкі параметрлермен Ansible өз жұмысын тез орындай алмайтыны жасырын емес. Мақалада мен мұның бірнеше себептерін көрсетемін және жобаңыздың жылдамдығын шынымен арттыратын пайдалы минимум параметрлерді ұсынамын.
Мұнда және төменде біз Ansible 2.9.x нұсқасын талқылаймыз, ол жаңадан жасалған virtualenv-де сүйікті әдісіңізде орнатылған.
Орнатқаннан кейін ойын кітапшасының жанында «ansible.cfg» файлын жасаңыз - бұл орын жобамен бірге осы параметрлерді тасымалдауға мүмкіндік береді, сонымен қатар олар автоматты түрде жүктеледі.
Құбыр тарту
Кейбіреулер құбыр желісін пайдалану қажеттілігі туралы естіген болуы мүмкін, яғни модульдерді мақсатты жүйенің файлдық жүйесіне көшірмеу, бірақ Base64 оралған zip мұрағатын тікелей Python аудармашысының stdin файлына тасымалдау, бірақ басқалары естімейді, бірақ факт факт болып қалады:
pipelining = True
Фактілерді жинау
Әдепкі параметрлермен Ansible for every play бағдарламасы оған қатысатын барлық хосттар үшін фактілерді жинауды бастайтынын білесіз бе? Жалпы, сіз білмесеңіз, енді білесіз. Мұның алдын алу үшін фактілерді жинауға арналған нақты сұрау режимін (анық) немесе смарт режимді қосу керек. Онда тек алдыңғы пьесаларда кездеспеген фактілер жиналады.
UPD. Көшіру кезінде осы параметрлердің бірін таңдау керек.
gathering = smart|explicit
ssh қосылымдарын қайта пайдалану
Егер сіз Ansible қолданбасын отладка режимінде іске қоссаңыз («v» опциясы, бір-тоғыз рет қайталанады), ssh қосылымдары үнемі жасалып, үзіліп жатқанын байқаған боларсыз. Сонымен, мұнда да бір-екі нәзіктік бар.
Ssh қосылымын бірден екі деңгейде қайта орнату қадамынан аулақ бола аласыз: тікелей ssh клиентінде де, файлдарды басқарушыдан басқарылатын хостқа тасымалдау кезінде.
Ашық ssh қосылымын қайта пайдалану үшін ssh клиентіне қажетті кілттерді жіберіңіз. Содан кейін ол келесі әрекеттерді жасай бастайды: ssh қосылымын бірінші рет орнатқанда, ол қосымша басқару розеткасын жасайды, кейінгі орнатуларда ол дәл осы розетканың бар-жоғын тексереді және сәтті болса, қайта пайдаланыңыз. бар ssh қосылымы. Мұның бәрі мағыналы болу үшін белсенді емес кезде қосылымды сақтау уақытын белгілейік. Толығырақ бөлімінен оқи аласыз
ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"
Файлдарды басқарылатын хостқа тасымалдау кезінде әлдеқашан ашық ssh қосылымын қайта пайдалану үшін ssh_tranfer_method басқа белгісіз параметрін көрсетіңіз. Бұл мәселе бойынша құжаттама өте көп
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
Өкінішке орай, бұл «жинау = ақылды/анық» және «шанышқылар = 20» параметрлерімен жұмыс істемейді: олардың YaML баламалары жоқ. Біз оларды ansible.cfg ішіне орнатамыз немесе ANSIBLE_GATHERING және ANSIBLE_FORKS айнымалылары арқылы өткіземіз.
Митоген туралы
- Бұл Митоген туралы қайда? – деп сұрауға құқығыңыз бар, құрметті оқырман. Бұл мақалада еш жерде жоқ. Бірақ егер сіз оның кодын оқып, ойын кітапшаңыз неге Митогенмен бұзылатынын, бірақ ванильді Ansible-мен жақсы жұмыс істейтінін немесе дәл сол ойын кітабының неге бұрын жақсы жұмыс істегенін, бірақ жаңартудан кейін оғаш нәрселер жасай бастағанын түсінуге дайын болсаңыз - жақсы, Митоген сіздің құралыңыз болуы мүмкін. Қолданыңыз, түсініңіз, мақалалар жазыңыз - мен оны қызығушылықпен оқимын.
Неліктен мен Митогенді жеке пайдаланбаймын? Өйткені гладиолус ол тапсырмалар өте қарапайым және бәрі жақсы болғанша ғана жұмыс істейді. Дегенмен, егер сіз сәл солға немесе оңға бұрылсаңыз - міне, біз жеттік: жауап ретінде сізге бірнеше анық емес ерекшеліктер ұшып келеді және суретті аяқтау үшін «барлығыңызға рахмет» деген жалпы тіркес жетіспейді. , барлығы еркін». Жалпы, мен келесі «жер асты соққысының» себептерін білуге уақытты жоғалтқым келмейді.
Бұл параметрлердің кейбірі оқу процесінде табылды
Сауалнамаға тек тіркелген пайдаланушылар қатыса алады.
Төмендегі 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%Митоген + Осы параметрлердің қайсысын атап өтемін4
46 қолданушы дауыс берді. 21 пайдаланушы қалыс қалды.
Ansible туралы көбірек білгіңіз келе ме?
-
78,3%иә, әрине54
-
21,7%иә, мен тек қаттырақ нәрселерді қалаймын!15
-
0,0%жоқ, және бұл ештеңеге қажет емес0
-
0,0%жоқ, бұл күрделі!!!0
69 пайдаланушы дауыс берді. 7 пайдаланушы қалыс қалды.
Ақпарат көзі: www.habr.com