]> Frank Brehm's Git Trees - pixelpark/create-terraform.git/commitdiff
Updating README.md
authorFrank Brehm <frank.brehm@pixelpark.com>
Thu, 23 Sep 2021 12:47:06 +0000 (14:47 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Thu, 23 Sep 2021 12:47:06 +0000 (14:47 +0200)
README.md
lib/cr_tf/terraform/interface.py

index c7dfa0e41044a59754222ca6e2a3a3a4caf3179d..1cc9a52cd3d210244628f378f87be85c426c1bd3 100644 (file)
--- a/README.md
+++ b/README.md
@@ -780,6 +780,13 @@ Vorgabewert: _timeout:1 attempts:2_
 
 Die nachfolgenden Parameter können ausschließlich pro VM vergeben werden.
 
+#### name
+
+Der eindeutige Host-Name der VM.
+
+Dieser ist auch der FQDN der Adresse des ersten Netzwerk-Interfaces, falls man diesem
+keinen anderslautenden FQDN zuweist.
+
 #### interfaces
 
 In diesem Konfigurationspunkt werden die Netzwerkschnittstellen der VM und deren darauf
@@ -796,8 +803,79 @@ erfolgen.
 
   Die IPv6-Adresse ist immer _optional_.
 
-* Das Netzwerk in VSphere, die IPv4-Netzmaske und das IPv4
+* Das Netzwerk in VSphere, die IPv4-Netzmaske und das IPv4-Gateway werden durch das Skript
+  ermittelt, wenn sie nicht vorgegeben werden.
+
+  Voraussetzung dafür ist, dass die Namen der Netzwerke in VSphere konsistent vergeben
+  wurden. Diese **müssen** sich vom IPv4-Netzwerk ableiten, das darauf angelegt ist.
+  Der Name eines Netzwerks muss die Form `NETADRESSE_NETZMASKE` haben. Wenn es zum Beispiel
+  das Netz 192.168.101.128/25 sein soll, dann muss der Name des Netzwerkes `192.168.101.128_25`
+  lauten. Es von Seiten der VSPhere-Admin ist peinlich darauf zu achten, dass es keine
+  Überschneidungen geben darf, sonst landen möglicherweise VMs in falschen Netzen.
+
+##### `address_v4`
+
+Beschreibt die IPv4-Adresse des Interfaces (ohne Netzmaske). Das ist eine **Pflichtangabe**,
+und darf auch nur ein mal pro Interface vergeben werden.
+
+Wenn keine separate IPv4-Netzmaske und kein separates IPv4-Gateway angegeben werden, werden
+diese aus den (hoffentlich konsistenten) Name der vorhandenen Netzwerke ermittelt.
+
+##### `address_v6`
+
+Beschreibt die optionale IPv6-Adresse (ohne Netzmaske). Sie darf nur einmal vergeben werden.
+
+Wenn eine IPv6-Adresse angegeben wird, dann **müssen** auch die IPv6-Netzmaske und das
+IPv6-Gateway angegeben werden.
+
+##### `address`
+
+In Abhängigkeit von der Art der hier übergebenen Adresse wird damit entweder die IPv4-
+oder die IPv6-Adresse gesetzt.
+
+Vorsicht: Wenn gleichzeitig mit `address_v4`oder `address_v6` eine Adresse vergeben
+wird, dann hat diese Vorragng vor der `address`-Angabe.
+
+##### fqdn
+
+Damit kann der FQDN der IP-Adresse unabhängig vom Hostnamen festgelegt werden.
+
+Für das erste Interface sollte er nicht festgelegt werden, damit wird automatisch der
+Hostname als FQDN der Adresse genommen.
+
+Für alle anderen Interfaces sollte ein anderer, eindeutiger FQDN festgelegt werden.
+
+##### `netmask_v4`
+
+Das ist die Netzmaske in der CIDR-Schreibweise, also eine Integer-Zahl zwischen 0 und 32.
+
+Wenn sie nicht übergeben wird, wird sie aus dem Namen des Netzwerkes ermittelt.
+
+##### `netmask_v6`
+
+Das ist die Netzmaske in der CIDR-Schreibweise, also eine Integer-Zahl zwischen 0 und 128.
+
+Wenn eine IPv6-Adresse angegeben wird, dann **muss** die Netzmaske mit angegeben werden.
+
+##### `gateway_v4`
+
+Das ist die Adresse des IPv4-Gateways.
+
+Wenn sie nicht übergeben wird, wird sie aus dem Namen des Netzwerkes ermittelt.
+
+##### `gateway_v6`
+
+Das ist die Adresse des IPv6-Gateways.
+
+Wenn eine IPv6-Adresse angegeben wird, dann **muss** das Gateway mit angegeben werden.
+
+##### `network`
+
+Wenn man nicht darauf vertraut, dass der Name des richtigen Netzwerkes automatisch
+ermittelt wird, dann kann man diesen hiermit übergeben.
 
+Das ist insbesondere dann nützlich, wenn aus unerfindlichen Gründen inkonsistente Namen
+für Netzwerke im VSPhere existieren (was auch tatsächlich schon mal vorkam).
 
 ## Ausführung von Terraform
 
index de598bdbc1e535732730738b86847c3845e08d24..8a8cc445ef3a59b503cd24f920f5f35371426a58 100644 (file)
@@ -54,7 +54,7 @@ class TerraformInterface(FbBaseObject):
     # -------------------------------------------------------------------------
     def __init__(
         self, appname=None, verbose=0, version=__version__, base_dir=None, initialized=False,
-            address_v4=None, address_v6=None, fqdn=None, network=None, ipv4_primary=False,
+            address_v4=None, address_v6=None, fqdn=None, network=None, ipv4_primary=True,
             gateway_v4=None, gateway_v6=None, netmask_v4=None, netmask_v6=None):
 
         self._address_v4 = None
@@ -371,7 +371,7 @@ class TerraformInterface(FbBaseObject):
         interface = cls(appname=appname, verbose=verbose, base_dir=base_dir)
         interface.initialized = False
 
-        for key in if_def.keys():
+        for key in sorted(if_def.keys(), key=str.lower):
 
             val = if_def[key]