Ansible-г хурдасгаж байна

Ansible-г хурдасгаж байна
Анхдагч тохиргоотой бол Ansible нь ажлаа маш хурдан хийж чадахгүй нь нууц биш юм. Нийтлэлд би үүний хэд хэдэн шалтгааныг онцолж, таны төслийн хурдыг нэмэгдүүлэх боломжтой хамгийн бага тохиргоог санал болгох болно.

Энд болон доор бид шинээр үүсгэсэн virtualenv-д таны дуртай аргаар суулгасан Ansible 2.9.x-ийн талаар ярилцана.

Суулгасны дараа тоглоомын дэвтэрийнхээ хажууд "ansible.cfg" файл үүсгэнэ үү - энэ байршил нь танд эдгээр тохиргоог төслийн хамт шилжүүлэх боломжийг олгох ба автоматаар ачаалагдах болно.

Дамжуулах хоолой

Зарим нь дамжуулах хоолойг ашиглах, өөрөөр хэлбэл зорилтот системийн файлын системд модулиудыг хуулах биш, харин Base64-д ороосон зип архивыг Python орчуулагчийн stdin руу шууд шилжүүлэх тухай сонссон байх, гэхдээ зарим нь сонсоогүй байж магадгүй, гэхдээ баримт баримт хэвээр байна: энэ тохиргоо дутуу үнэлэгдсэн хэвээр байна. Харамсалтай нь, sudo-г тохируулахад ашигладаг зарим алдартай Linux түгээлтүүд нь анхдагчаар тийм ч сайн байдаггүй - энэ тушаалд 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

Харамсалтай нь, энэ нь "цуглуулах = ухаалаг/илэрхий" болон "салаа = 20" тохиргоонуудтай ажиллахгүй: тэдгээрийн YaML-тэй дүйцэхүйц байхгүй байна. Бид тэдгээрийг ansible.cfg-д тохируулна, эсвэл ANSIBLE_GATHERING болон ANSIBLE_FORKS орчны хувьсагчаар дамжуулна.

Митогений тухай
- Митогений тухай энэ хаана байна? - Эрхэм уншигч та асуух эрхтэй. Энэ нийтлэлд хаана ч байхгүй. Гэхдээ хэрэв та түүний кодыг уншиж, таны тоглоомын ном яагаад Mitogen-тэй гацсан, харин ваниллин Ansible-тэй сайн ажиллаж байгааг ойлгоход бэлэн байгаа бол, эсвэл яагаад ижил тоглоомын ном өмнө нь сайн ажиллаж байсан ч шинэчлэлт хийсний дараа хачирхалтай зүйл хийж эхэлснийг ойлгоход бэлэн байгаа бол - За, Митоген таны хэрэгсэл байж магадгүй. Үүнийг хэрэгжүүлэх, ойлгох, нийтлэл бичих - Би үүнийг сонирхож унших болно.

Би яагаад Митогенийг биечлэн хэрэглэж болохгүй гэж? Учир нь даалгаврууд үнэхээр энгийн, бүх зүйл зүгээр байх үед л Gladiolus ажилладаг. Гэсэн хэдий ч, хэрэв та бага зэрэг зүүн эсвэл баруун тийш эргэх юм бол бид ирлээ: хариуд нь цөөн тооны үл хамаарах зүйлүүд чам руу нисч, зургийг гүйцээхийн тулд "бүгдэнд баярлалаа" гэсэн нийтлэг хэллэг дутуу байна. , хүн бүр эрх чөлөөтэй." Ерөнхийдөө би дараагийн "газар доорх тогших" шалтгааныг олж мэдэхэд цаг үрмээргүй байна.

Эдгээр тохиргооны заримыг унших явцад илрүүлсэн эх код "ssh.py" нэртэй өөрөө тайлбарласан холболтын залгаас. Энэ нь хэн нэгэнд эх сурвалжийг үзэх, уншиж, хэрэгжилтийг шалгах, баримт бичигтэй харьцуулах урам зориг өгөх болно гэж би уншсаны үр дүнг хуваалцаж байна - эцэст нь энэ бүхэн эрт орой хэзээ нэгэн цагт эерэг үр дүнг авчрах болно. Амжилт хүсье!

Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой. Нэвтрэх, гуйя.

Та төслүүдээ хурдасгахын тулд дараах Ansible тохиргоонуудын алийг нь ашигладаг вэ?

  • 69,6%дамжуулах хоолой = үнэн32

  • 34,8%цуглуулах = ухаалаг/илэрхий16

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

  • 17,4%дамжуулах_арга = дамжуулах8

  • 63,0%сэрээ = XXX29

  • 6,5%Эдгээрийн аль нь ч биш, зөвхөн Митоген3

  • 8,7%Митоген + Би эдгээр тохиргооны алийг нь тэмдэглэх болно4

46 хэрэглэгч санал өгсөн. 21 хэрэглэгч түдгэлзсэн.

Ansible-ийн талаар илүү ихийг хүсч байна уу?

  • 78,3%тийм ээ, мэдээж 54

  • 21,7%Тийм ээ, би илүү хатуу зүйл хүсч байна!15

  • 0,0%үгүй, энэ нь дэмий хэрэггүй0

  • 0,0%үгүй ээ, төвөгтэй!!!0

69 хэрэглэгч санал өгсөн. 7 хэрэглэгч түдгэлзсэн.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх