Creating identifiers

The following filters allow to create identifiers.

Hashids

Hashids allow to convert sequences of integers to short unique string identifiers. This filter needs the hashids Python library installed on the controller.

- name: "Create hashid"
  debug:
    msg: "{{ [1234, 5, 6] | community.general.hashids_encode }}"

- name: "Decode hashid"
  debug:
    msg: "{{ 'jm2Cytn' | community.general.hashids_decode }}"

This produces:

TASK [Create hashid] **********************************************************************
ok: [localhost] => {
    "msg": "jm2Cytn"
}

TASK [Decode hashid] **********************************************************************
ok: [localhost] => {
    "msg": [
        1234,
        5,
        6
    ]
}

The hashids filters accept keyword arguments to allow fine-tuning the hashids generated:

salt

String to use as salt when hashing.

alphabet

String of 16 or more unique characters to produce a hash.

min_length

Minimum length of hash produced.

Random MACs

You can use the random_mac filter to complete a partial MAC address to a random 6-byte MAC address.

- name: "Create a random MAC starting with ff:"
  debug:
    msg: "{{ 'FF' | community.general.random_mac }}"

- name: "Create a random MAC starting with 00:11:22:"
  debug:
    msg: "{{ '00:11:22' | community.general.random_mac }}"

This produces:

TASK [Create a random MAC starting with ff:] **********************************************
ok: [localhost] => {
    "msg": "ff:69:d3:78:7f:b4"
}

TASK [Create a random MAC starting with 00:11:22:] ****************************************
ok: [localhost] => {
    "msg": "00:11:22:71:5d:3b"
}

You can also initialize the random number generator from a seed to create random-but-idempotent MAC addresses:

"{{ '52:54:00' | community.general.random_mac(seed=inventory_hostname) }}"