Join AnsibleFest at Red Hat Summit!

community.general.ansible_type test – Validate input type

Note

This test plugin is part of the community.general collection (version 10.6.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install community.general.

To use it in a playbook, specify: community.general.ansible_type.

New in community.general 9.2.0

Synopsis

  • This test validates input type.

Input

This describes the input of the test, the value before is community.general.ansible_type or is not community.general.ansible_type.

Parameter

Comments

Input

any / required

Input data.

Keyword parameters

This describes keyword parameters of the test. These are the values key1=value1, key2=value2 and so on in the following examples: input is community.general.ansible_type(key1=value1, key2=value2, ...) and input is not community.general.ansible_type(key1=value1, key2=value2, ...)

Parameter

Comments

alias

dictionary

Data type aliases.

Default: {}

dtype

any / required

A single data type, or a data types list to be validated.

Examples

# Substitution converts str to AnsibleUnicode or _AnsibleTaggedStr
# ----------------------------------------------------------------

# String. AnsibleUnicode or _AnsibleTaggedStr.
dtype:
  - AnsibleUnicode
  - _AnsibleTaggedStr
data: "abc"
result: '{{ data is community.general.ansible_type(dtype) }}'
# result => true

# String. AnsibleUnicode/_AnsibleTaggedStr alias str.
alias: {"AnsibleUnicode": "str", "_AnsibleTaggedStr": "str"}
dtype: str
data: "abc"
result: '{{ data is community.general.ansible_type(dtype, alias) }}'
# result => true

# List. All items are AnsibleUnicode/_AnsibleTaggedStr.
dtype:
  - list[AnsibleUnicode]
  - list[_AnsibleTaggedStr]
data: ["a", "b", "c"]
result: '{{ data is community.general.ansible_type(dtype) }}'
# result => true

# Dictionary. All keys and values are AnsibleUnicode/_AnsibleTaggedStr.
dtype:
  - dict[AnsibleUnicode, AnsibleUnicode]
  - dict[_AnsibleTaggedStr, _AnsibleTaggedStr]
data: {"a": "foo", "b": "bar", "c": "baz"}
result: '{{ data is community.general.ansible_type(dtype) }}'
# result => true

# No substitution and no alias. Type of strings is str
# ----------------------------------------------------

# String
dtype: str
result: '{{ "abc" is community.general.ansible_type(dtype) }}'
# result => true

# Integer
dtype: int
result: '{{ 123 is community.general.ansible_type(dtype) }}'
# result => true

# Float
dtype: float
result: '{{ 123.45 is community.general.ansible_type(dtype) }}'
# result => true

# Boolean
dtype: bool
result: '{{ true is community.general.ansible_type(dtype) }}'
# result => true

# List. All items are strings.
dtype: list[str]
result: '{{ ["a", "b", "c"] is community.general.ansible_type(dtype) }}'
# result => true

# List of dictionaries.
dtype: list[dict]
result: '{{ [{"a": 1}, {"b": 2}] is community.general.ansible_type(dtype) }}'
# result => true

# Dictionary. All keys are strings. All values are integers.
dtype: dict[str, int]
result: '{{ {"a": 1} is community.general.ansible_type(dtype) }}'
# result => true

# Dictionary. All keys are strings. All values are integers.
dtype: dict[str, int]
result: '{{ {"a": 1, "b": 2} is community.general.ansible_type(dtype) }}'
# result => true

# Type of strings is AnsibleUnicode, _AnsibleTaggedStr, or str
# ------------------------------------------------------------

# Dictionary. The keys are integers or strings. All values are strings.
alias:
  AnsibleUnicode: str
  _AnsibleTaggedStr: str
  _AnsibleTaggedInt: int
dtype: dict[int|str, str]
data: {1: 'a', 'b': 'b'}
result: '{{ data is community.general.ansible_type(dtype, alias) }}'
# result => true

# Dictionary. All keys are integers. All values are keys.
alias:
  AnsibleUnicode: str
  _AnsibleTaggedStr: str
  _AnsibleTaggedInt: int
dtype: dict[int, str]
data: {1: 'a', 2: 'b'}
result: '{{ data is community.general.ansible_type(dtype, alias) }}'
# result => true

# Dictionary. All keys are strings. Multiple types values.
alias:
  AnsibleUnicode: str
  _AnsibleTaggedStr: str
  _AnsibleTaggedInt: int
  _AnsibleTaggedFloat: float
dtype: dict[str, bool|dict|float|int|list|str]
data: {'a': 1, 'b': 1.1, 'c': 'abc', 'd': True, 'e': ['x', 'y', 'z'], 'f': {'x': 1, 'y': 2}}
result: '{{ data is community.general.ansible_type(dtype, alias) }}'
# result => true

# List. Multiple types items.
alias:
  AnsibleUnicode: str
  _AnsibleTaggedStr: str
  _AnsibleTaggedInt: int
  _AnsibleTaggedFloat: float
dtype: list[bool|dict|float|int|list|str]
data: [1, 2, 1.1, 'abc', True, ['x', 'y', 'z'], {'x': 1, 'y': 2}]
result: '{{ data is community.general.ansible_type(dtype, alias) }}'
# result => true

# Option dtype is list
# --------------------

# AnsibleUnicode, _AnsibleTaggedStr, or str
dtype: ['AnsibleUnicode', '_AnsibleTaggedStr', 'str']
data: abc
result: '{{ data is community.general.ansible_type(dtype) }}'
# result => true

# float or int
dtype: ['float', 'int', "_AnsibleTaggedInt", "_AnsibleTaggedFloat"]
data: 123
result: '{{ data is community.general.ansible_type(dtype) }}'
# result => true

# float or int
dtype: ['float', 'int', "_AnsibleTaggedInt", "_AnsibleTaggedFloat"]
data: 123.45
result: '{{ data is community.general.ansible_type(dtype) }}'
# result => true

# Multiple alias
# --------------

# int alias number
alias:
    int: number
    float: number
    _AnsibleTaggedInt: number
    _AnsibleTaggedFloat: float
dtype: number
data: 123
result: '{{ data is community.general.ansible_type(dtype, alias) }}'
# result => true

# float alias number
alias:
    int: number
    float: number
    _AnsibleTaggedInt: number
    _AnsibleTaggedFloat: float
dtype: number
data: 123.45
result: '{{ data is community.general.ansible_type(dtype, alias) }}'
# result => true

Return Value

Key

Description

Return value

boolean

Whether the data type is valid.

Returned: success

Authors

  • Vladimir Botka (@vbotka)

Hint

Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up.