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.

Асноўная ідэя — раздзяліць нязменныя "агульныя" параметры ад зменных "акружэння" або "хостовых", каб спрасціць кіраванне канфігурацыяй.