ansible.builtin.add_host – Add a host (and alternatively a group) to the ansible-playbook in-memory inventory
Note
This module is part of ansible-core and included in all Ansible installations. In most cases, you can use the short module name add_host even without specifying the collections: keyword. However, we recommend you use the FQCN for easy linking to the module documentation and to avoid conflicting with other collections that may have the same module name.
New in version 0.9: of ansible.builtin
Synopsis
- 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.
- This module is also supported for Windows targets.
Note
This module has a corresponding action plugin.
Parameters
| Parameter | Choices/Defaults | Comments |
|---|---|---|
| groups list / elements=string | The groups to add the hostname to. aliases: group, groupname | |
| name string / required | The hostname/ip of the host to add to the inventory, can include a colon and a port number. aliases: host, hostname |
Notes
Note
- This module bypasses the play host loop and only runs once for all the hosts in the play, if you need it to iterate use a
loopconstruct. If you need to dynamically add all hosts targeted by a playbook for later use, thegroup_bymodule is potentially a better choice. - The alias
hostof the parameternameis only available on Ansible 2.4 and newer. - Since Ansible 2.4, the
inventory_dirvariable is now set toNoneinstead of the ‘global inventory source’, because you can now have multiple sources. An example was added that shows how to partially restore the previous behaviour. - Windows targets are supported by this module.
- Though this module does not change the remote host, we do provide ‘changed’ status as it can be useful for those trying to track inventory changes.
See Also
See also
- ansible.builtin.group_by
-
The official documentation on the ansible.builtin.group_by module.
Examples
- name: Add host to group 'just_created' with variable foo=42
add_host:
name: '{{ ip_from_ec2 }}'
groups: just_created
foo: 42
- name: Add host to multiple groups
add_host:
hostname: '{{ new_ip }}'
groups:
- group1
- group2
- name: Add a host with a non-standard port local to your machines
add_host:
name: '{{ new_ip }}:{{ new_port }}'
- name: Add a host alias that we reach through a tunnel (Ansible 1.9 and older)
add_host:
hostname: '{{ new_ip }}'
ansible_ssh_host: '{{ inventory_hostname }}'
ansible_ssh_port: '{{ new_port }}'
- name: Add a host alias that we reach through a tunnel (Ansible 2.0 and newer)
add_host:
hostname: '{{ new_ip }}'
ansible_host: '{{ inventory_hostname }}'
ansible_port: '{{ new_port }}'
- name: Ensure inventory vars are set to the same value as the inventory_hostname has (close to pre Ansible 2.4 behaviour)
add_host:
hostname: charlie
inventory_dir: '{{ inventory_dir }}'
- name: Add all hosts running this playbook to the done group
add_host:
name: '{{ item }}'
groups: done
loop: "{{ ansible_play_hosts }}"
Authors
- Ansible Core Team
- Seth Vidal (@skvidal)
© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/add_host_module.html