Sobes.tech
Middle

Zašto u ulozi DevOps-a postoje dve fascikle sa promenljivima i koje su to?

sobes.tech АИ

Одговор од АИ

Као 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.

Основна идеја — раздвојити неизменљиве "опште" параметре од променљивих "окружних" или "хостових", како би се поједностављено управљало конфигурацијом.