Techniken zur Inventar-Konfiguration
Struktur und Syntax der Inventar-Datei
Ansible unterstützt mehrere Techniken zur Inventar-Konfiguration, um die Infrastruktur effizient zu organisieren und zu verwalten. Das Verständnis dieser Techniken ermöglicht eine präzise Hostverwaltung und Verbindungseinstellungen.
graph LR
A[Inventar-Konfiguration] --> B[Statisches Inventar]
A --> C[Dynamisches Inventar]
B --> D[INI-Format]
B --> E[YAML-Format]
C --> F[Skriptbasiertes Inventar]
Statische Inventar-Konfiguration
Inventar im INI-Stil
[webservers]
web1 ansible_host=192.168.1.100 ansible_user=ubuntu
web2 ansible_host=192.168.1.101 ansible_user=ubuntu
[databases]
db1 ansible_host=192.168.1.200 ansible_user=ubuntu
[production:children]
webservers
databases
Inventar im YAML-Stil
all:
hosts:
web1:
ansible_host: 192.168.1.100
ansible_user: ubuntu
db1:
ansible_host: 192.168.1.200
ansible_user: ubuntu
children:
webservers:
hosts:
web1:
databases:
hosts:
db1:
Konfiguration von Verbindungsparametern
Parameter |
Beschreibung |
Beispiel |
ansible_host |
IP-Adresse des Zielsystems |
192.168.1.100 |
ansible_user |
SSH-Benutzername |
ubuntu |
ansible_port |
Benutzerdefinierter SSH-Port |
22 |
ansible_ssh_private_key_file |
Pfad zur SSH-Schlüsseldatei |
/home/user/.ssh/id_rsa |
Erweiterte Gruppierungstechniken
[datacenter:children]
webservers
databases
[datacenter:vars]
ansible_connection=ssh
environment=production
Dynamische Inventar-Skripte
Dynamisches Inventar ermöglicht die programmatische Generierung von Hostlisten:
#!/usr/bin/env python3
import json
def get_inventory():
return {
'webservers': {
'hosts': ['web1', 'web2'],
'vars': {'http_port': 80}
}
}
print(json.dumps(get_inventory(), indent=2))
Dieser Ansatz bietet eine flexible und automatisierte Hostverwaltung für komplexe Infrastruktureumgebungen.