mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-04 07:30:20 -07:00
[PR #9952/1243846c backport][stable-10] improve ansible_host in proxmox inventory plugin (#10003)
improve ansible_host in proxmox inventory plugin (#9952)
* improve ansible_host in proxmox inventory plugin
I had this issue myself and found out there was already an issue thread:
https://github.com/ansible-collections/community.general/issues/5906
this fixes the issue for hope we can all benefit after this gets merged
* f string styling
* add log line for the successful address selection
* remove white space
* add changelog: 9952-proxmox-inventory-plugin-improve-ansible_host.yml
* Update changelogs/fragments/9952-proxmox-inventory-plugin-improve-ansible_host.yml
Co-authored-by: Felix Fontein <felix@fontein.de>
---------
Co-authored-by: Felix Fontein <felix@fontein.de>
(cherry picked from commit 1243846c3a
)
Co-authored-by: Stein van Broekhoven <stein@aapjeisbaas.nl>
This commit is contained in:
parent
f3a12a9e78
commit
1d7aad9b46
2 changed files with 18 additions and 1 deletions
|
@ -366,11 +366,26 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable):
|
|||
def _get_node_ip(self, node):
|
||||
ret = self._get_json(f"{self.proxmox_url}/api2/json/nodes/{node}/network")
|
||||
|
||||
# sort interface by iface name to make selection as stable as possible
|
||||
ret.sort(key=lambda x: x['iface'])
|
||||
|
||||
for iface in ret:
|
||||
try:
|
||||
# only process interfaces adhering to these rules
|
||||
if 'active' not in iface:
|
||||
self.display.vvv(f"Interface {iface['iface']} on node {node} does not have an active state")
|
||||
continue
|
||||
if 'address' not in iface:
|
||||
self.display.vvv(f"Interface {iface['iface']} on node {node} does not have an address")
|
||||
continue
|
||||
if 'gateway' not in iface:
|
||||
self.display.vvv(f"Interface {iface['iface']} on node {node} does not have a gateway")
|
||||
continue
|
||||
self.display.vv(f"Using interface {iface['iface']} on node {node} with address {iface['address']} as node ip for ansible_host")
|
||||
return iface['address']
|
||||
except Exception:
|
||||
return None
|
||||
continue
|
||||
return None
|
||||
|
||||
def _get_lxc_interfaces(self, properties, node, vmid):
|
||||
status_key = self._fact('status')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue