# zabbix_host – Create/update/delete Zabbix hosts

- Synopsis

- Requirements

- Parameters

- Notes

- Examples

- Status

## Synopsis

- This module allows you to create, modify and delete Zabbix host entries and associated group and template data.

## Requirements

The below requirements are needed on the host that executes this module.

- python >= 2.6

- zabbix-api >= 0.5.4

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
ca_cert string added in 2.5 |  | Required certificate issuer. Works only with >= Zabbix 3.0 aliases: tls_issuer
description string added in 2.5 |  | Description of the host in Zabbix.

force
boolean

Choices:
- no
- yes ←

Overwrite the host configuration, even if already present.

host_groups list / elements=string |  | List of host groups the host is part of.
host_name string / required |  | Name of the host in Zabbix. host_name is the unique identifier used and cannot be updated using this module.
http_login_password string |  | Basic Auth password
http_login_user string / required |  | Basic Auth login
interfaces list / elements=dictionary | Default: [] | List of interfaces to be created for the host (see example below). For more information, review host interface documentation at https://www.zabbix.com/documentation/4.0/manual/api/reference/hostinterface/object

bulk
integer

Choices:
- 0
- 1 ←

Whether to use bulk SNMP requests.
0 (don't use bulk requests), 1 (use bulk requests)

| dns string | Default: "" | DNS name of the host interface. Required if useip=0.
| ip string | Default: "" | IP address used by host interface. Required if useip=1.

main
integer

Choices:
- 0 ←
- 1

Whether the interface is used as default.
If multiple interfaces with the same type are provided, only one can be default.
0 (not default), 1 (default)

| port string |  | Port used by host interface. If not specified, default port for each type of interface is used 10050 if type='agent' 161 if type='snmp' 623 if type='ipmi' 12345 if type='jmx'

type
- / required

Choices:
- agent
- snmp
- ipmi
- jmx

Interface type to add
Numerical values are also accepted for interface type
1 = agent
2 = snmp
3 = ipmi
4 = jmx

useip
integer

Choices:
- 0 ←
- 1

Connect to host interface with IP address instead of DNS name.
0 (don't use ip), 1 (use ip)

inventory_mode
string

Choices:
- automatic
- manual
- disabled

Configure the inventory mode.

inventory_zabbix dictionary added in 2.5 |  | Add Facts for a zabbix inventory (e.g. Tag) (see example below). Please review the interface documentation for more information on the supported properties https://www.zabbix.com/documentation/3.2/manual/api/reference/host/object#host_inventory

ipmi_authtype
integer
added in 2.5

IPMI authentication algorithm.
Please review the Host object documentation for more information on the supported properties
https://www.zabbix.com/documentation/3.4/manual/api/reference/host/object
Possible values are, `0` (none), `1` (MD2), `2` (MD5), `4` (straight), `5` (OEM), `6` (RMCP+), with -1 being the API default.
Please note that the Zabbix API will treat absent settings as default when updating any of the ipmi_-options; this means that if you attempt to set any of the four options individually, the rest will be reset to default values.

ipmi_password string added in 2.5 |  | IPMI password. also see the last note in the ipmi_authtype documentation

ipmi_privilege
integer
added in 2.5

IPMI privilege level.
Please review the Host object documentation for more information on the supported properties
https://www.zabbix.com/documentation/3.4/manual/api/reference/host/object
Possible values are `1` (callback), `2` (user), `3` (operator), `4` (admin), `5` (OEM), with `2` being the API default.
also see the last note in the ipmi_authtype documentation

ipmi_username string added in 2.5 |  | IPMI username. also see the last note in the ipmi_authtype documentation
link_templates list / elements=string |  | List of templates linked to the host.
login_password string / required |  | Zabbix user password.
login_user string / required |  | Zabbix user name.
proxy string |  | The name of the Zabbix proxy to be used.
server_url string / required |  | URL of Zabbix server, with protocol (http or https). `url` is an alias for `server_url`. aliases: url

state
string

Choices:
- present ←
- absent

State of the host.
On `present`, it will create if host does not exist or update the host if the associated data is different.
On `absent` will remove a host if it exists.

status
string

Choices:
- enabled ←
- disabled

Monitoring status of the host.

timeout integer | Default: 10 | The timeout of API request (seconds).
tls_accept integer added in 2.5 | Default: 1 | Specifies what types of connections are allowed for incoming connections. The tls_accept parameter accepts values of 1 to 7 Possible values, 1 (no encryption), 2 (PSK), 4 (certificate). Values can be combined. Works only with >= Zabbix 3.0
tls_connect integer added in 2.5 | Default: 1 | Specifies what encryption to use for outgoing connections. Possible values, 1 (no encryption), 2 (PSK), 4 (certificate). Works only with >= Zabbix 3.0
tls_psk string added in 2.5 |  | PSK value is a hard to guess string of hexadecimal digits. The preshared key, at least 32 hex digits. Required if either tls_connect or tls_accept has PSK enabled. Works only with >= Zabbix 3.0
tls_psk_identity string added in 2.5 |  | It is a unique name by which this specific PSK is referred to by Zabbix components Do not put sensitive information in the PSK identity string, it is transmitted over the network unencrypted. Works only with >= Zabbix 3.0
tls_subject string added in 2.5 |  | Required certificate subject. Works only with >= Zabbix 3.0

validate_certs
boolean
added in 2.5

Choices:
- no
- yes ←

If set to False, SSL certificates will not be validated. This should only be used on personally controlled sites using self-signed certificates.

visible_name string |  | Visible name of the host in Zabbix.

## Notes

Note

- If you use login_password=zabbix, the word “zabbix” is replaced by “****” in all module output, because login_password uses `no_log`. See this FAQ for more information.

## Examples

    - name: Create a new host or update an existing host's info
      local_action:
        module: zabbix_host
        server_url: http://monitor.example.com
        login_user: username
        login_password: password
        host_name: ExampleHost
        visible_name: ExampleName
        description: My ExampleHost Description
        host_groups:
          - Example group1
          - Example group2
        link_templates:
          - Example template1
          - Example template2
        status: enabled
        state: present
        inventory_mode: manual
        inventory_zabbix:
          tag: "{{ your_tag }}"
          alias: "{{ your_alias }}"
          notes: "Special Informations: {{ your_informations | default('None') }}"
          location: "{{ your_location }}"
          site_rack: "{{ your_site_rack }}"
          os: "{{ your_os }}"
          hardware: "{{ your_hardware }}"
        ipmi_authtype: 2
        ipmi_privilege: 4
        ipmi_username: username
        ipmi_password: password
        interfaces:
          - type: 1
            main: 1
            useip: 1
            ip: 10.xx.xx.xx
            dns: ""
            port: 10050
          - type: 4
            main: 1
            useip: 1
            ip: 10.xx.xx.xx
            dns: ""
            port: 12345
        proxy: a.zabbix.proxy
    - name: Update an existing host's TLS settings
      local_action:
        module: zabbix_host
        server_url: http://monitor.example.com
        login_user: username
        login_password: password
        host_name: ExampleHost
        visible_name: ExampleName
        host_groups:
          - Example group1
        tls_psk_identity: test
        tls_connect: 2
        tls_psk: 123456789abcdef123456789abcdef12

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]

- This module is maintained by the Ansible Community. [community]

### Authors

- Cove (@cove)

- Tony Minfei Ding (!UNKNOWN)

- Harrison Gu (@harrisongu)

- Werner Dijkerman (@dj-wasabi)

- Eike Frost (@eikef)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.