Forum: PC Hard- und Software Linux: CFG Dateien mit Variablen befüllen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Rene K. (xdraconix)


Lesenswert?

Ich habe da eine eher grundsätzliche Frage:

Ich habe auf einem Rechner mehrere Server laufen: DHCP,BIND,Apache,MySQL 
etc...

Momentan befindet sich der Rechner nur im Test und somit in einem 
eigenen Subnetz. Um jetzt gewisse Subnetze oder den Domain Name 
umzustellen muss ich jedes mal alle Config Dateien durchgehen und dies 
händisch machen.

Frage:

ist es unter Linux möglich eine globale Systemvariable zu setzen, welche 
dann in den einzelnen Configdateien automatisch gesetzt werden?

z.b.
1
// Globale Variable:
2
IP_SUBNET1="192.168.168.";
3
4
5
// Configdatei:
6
addresses: [$IP_SUBNET1.0/24]

Ist dies in irgendeiner Art möglich?

von Andreas B. (bitverdreher)


Lesenswert?

Nein

von Rene K. (xdraconix)


Lesenswert?

Andreas B. schrieb:
> Nein

Kurz und prägnant :-D

Okay danke, schade.

von abc (Gast)


Lesenswert?

Schreib ein Bashscript was die Dateien mit sed für dich manipuliert

von Yalu X. (yalu) (Moderator)


Lesenswert?

Du könntest für jede betroffene Config-Datei ein Template anlegen, das 
an den Stellen, die variabel sein sollen, Platzhalter enthält. Die 
eigentlichen Config-Dateien werden daraus durch sed oder einen 
Makroprozessor wie bspw. m4 generiert. Jedesmal, wenn du die 
Gesamtkonfiguration ändern möchtest, rufst du ein Shellskript mit einer 
Liste von Key-Value-Paaren auf, das sed bzw. den Makroprozessor auf alle 
Template-Dateien anwendet.

Edit:

Anstatt beim Umkonfigurieren das Skript manuell aufzurufen, köntest du 
die Templates auch automatisch beim Zugriff durch sed bzw. m4 schleusen 
lassen, indem du auf /etc ein Filesystem wie dieses mountest:

  https://github.com/thkala/fuseflt

Das käme deiner Vorstellung wahrscheinlich am nächsten, ist aber 
vielleicht etwas mit Kanonen auf Spatzen geschossen.

End Edit.

Alternativ könntest du für jede Config-Datei mehrere Instanzen 
vorhalten, die sich an den gewünschten Stellen unterscheiden. Die 
eigentliche Config-Dateien sind dann symbolische Links, die auf jeweils 
eine dieser Instanzen zeigen und über ein Skript umgeschaltet werden 
können. Diese Methode hat im Vergleich zur oben beschriebenen allerdings 
den Nachteil, dass Änderungen in den Config-Dateien immer in allen 
Instanzen vorgenommen werden müssen.

: Bearbeitet durch Moderator
von quotendepp (Gast)


Lesenswert?

das schreit nach ansible

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.