Ինչու՞ 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:
Հիմնական գաղափարը՝ բաժանել անփոփոխ "ընդհանուր" պարամետրերը փոփոխական "միջավայրային" կամ "հոստային" պարամետրերից, որպեսզի կառավարումը պարզ լինի: