რატომ არის DevOps როლში საჭირო ორი ცვლადების საქაღალდე და რა არის ისინი?
sobes.tech AI
პასუხი AI-სგან
როგორც DevOps, ჩვეულებრივ გამოიყენება ორი მყარი ფოლდერი ცვლადებისთვის, რომლებიც გამოიყენება საერთო და გარემოს (სივრცის) სპეციფიკური კონფიგურაციების განყოფილებისთვის. ეს ზრდის მოქნილობას, გადამეორებადობას და უსაფრთხოებას.
ორი ძირითადი ფოლდერი:
group_vars: შეიცავს ცვლადებს, რომლებიც ვრცელდება ყველა ჰოსტზე კონკრეტულ ინვენტარ ჯგუფში. ამ ფაილებიდან ცვლადები ვრცელდება იმ ჰოსტებზე, რომლებიც შედიან ამ ჯგუფში, რომლის სახელიც ემთხვევა ფაილის სახელწოდებას (მაგალითად,group_vars/web_servers.yaml) ან ფაილშიgroup_vars/all.yaml(მონაწილეობს ყველა ჰოსტზე). ეს მოსახერხებელია საერთო პარამეტრების განსაზღვრისთვის სერვერულ ჯგუფისთვის (მაგალითად, ქსელური პარამეტრები, ინსტალაციის გზები).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.
ძირითადი იდეა — განყოფილება უცვლელი "საერთო" პარამეტრებისა და ცვლადი "გარემოს" ან "ჰოსტის" პარამეტრების შორის, რათა მართვა მარტივია: