From 6c515d18190e44f31081e2e0a7a046716b0e4190 Mon Sep 17 00:00:00 2001 From: Frank Brehm Date: Thu, 23 Sep 2021 14:47:06 +0200 Subject: [PATCH] Updating README.md --- README.md | 80 +++++++++++++++++++++++++++++++- lib/cr_tf/terraform/interface.py | 4 +- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c7dfa0e..1cc9a52 100644 --- 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 diff --git a/lib/cr_tf/terraform/interface.py b/lib/cr_tf/terraform/interface.py index de598bd..8a8cc44 100644 --- a/lib/cr_tf/terraform/interface.py +++ b/lib/cr_tf/terraform/interface.py @@ -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] -- 2.39.5