Skip to content

Commit e17aa5e

Browse files
committed
Add the option to use out of band ip as primary ip
1 parent 775f871 commit e17aa5e

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

plugins/inventory/nb_inventory.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,10 @@
237237
type: boolean
238238
default: True
239239
version_added: "3.6.0"
240+
oob_ip_as_primary:
241+
description: Use out of band IP as `ansible host`
242+
type: boolean
243+
default: False
240244
"""
241245

242246
EXAMPLES = """
@@ -812,6 +816,13 @@ def extract_primary_ip6(self, host):
812816
except Exception:
813817
return
814818

819+
def extract_oob_ip(self, host):
820+
try:
821+
address = host["oob_ip"]["address"]
822+
return str(ip_interface(address).ip)
823+
except Exception:
824+
return
825+
815826
def extract_tags(self, host):
816827
try:
817828
tag_zero = host["tags"][0]
@@ -1844,6 +1855,10 @@ def _fill_host_variables(self, host, hostname):
18441855
if extracted_primary_ip6:
18451856
self.inventory.set_variable(hostname, "primary_ip6", extracted_primary_ip6)
18461857

1858+
extracted_oob_ip = self.extract_oob_ip(host=host)
1859+
if extracted_oob_ip and self.oob_ip_as_primary_ip:
1860+
self.inventory.set_variable(hostname, "ansible_host", extracted_oob_ip)
1861+
18471862
for attribute, extractor in self.group_extractors.items():
18481863
extracted_value = extractor(host)
18491864

@@ -2034,6 +2049,7 @@ def parse(self, inventory, loader, path, cache=True):
20342049
self.cert = self.get_option("cert")
20352050
self.key = self.get_option("key")
20362051
self.ca_path = self.get_option("ca_path")
2052+
self.oob_ip_as_primary_ip = self.get_option("oob_ip_as_primary_ip")
20372053

20382054
self._set_authorization()
20392055

0 commit comments

Comments
 (0)