Skip to content

Nega Ansible va Terraformni tanladim?

api-gateway-nima

Kirish

Serverlar ko'pligida har birini qo'lda boshqarish oson emas. Qolaversa, qo'lda konfiguratsiya qilish xatolarga olib kelishi, vaqtni behuda sarflashga va jarayonni murakkablashtirishga sabab bo'ladi. Men infratuzilmani avtomatlashtirish va boshqarish usullarini izlay boshlaganimda, Ansible va Terraform men uchun eng yaxshi tanlov bo'ldi. Bu maqolada nima uchun aynan Ansible va Terraformni tanlaganim, qanday foydalar keltirgani va qanday qilib GitOps orqali boshqarishni tashkil qilganimni tushuntirib beraman.

Menda bir xil vazifalar ko'payib ketti va serverlar soni ham 100dan ortiq edi, 100dan ortiq serverga manual nimadir install qilib conf qilish juda ko'p vaqt va kuch talab qilardi va eng yomoni OS lar har xil va xatoliklar, anglashilmovchiliklari(nimadir esdan chiqib qoladi) bo'lishishi mumkin edi.

Serverlar soni ortib borgan sari ularni boshqarish traditional(an'anaviy) yondashuv orqali amalga oshirib bo'lmas darajada qiyinlashadi. Har bir serverni qo'lda config qilish katta vaqt va kuch talab qiladi, bitta kichik xatolik esa butun tizimning ishlamay qolishiga olib kelishi mumkin. Men infra boshqaruvini avtomatlashtirishga qaror qilganimda, Ansible va Terraform yordamida buni kutilganidan tezroq va samaraliroq qilish mumkinligini tushundim.

Ansible 2012-yilda Michael DeHaan tomonidan ishlab chiqilgan. Ansible dastlab Michael DeHaan tomonidan yaratilgan bo'lsa-da, keyinchalik 2015-yilda Red Hat tomonidan sotib olindi. Hozirda Ansible Red Hat kompaniyasi va open-source community tomonidan rivojlantirilmoqda.Ansible dastlab IT infratuzilmasini boshqarishni soddalashtirish maqsadida ishlab chiqilgan. Uning maqsadi - serverlarni konfiguratsiya qilish, dasturlarni o'rnatish va ularni boshqarishni avtomatlashtirishdir. Ansible agent o'rnatishni talab qilmaydi va soddaligi bilan ajralib turadi. Uning asosiy maqsadi - xavfsiz, agentiz (agentless) va deklarativ (declarative) konfiguratsiya boshqaruvini ta'minlash.

Terraform 2014-yilda Mitchell Hashimoto va Armon Dadgar tomonidan asos solingan HashiCorp kompaniyasi tomonidan ishlab chiqarilgan.Terraformni asosiy ishlab chiqaruvchi kompaniya bu HashiCorp. Shu bilan birga, community ham open-sourcega hissa qo'shadi. Terraformning asosiy maqsadi — infratuzilmani "Infrastructure as Code" (IaC) uslubida boshqarish va avtomatlashtirish. Terraform yordamida foydalanuvchilar cloudda (AWS, Azure, GCP va boshqalar) yoki on-premises infratuzilmasida resurslar yaratishi, boshqarishi va o'zgartirishi mumkin. Terraformning kuchli tomonlari - u turli platformalar bilan ishlay oladi, deklarativ yondashuvga ega va resurslarning holatini boshqarishga yordam beradi.

Ansible menga infratuzilmani kod orqali boshqarish imkonini berdi. Bu deklarativ yondashuv orqali tizimni ishonchli tarzda boshqarish va qayta tiklash imkoniyatini yaratadi. Ansible yordamida bir necha serverda bir xil konfiguratsiyalarni sozlash va yangilash osonlashdi. Yana bir muhim jihat - Ansible orqali boshqarish GitOps printsiplari bilan mos tushadi. GitOps yondashuvida barcha konfiguratsiyalar gitda saqlanadi va har bir o'zgarish tasdiqlangandan so'ng avtomatik ravishda serverlarga qo'llanadi. Bu nafaqat jarayonlarni xavfsizroq va aniqroq qiladi, balki konfiguratsiyalardagi o'zgarishlarni kuzatish va audit qilishni osonlashtiradi.

Nima uchun Ansible kerak degan savolga kichik misol keltiraman: Tassavvur qiling sizda 100dan ortiq server bor va ularning OS lari va versiylari har xil(Ubuntu20.04,Ubuntu 22.04,Debian 11, CentOS 7) sizning vazifangiz shu serverlarga misol uchun docker o'rnatib config qilib chiqishingiz kerak, endi tasavvur qiling buncha serverga docker o'rnatib conf qilish uchun qancha vaqt va kuch talab qiladi? bu holda multiple OS ga docker o'rnatadigan ansible playbook yozib barcha serverlaringizga birdaniga docker o'rnatib chiqishingiz mumkin. Ansible qulayligi agentlari yo'q serverlarga ssh orqali ulanib ishlaydi, Siz o'zingizning local desktop kompyuteringizda yoki birorta serverda ansible o'rnatib oldib siz boshqamoqchi bo'lgan serverlarga ssh connection uchun ssh config qilib chiqasiz.

Terraform esa men uchun infratuzilmani boshqarishda eng kuchli vositalardan biri bo'ldi. Terraformning asosiy afzalligi - turli xil cloud platformalari va on-premise infratuzilmalar bilan ishlash imkoniyatidir. Biror infrani kod orqali ta'riflash va uni kerakli joyda bir marta bajarish orqali hamma joyda tatbiq qilish mumkin. Terraform bilan men infratuzilmani bir xil darajada boshqaraman, qayerda bo'lishidan qat'i nazar - AWS, GCP yoki on-premise serverlar. Shu orqali ko'p qirrali infratuzilmalarni boshqarishda katta samaradorlikka erishdim.

Nima uchun Terraform kerak degan savolga kichik misol keltiraman: Tassavur qiling sizda misol uchun GCP,AWS yoki Azure cloud bor siz infratuzilmagiz arxitekturasi bo'yicha cloudda bir nechta vazifalarni bajarishingiz kerak masalan siz 50dan ortiq VM yaratishingiz Container Registry sozlashingiz VPC network, Firewall sozlashingiz kerak bo'lishi mumkin bu holda siz Cloud UI orqali har bittasi ustida ishlashni bir o'ylab ko'ringaa? bu holda siz Terraform script yozib ishga tuhsirsangiz hammasi avtomatlashtirilgan holda tez va samarali bajariladi siz vaqtdan va kuchdan yutasiz eng asosiysi asablaringizni asraysiz)).

Ansible va Terraform infratuzilmani avtomatlashtirish uchun ishlatiladi, lekin ularning qo'llanilish sohalari biroz farqlanadi:

  • Ansible-> Ko'pincha konfiguratsiyalarni boshqarish uchun ishlatiladi. Misol uchun, serverlarga dasturlar o'rnatish, ularni yangilash, config qilish kabi vazifalarni avtomatlashtirishda yordam beradi. Ansible agentga muhtoj emas va mavjud tizimlarga tez integratsiya qilinadi.

  • Terraform-> Infratuzilmani yaratish va boshqarish uchun ishlatiladi. U "Infrastructure as Code" (IaC) tamoyili asosida cloud (AWS, GCP, Azure) yoki on-premises infratuzilmani yaratish va boshqarishni avtomatlashtiradi. Terraform resurslarni yaratish, o'zgartirish va o'chirishni deklarativ tarzda amalga oshiradi.

Men o'z ishimda GitOps yondashuvini qo'llab, Ansible va Terraform yordamida infratuzilmani kod orqali boshqarishni amalga oshirdim. GitOps bilan ishlashim infra o'zgarishlarini tezroq va aniqlik bilan joriy qilish imkonini berdi. Yangi o'zgarishlar gitga kiritilib, avtomatik ravishda amalga oshiriladi, bu esa jarayonlarni sezilarli darajada tezlashtiradi va inson xatolarini kamaytiradi. Buning natijasida nafaqat vaqt tejadim, balki jarayonlar aniqroq bo'lib, infratuzilmani yangilash va kengaytirish tezligi oshdi. Ansible playbooklar va Terraform scriptlarni gitda(Gitlab, Github) saqlayman va ularni ishga tushirish uchun CI/CD(Gitlab CI, Github Actions, Jenkins) ishlataman bu mening ishimni yanada yaxshiladi va menda endi git history bor bu bilan qanday o'zgarishlar bo'lganini kuzatib turishim mumkin.

Ansible va Terraformga o'tishimning asosiy sababi samaradorlik va xavfsizlikni oshirishdir. Bu vositalar yordamida ko'p vaqt va resurslarni tejash mumkin, shuningdek, infrastrukturani ishonchli boshqarish osonlashadi. Avtomatlashtirish bu zamon talabi, va bu o'tish menga texnologiyalar bilan bir qadam oldinga borish imkoniyatini berdi.GitOps yondashuvi bilan bu vositalarni birlashtirib ishlatish esa o'zgarishlarni kuzatish, infra boshqaruvini tezlashtirish va jarayonlarni yanada xavfsiz qilish imkonini berdi.

Men hozirda Ansible va Terraform uchun skriptlar yozib, GitHub'da open-source(public) qilib joylamoqdaman. Maqsadim — infratuzilmani avtomatlashtirish jarayonini soddalashtirish va bu sohada community uchun ko'proq foyda yaratish. Bu yo'lda birga ishlashni va tajriba almashishni taklif qilaman. Biz birgalikda ishlash orqali infratuzilmani avtomatlashtirishni hammaga qulay va oson qila olamiz. Agar siz ham ushbu sohada ishlayotgan bo'lsangiz yoki yordam bera olsangiz, kelajakda yanada katta loyihalarni amalga oshirishda qo'l biriktiraylik. Fikr-mulohazalar va hamkorlikni juda qadrlayman.

Agar yordam berishni istasangiz yoki takliflaringiz bo'lsa, menga aloqaga chiqishingiz mumkin.

Github repositoriya -> github.com/ismoilovdevml/infra-as-code (opens in a new tab)

Telegram: ismoilovdev (opens in a new tab)

Sana: 2024.09.15(2024-yil 15-sentabr)

Oxirgi yangilanish: 2024.10.04(2024-yil 4-oktabr)

Muallif: Otabek Ismoilov

Telegram (opens in a new tab)GitHub (opens in a new tab)LinkedIn (opens in a new tab)