DevOps rolünde neden iki değişken klasörü var ve bunlar nelerdir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir DevOps rolünde, genellikle genel ve ortam (çevre) özel ayarları ayırmak için iki değişken klasörü kullanılır. Bu, yapılandırmaların esnekliğini, yeniden kullanılabilirliğini ve güvenliğini artırır.
İki ana klasör:
group_vars: Belirli bir envanter grubundaki tüm anahtarlara uygulanan değişkenleri içerir. Bu dosyalardan alınan değişkenler, dosya adıyla eşleşen gruba dahil edilen anahtarlara uygulanır (örneğin,group_vars/web_servers.yaml) veyagroup_vars/all.yamldosyasına (tüm anahtarlara uygulanır). Bu, sunucu grubu için ortak ayarların tanımlanması için kullanışlıdır (örneğin, ağ ayarları, kurulum yolları).host_vars: Bireysel anahtarlar için özel değişkenleri içerir. Bu dosyalardan alınan değişkenler yalnızca belirli bir anahtara uygulanır, dosya adıyla eşleşir (örneğin,host_vars/server1.example.com.yaml). Benzersiz anahtar ayarları için kullanılır (örneğin, belirli bir arayüzün IP adresleri, yazılım sürümleri, özel erişimler).
Ansible kullanırken dizin yapısına örnek:
# Değişkenlerle dizin yapısı
.
├── inventory # Envanter dosyası veya dizini
│ └── hosts.yaml
├── group_vars
│ ├── all.yaml # Tüm anahtarlar için değişkenler
│ └── web_servers.yaml # web_servers grubu için değişkenler
└── host_vars
├── server1.example.com.yaml # server1 anahtarı için değişkenler
└── server2.example.com.yaml # server2 anahtarı için değişkenler
Dosya içeriklerine örnek:
// group_vars/all.yaml
---
# Tüm anahtarlar için genel değişkenler
tz: "Europe/Moscow"
ntp_servers:
- 0.pool.ntp.org
- 1.pool.ntp.org
// group_vars/web_servers.yaml
---
# web_servers grubu için değişkenler
http_port: 80
https_port: 443
document_root: "/var/www/html"
// host_vars/server1.example.com.yaml
---
# server1 için özel değişkenler
external_ip: "192.168.1.100"
database_server: "db.example.com"
Bu ayrımın avantajları:
- Hiyerarşi ve öncelik: Değişkenlerin uygulanmasında net bir hiyerarşi sağlanır (host_vars, group_vars'dan daha yüksek önceliğe sahiptir; belirli bir grup için group_vars, group_vars/all'dan daha yüksek önceliğe sahiptir).
- Yeniden kullanılabilirlik: Genel ayarlar,
group_varsiçinde bir kez tanımlanabilir ve birden fazla anahtara uygulanabilir. - Okunabilirlik ve yönetilebilirlik: Yapılandırma daha anlaşılır ve bakımı kolay hale gelir, çünkü özel ve genel ayarlar ayrılmıştır.
- Güvenlik: Hassas ve özel veriler (örneğin, belirli bir anahtar veya parola)
host_varsiçinde saklanabilir ve gerekirse şifrelenebilir.
Diğer araçlar bağlamında (örneğin, .tfvars dosyalarıyla Terraform veya uygulama yapılandırma dosyaları), genel ve ortam/örnek özel değişkenlerin ayrımı ilkesi korunur, ancak dizin isimleri farklı olabilir. Örneğin, Terraform'da genellikle terraform.tfvars (genel varsayılanlar için) ve dev.tfvars, stage.tfvars, prod.tfvars gibi ortamlara özgü dosyalar kullanılır.
Ana fikir, değişmeyen "genel" parametreleri ve değişen "çevresel" veya "anahtar" parametreleri ayırmak, yapılandırma yönetimini kolaylaştırmaktır.