mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 10:00:01 -03:30
Merge pull request #1097 from rbywater/feature/preferipv4
Add ability to select to prefer IPv4 addresses for ansible_ssh_host
This commit is contained in:
commit
772fcc9149
@ -1822,7 +1822,7 @@ class RunInventoryUpdate(BaseTask):
|
||||
cp.set(section, 'ssl_verify', "false")
|
||||
|
||||
cloudforms_opts = dict(inventory_update.source_vars_dict.items())
|
||||
for opt in ['version', 'purge_actions', 'clean_group_keys', 'nest_tags', 'suffix']:
|
||||
for opt in ['version', 'purge_actions', 'clean_group_keys', 'nest_tags', 'suffix', 'prefer_ipv4']:
|
||||
if opt in cloudforms_opts:
|
||||
cp.set(section, opt, cloudforms_opts[opt])
|
||||
|
||||
|
||||
@ -1757,6 +1757,8 @@ class TestInventoryUpdateCredentials(TestJobExecution):
|
||||
self.instance.credential, 'password'
|
||||
)
|
||||
|
||||
self.instance.source_vars = '{"prefer_ipv4": True}'
|
||||
|
||||
def run_pexpect_side_effect(*args, **kwargs):
|
||||
args, cwd, env, stdout = args
|
||||
config = ConfigParser.ConfigParser()
|
||||
@ -1765,6 +1767,7 @@ class TestInventoryUpdateCredentials(TestJobExecution):
|
||||
assert config.get('cloudforms', 'username') == 'bob'
|
||||
assert config.get('cloudforms', 'password') == 'secret'
|
||||
assert config.get('cloudforms', 'ssl_verify') == 'false'
|
||||
assert config.get('cloudforms', 'prefer_ipv4') == 'True'
|
||||
|
||||
cache_path = config.get('cache', 'path')
|
||||
assert cache_path.startswith(env['AWX_PRIVATE_DATA_DIR'])
|
||||
|
||||
@ -31,6 +31,9 @@ nest_tags = False
|
||||
# Note: This suffix *must* include the leading '.' as it is appended to the hostname as is
|
||||
# suffix = .example.org
|
||||
|
||||
# If true, will try and use an IPv4 address for the ansible_ssh_host rather than just the first IP address in the list
|
||||
prefer_ipv4 = False
|
||||
|
||||
[cache]
|
||||
|
||||
# Maximum time to trust the cache in seconds
|
||||
|
||||
@ -182,6 +182,11 @@ class CloudFormsInventory(object):
|
||||
else:
|
||||
self.cloudforms_suffix = None
|
||||
|
||||
if config.has_option('cloudforms', 'prefer_ipv4'):
|
||||
self.cloudforms_prefer_ipv4 = config.getboolean('cloudforms', 'prefer_ipv4')
|
||||
else:
|
||||
self.cloudforms_prefer_ipv4 = False
|
||||
|
||||
# Ansible related
|
||||
try:
|
||||
group_patterns = config.get('ansible', 'group_patterns')
|
||||
@ -362,7 +367,15 @@ class CloudFormsInventory(object):
|
||||
|
||||
# Set ansible_ssh_host to the first available ip address
|
||||
if 'ipaddresses' in host and host['ipaddresses'] and isinstance(host['ipaddresses'], list):
|
||||
host['ansible_ssh_host'] = host['ipaddresses'][0]
|
||||
# If no preference for IPv4, just use the first entry
|
||||
if not self.cloudforms_prefer_ipv4:
|
||||
host['ansible_ssh_host'] = host['ipaddresses'][0]
|
||||
else:
|
||||
# Before we search for an IPv4 address, set using the first entry in case we don't find any
|
||||
host['ansible_ssh_host'] = host['ipaddresses'][0]
|
||||
for currenthost in host['ipaddresses']:
|
||||
if '.' in currenthost:
|
||||
host['ansible_ssh_host'] = currenthost
|
||||
|
||||
# Create additional groups
|
||||
for key in ('location', 'type', 'vendor'):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user