Sobes.tech
Middle

რატომ არის DevOps როლში საჭირო ორი ცვლადების საქაღალდე და რა არის ისინი?

sobes.tech AI

პასუხი AI-სგან

როგორც DevOps, ჩვეულებრივ გამოიყენება ორი მყარი ფოლდერი ცვლადებისთვის, რომლებიც გამოიყენება საერთო და გარემოს (სივრცის) სპეციფიკური კონფიგურაციების განყოფილებისთვის. ეს ზრდის მოქნილობას, გადამეორებადობას და უსაფრთხოებას.

ორი ძირითადი ფოლდერი:

  1. group_vars: შეიცავს ცვლადებს, რომლებიც ვრცელდება ყველა ჰოსტზე კონკრეტულ ინვენტარ ჯგუფში. ამ ფაილებიდან ცვლადები ვრცელდება იმ ჰოსტებზე, რომლებიც შედიან ამ ჯგუფში, რომლის სახელიც ემთხვევა ფაილის სახელწოდებას (მაგალითად, group_vars/web_servers.yaml) ან ფაილში group_vars/all.yaml (მონაწილეობს ყველა ჰოსტზე). ეს მოსახერხებელია საერთო პარამეტრების განსაზღვრისთვის სერვერულ ჯგუფისთვის (მაგალითად, ქსელური პარამეტრები, ინსტალაციის გზები).
  2. host_vars: შეიცავს ცვლადებს, რომლებიც სპეციფიკურია კონკრეტული ჰოსტისთვის. ამ ფაილებიდან ცვლადები ვრცელდება მხოლოდ კონკრეტულ ჰოსტზე, რომლის სახელიც ემთხვევა ფაილის სახელწოდებას (მაგალითად, host_vars/server1.example.com.yaml). გამოიყენება უნიკალური კონფიგურაციებისათვის (მაგალითად, კონკრეტული ინტერფეისის IP-ები, პროგრამული უზრუნველყოფის ვერსიები, სპეციფიკური წვდომები).

მაგალითი დირექტორიის სტრუქტურის გამოყენებით Ansible:

# ცვლადების დირექტორიის სტრუქტურა
.
├── inventory  # ინვენტარის ფაილი ან დირექტორია
│   └── hosts.yaml
├── group_vars
│   ├── all.yaml       # ყველა ჰოსტის საერთო ცვლადები
│   └── web_servers.yaml # web_servers ჯგუფის ცვლადები
└── host_vars
    ├── server1.example.com.yaml # server1 ჰოსტის ცვლადები
    └── server2.example.com.yaml # server2 ჰოსტის ცვლადები

ფაილების შიგთავსის მაგალითი:

// group_vars/all.yaml
---
# საერთო ცვლადები ყველა ჰოსტისთვის
tz: "Europe/Moscow"
ntp_servers:
  - 0.pool.ntp.org
  - 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# ცვლადები web_servers ჯგუფისთვის
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# უნიკალური ცვლადები server1-ისთვის
external_ip: "192.168.1.100"
database_server: "db.example.com"

ამგვარი განყოფილების უპირატესობები:

  • ჰიერქია და პრიორიტეტი: უზრუნველყოფს ცვლადების გამოყენების მკაფიო ჰიერქიას (host_vars აქვს უფრო მაღალი პრიორიტეტი, ვიდრე group_vars, ხოლო კონკრეტული ჯგუფის group_vars აქვს უფრო მაღალი პრიორიტეტი, ვიდრე group_vars/all).
  • გადამეორებადი გამოყენება: საერთო პარამეტრები შეიძლება ერთჯერადი იყოს group_vars-ში და გამოყენებული იყოს მრავალი ჰოსტისათვის.
  • კითხულობა და მართვადობა: კონფიგურაცია უფრო გასაგები და ადვილად შენარჩუნებადი ხდება, რადგან სპეციფიკური და საერთო პარამეტრები გამოყოფილია.
  • უსაფრთხოება: მგრძნობიარე სპეციფიკური მონაცემები (მაგალითად, პაროლები ან გასაღებები კონკრეტული ჰოსტისათვის) შეიძლება იყოს შენახული host_vars-ში და იყოს შიფრირებული საჭიროების შემთხვევაში.

სხვა ინსტრუმენტების კონტექსტში (მაგალითად, Terraform-ის .tfvars ფაილები ან აპლიკაციების კონფიგურაციის ფაილები) ზოგადი და სპეციფიკური გარემოს/ინსტანციის ცვლადების განყოფილების პრინციპი შენარჩუნებულია, მიუხედავად იმისა, რომ დირექტორიის სახელები შეიძლება განსხვავდებოდეს. მაგალითად, Terraform-ში ხშირად გამოიყენება terraform.tfvars ფაილები (საერთო დეფოლტული მნიშვნელობებისთვის) და სპეციფიკური ფაილები გარემოსთვის, როგორიცაა dev.tfvars, stage.tfvars, prod.tfvars.

ძირითადი იდეა — განყოფილება უცვლელი "საერთო" პარამეტრებისა და ცვლადი "გარემოს" ან "ჰოსტის" პარამეტრების შორის, რათა მართვა მარტივია: