community.general.opentelemetry callback – Create distributed traces with OpenTelemetry
Note
This callback plugin is part of the community.general collection (version 8.6.8).
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
.
You need further requirements to be able to use this callback plugin,
see Requirements for details.
To use it in a playbook, specify: community.general.opentelemetry
.
New in community.general 3.7.0
Callback plugin
This plugin is a notification callback. It sends information for a playbook run to other applications, services, or systems. See Callback plugins for more information on callback plugins.
Synopsis
This callback creates distributed traces for each Ansible task with OpenTelemetry.
You can configure the OpenTelemetry exporter and SDK with environment variables.
See https://opentelemetry-python.readthedocs.io/en/latest/exporter/otlp/otlp.html.
Requirements
The below requirements are needed on the local controller node that executes this callback.
opentelemetry-api (Python library)
opentelemetry-exporter-otlp (Python library)
opentelemetry-sdk (Python library)
Parameters
Parameter |
Comments |
---|---|
Disable populating span attributes to the logs. Choices:
Configuration:
|
|
Disable sending logs. Choices:
Configuration:
|
|
Whether to enable this callback only if the given environment variable exists and it is set to This is handy when you use Configuration as Code and want to send distributed traces if running in the CI rather when running Ansible locally. For such, it evaluates the given Configuration:
|
|
Hide the arguments for a task. Choices:
Configuration:
|
|
The service name resource attribute. Default: Configuration:
|
|
The W3C Trace Context header traceparent. Default: Configuration:
|
Examples
examples: |
Enable the plugin in ansible.cfg:
[defaults]
callbacks_enabled = community.general.opentelemetry
[callback_opentelemetry]
enable_from_environment = ANSIBLE_OPENTELEMETRY_ENABLED
Set the environment variable:
export OTEL_EXPORTER_OTLP_ENDPOINT=<your endpoint (OTLP/HTTP)>
export OTEL_EXPORTER_OTLP_HEADERS="authorization=Bearer your_otel_token"
export OTEL_SERVICE_NAME=your_service_name
export ANSIBLE_OPENTELEMETRY_ENABLED=true