Zašto u ulozi DevOps-a postoje dve fascikle sa promenljivima i koje su to?
sobes.tech АИ
Одговор од АИ
Као 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.
Основна идеја — раздвојити неизменљиве "опште" параметре од променљивих "окружних" или "хостових", како би се поједностављено управљало конфигурацијом.