Asosiy kontentga o‘tish
Innovialabs

Ansible nima: serverlarni agentlarsiz sozlash

Asoslar3 daq

Qisqacha

Ansible — YAML’da tasvirlangan vazifalarni SSH orqali serverlarda bajaradigan avtomatlashtirish vositasi; serverlarga hech narsa o‘rnatish shart emas, idempotentlik tufayli qayta ishga tushirish xavfsiz.

Ansible nima

Ansible — serverlarni avtomatik sozlash vositasi (configuration management). Siz YAML faylda server qanday bo‘lishi kerakligini tasvirlaysiz: qaysi paketlar o‘rnatilgan, qaysi foydalanuvchilar yaratilgan, nginx konfiguratsiyasi qanday. Ansible serverlarga SSH orqali ulanadi va ularni shu holatga keltiradi.

Asosiy xususiyati — agentless: boshqariladigan serverlarga hech qanday agent o‘rnatish kerak emas. SSH kirishi va deyarli har bir Linux distributivida bor Python yetarli. Ansible faqat buyruqlarni ishga tushiradigan mashinaga (noutbuk yoki CI server) o‘rnatiladi.

To‘rtta asosiy tushuncha

Inventory

Rollar bo‘yicha guruhlangan serverlar ro‘yxati:

[web]
web1.example.com
web2.example.com

[db]
db1.example.com ansible_user=deploy

Guruhlar bitta buyruq bilan «buni barcha web serverlarda bajar» deyish imkonini beradi.

Modullar

Modul — muayyan harakat uchun tayyor «g‘isht»: apt paketlarni o‘rnatadi, copy va template fayllarni joylashtiradi, user foydalanuvchilarni boshqaradi, service yoki systemd servislarni ishga tushiradi. Modullar yuzlab, va ko‘p vazifalarni qo‘lda yozilgan shell skriptlarsiz hal qilish mumkin.

Playbook

Playbook — ssenariyli YAML fayl: qaysi xostlarda qanday vazifalarni bajarish.

- name: Web serverlarni sozlash
  hosts: web
  become: true
  tasks:
    - name: nginx o‘rnatish
      ansible.builtin.apt:
        name: nginx
        state: present
        update_cache: true

    - name: Sayt konfiguratsiyasini joylash
      ansible.builtin.template:
        src: site.conf.j2
        dest: /etc/nginx/sites-enabled/site.conf
      notify: nginx’ni qayta yuklash

  handlers:
    - name: nginx’ni qayta yuklash
      ansible.builtin.service:
        name: nginx
        state: reloaded

Ishga tushirish: ansible-playbook -i inventory.ini site.yml. --check flagi hech narsani o‘zgartirmasdan nima o‘zgarishini ko‘rsatadi.

Rollar

Rol — bitta maqsad (masalan, «nginx» yoki «postgres») uchun vazifalar, shablonlar va o‘zgaruvchilarni qadoqlash usuli, ularni turli loyihalarda qayta ishlatish uchun.

Idempotentlik — asosiy xususiyat

Idempotentlik degani: qayta ishga tushirish xuddi shu natijani beradi va hech narsani buzmaydi. state: present vazifasi nginx yo‘q bo‘lsa o‘rnatadi, allaqachon o‘rnatilgan bo‘lsa hech narsa qilmaydi. Ansible hisobotda vazifalarni ok (allaqachon kerakli holatda) yoki changed (nimadir o‘zgartirildi) deb belgilaydi.

Shuning uchun playbook’ni muntazam ishga tushirish mumkin — serverlar etalondan «chetga chiqmagani»ni tekshirish sifatida.

Muhim: idempotentlikni Ansible o‘zi emas, modullar kafolatlaydi. shell yoki command orqali vazifalar har safar bajariladi, ular uchun shartlarni o‘zingiz yozishingiz kerak (creates, when, changed_when).

Ansible qanday rutinani olib tashlaydi

  • yangi serverni dastlabki sozlash: foydalanuvchilar, SSH kalitlari, firewall, yangilanishlar;
  • o‘nlab mashinalarda dasturlarni bir vaqtda o‘rnatish va yangilash;
  • nginx, PostgreSQL, systemd servis konfiguratsiyalarini shablonlardan tarqatish;
  • ilovani deploy qilish: kodni olish, yig‘ish, servisni qayta ishga tushirish;
  • ommaviy amallar: kalit yoki sertifikatni almashtirish, xavfsizlik patchi;
  • staging va production uchun bir xil muhit.

Ko‘p uchraydigan xatolar

  • Hammasi shell orqali. Idempotentlik va o‘qilishi yo‘qoladi. Avval mos modulni qidiring.
  • O‘zgaruvchilarda ochiq parollar. Ansible Vault yoki tashqi sirlar menejeridan foydalaning.
  • To‘g‘ridan-to‘g‘ri production’da ishga tushirish. Avval --check --diff va staging.
  • Ansible’dan keyin serverlarda qo‘lda o‘zgartirish. Keyingi ishga tushirish ularni qayta yozadi; har qanday o‘zgarishni playbook’ga kiriting.
  • Ulkan tekis playbook. Uni rollarga ajrating.

Ansible va Terraform: farqi nimada

TerraformAnsible
Asosiy vazifaInfratuzilma yaratish: serverlar, tarmoqlar, DNSServer ichidagilarni sozlash
YondashuvDeklarativ, state fayl bilanTartib bilan vazifalar, alohida state’siz
Qanday ishlaydiBulut API orqaliSSH orqali

Ular ko‘pincha birga ishlatiladi: Terraform serverlarni yaratadi, Ansible ularni sozlaydi.

Hujjatlar: docs.ansible.com.

Ko‘p beriladigan savollar

Ha, lekin ulanish oddiy SSH emas, odatda WinRM yoki Windows uchun OpenSSH orqali bo‘ladi va win_ prefiksli alohida modullar ishlatiladi. Aralash infratuzilma uchun bu ishlaydigan variant.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.