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:

Հիմնական գաղափարը՝ բաժանել անփոփոխ "ընդհանուր" պարամետրերը փոփոխական "միջավայրային" կամ "հոստային" պարամետրերից, որպեսզի կառավարումը պարզ լինի: