diff --git a/contrib/inventory/cloudforms.ini b/contrib/inventory/cloudforms.ini index 142514a65e..dc055c1fb7 100644 --- a/contrib/inventory/cloudforms.ini +++ b/contrib/inventory/cloudforms.ini @@ -27,6 +27,10 @@ clean_group_keys = True # Explode tags into nested groups / subgroups nest_tags = False +# If set, ensure host name are suffixed with this value +# Note: This suffix *must* include the leading '.' as it is appended to the hostname as is +# suffix = .example.org + [cache] # Maximum time to trust the cache in seconds diff --git a/contrib/inventory/cloudforms.py b/contrib/inventory/cloudforms.py index ecf10a4119..82fbb6a50a 100755 --- a/contrib/inventory/cloudforms.py +++ b/contrib/inventory/cloudforms.py @@ -29,6 +29,7 @@ from time import time import requests from requests.auth import HTTPBasicAuth import warnings +from ansible.errors import AnsibleError try: import json @@ -174,6 +175,13 @@ class CloudFormsInventory(object): else: self.cloudforms_nest_tags = False + if config.has_option('cloudforms', 'suffix'): + self.cloudforms_suffix = config.get('cloudforms', 'suffix') + if self.cloudforms_suffix[0] != '.': + raise AnsibleError('Leading fullstop is required for Cloudforms suffix') + else: + self.cloudforms_suffix = None + # Ansible related try: group_patterns = config.get('ansible', 'group_patterns') @@ -280,6 +288,9 @@ class CloudFormsInventory(object): print("Updating cache...") for host in self._get_hosts(): + if self.cloudforms_suffix is not None and not host['name'].endswith(self.cloudforms_suffix): + host['name'] = host['name'] + self.cloudforms_suffix + # Ignore VMs that are not powered on if host['power_state'] != 'on': if self.args.debug: