add the ability to take variables in the add_host module, and be willing to parse a host:port hostname handed to add_host

pull/2104/head
Rob Parrott 12 years ago
parent c000bd846b
commit ef17fc9f20

@ -48,9 +48,22 @@ class ActionModule(object):
result = {'changed': True}
new_host = Host(args['hostname'])
# Parse out any hostname:port patterns
new_hostname = args['hostname']
if ":" in new_hostname:
new_hostname, new_port = new_hostname.split(":")
args['ansible_ssh_port'] = new_port
# create host and get inventory
new_host = Host(new_hostname)
inventory = self.runner.inventory
# Add any variables to the new_host
for k in args.keys():
if k != 'hostname' and k != 'groupname':
new_host.set_variable(k, args[k])
# add the new host to the 'all' group
allgroup = inventory.get_group('all')
allgroup.add_host(new_host)

@ -5,13 +5,14 @@ DOCUMENTATION = '''
module: add_host
short_description: add a host (and alternatively a group) to the ansible-playbook in-memory inventory
description:
- Use variables to create new hosts and groups in inventory for use in later plays of the same playbook
- Use variables to create new hosts and groups in inventory for use in later plays of the same playbook.
Takes variables so you can define the new hosts more fully.
version_added: 0.9
options:
hostname:
description:
- The hostname/ip of the host to add to the inventory
required: true
required: true
groupname:
description:
- The groupname to add the hostname to.
@ -20,4 +21,6 @@ author: Seth Vidal
examples:
- description: add host to group 'just_created'
code: add_host hostname=${ip_from_ec2create} groupname=just_created
- description add a host with a non-standard port local to your machines
code: add_host hostname='${new_ip}:${new_port}' ansible_ssh_port='${new_port}' ansible_ssh_host='${new_ip}' groupname=cloud_hosts
'''
Loading…
Cancel
Save