Event-Driven Ansible Migration Guide: From ansible.eda to eda.builtin and community.eda (AAP 2.7)
By Luca Berton · Published 2026-06-29 · Category: installation
Migration guide for Event-Driven Ansible AAP 2.7: move from ansible.eda to eda.builtin and community.eda, with AWS and Azure namespace updates.
Ansible Automation Platform 2.7 reorganizes Event-Driven Ansible (EDA) event sources and filters. Several plugins previously shipped in the ansible.eda collection are moving to new namespaces: core plugins become built-ins (eda.builtin), cloud sources move to their respective cloud collections, and some community-maintained sources move to community.eda.
This guide explains each migration path and how to update your rulebooks.
Why the Reorganization?
The EDA plugin landscape grew organically and the ansible.eda collection became a catch-all for sources of varying maintenance levels. In AAP 2.7, Red Hat is separating content into three clear tiers:
eda.builtin— Core sources and filters baked intoansible-rulebook. Red Hat maintained, no collection install required.- Cloud collections (
amazon.aws,azure.azcollection) — Cloud-specific event sources maintained by the respective cloud teams alongside their automation content. community.eda— Community-maintained sources with no Red Hat engineering support.
ansible.eda namespace keeps backward-compatible mappings for now, but those aliases are no longer actively maintained. Update your rulebooks before the aliases are removed in a future release.
See also: What's New in Event-Driven Ansible: AAP 2.6 and 2.7 Features
Migration Path 1: ansible.eda → eda.builtin
These plugins are now built-in modules in ansible-rulebook. No collection install needed — they're available in every EDA environment.
| Old namespace | New namespace | Type |
|---|---|---|
ansible.eda.dashes_to_underscores | eda.builtin.dashes_to_underscores | filter |
ansible.eda.generic | eda.builtin.generic | source |
ansible.eda.insert_hosts_to_meta | eda.builtin.insert_hosts_to_meta | filter |
ansible.eda.json_filter | eda.builtin.json_filter | filter |
ansible.eda.normalize_keys | eda.builtin.normalize_keys | filter |
ansible.eda.pg_listener | eda.builtin.pg_listener | source |
ansible.eda.range | eda.builtin.range | source |
ansible.eda.webhook | eda.builtin.webhook | source |
Before (ansible.eda namespace)
# Old rulebook — uses ansible.eda namespace
- name: Handle webhook events
hosts: all
sources:
- ansible.eda.webhook:
host: 0.0.0.0
port: 5000
filters:
- ansible.eda.json_filter:
include_keys:
- event_type
- payload
- ansible.eda.normalize_keys:
rules:
- name: React to deployment events
condition: event.payload.event_type == "deployment"
action:
run_job_template:
name: "Deploy Application"
organization: "Default"After (eda.builtin namespace)
# Updated rulebook — uses eda.builtin namespace
- name: Handle webhook events
hosts: all
sources:
- eda.builtin.webhook:
host: 0.0.0.0
port: 5000
filters:
- eda.builtin.json_filter:
include_keys:
- event_type
- payload
- eda.builtin.normalize_keys:
rules:
- name: React to deployment events
condition: event.payload.event_type == "deployment"
action:
run_job_template:
name: "Deploy Application"
organization: "Default"The tick source is a special case — there is no eda.builtin.tick. Replace it with eda.builtin.generic (for a persistent single-event source) or eda.builtin.range (for a count-based loop):
# Old: ansible.eda.tick (fires one event repeatedly)
sources:
- ansible.eda.tick:
delay: 30
# New option 1: eda.builtin.range (fires N events)
sources:
- eda.builtin.range:
limit: 100
delay: 30
# New option 2: eda.builtin.generic (fires one event, then exits)
sources:
- eda.builtin.generic:
payload:
- message: "scheduled check"Migration Path 2: Cloud Sources → Cloud Collections
AWS and Azure event sources are moving to their respective certified cloud collections.
AWS Event Sources
The DE-supported decision environment now includes amazon.aws. After upgrading to the new DE-supported image, update these namespaces:
| Old namespace | New namespace |
|---|---|
ansible.eda.aws_cloudtrail | amazon.aws.aws_cloudtrail |
ansible.eda.aws_sqs_queue | amazon.aws.aws_sqs_queue |
# Before: AWS CloudTrail rulebook
- name: Monitor CloudTrail events
hosts: all
sources:
- ansible.eda.aws_cloudtrail:
region: us-east-1
rules:
- name: Detect IAM changes
condition: event.detail.eventSource == "iam.amazonaws.com"
action:
run_job_template:
name: "Security Alert - IAM Change"
organization: "Security Operations"# After: Updated to amazon.aws namespace
- name: Monitor CloudTrail events
hosts: all
sources:
- amazon.aws.aws_cloudtrail:
region: us-east-1
rules:
- name: Detect IAM changes
condition: event.detail.eventSource == "iam.amazonaws.com"
action:
run_job_template:
name: "Security Alert - IAM Change"
organization: "Security Operations"Azure Event Sources
# Before: Azure Service Bus rulebook
- name: Process Azure Service Bus messages
hosts: all
sources:
- ansible.eda.azure_service_bus:
conn_str: "{{ azure_servicebus_connection_string }}"
queue: "automation-events"
rules:
- name: Handle VM scale events
condition: event.message_type == "vm_scale_request"
action:
run_job_template:
name: "Azure VM Scale Workflow"
organization: "Cloud Operations"# After: Updated to azure.azcollection namespace
- name: Process Azure Service Bus messages
hosts: all
sources:
- azure.azcollection.azure_service_bus:
conn_str: "{{ azure_servicebus_connection_string }}"
queue: "automation-events"
rules:
- name: Handle VM scale events
condition: event.message_type == "vm_scale_request"
action:
run_job_template:
name: "Azure VM Scale Workflow"
organization: "Cloud Operations"See also: Pluralsight The IT Ops Sessions: Event-Driven Ansible
Migration Path 3: ansible.eda → community.eda
These sources are being removed from the Red Hat certified ansible.eda collection and moving to community.eda. Red Hat engineering no longer maintains them, but community contributions continue.
| Old namespace | New namespace | Notes |
|---|---|---|
ansible.eda.file | community.eda.file | Reads events from a file |
ansible.eda.file_watch | community.eda.file_watch | Watches filesystem changes |
ansible.eda.journald | community.eda.journald | Reads from systemd journal |
ansible.eda.url_check | community.eda.url_check | HTTP polling source |
ansible.eda.tick | eda.builtin.generic or eda.builtin.range | No community equivalent |
community.eda collection. The DE-supported and DE-minimal images provided by Red Hat do not include community.eda.
Building a Custom DE with community.eda
# execution-environment.yml for custom DE
version: 3
base_image:
name: registry.redhat.io/ansible-automation-platform/de-minimal-rhel9:latest
dependencies:
galaxy:
collections:
- name: community.eda
version: ">=1.0.0"# Build the custom DE
ansible-builder build \
--file execution-environment.yml \
--tag custom-de-with-community-eda:1.0 \
--container-runtime podmanExample: Migrating a journald Rulebook
# Before: ansible.eda.journald
- name: Monitor system journal
hosts: all
sources:
- ansible.eda.journald:
unit: sshd.service
rules:
- name: Detect SSH failures
condition: "'Failed password' in event.MESSAGE"
action:
run_job_template:
name: "Security Alert - SSH Brute Force"
organization: "Security Operations"# After: community.eda.journald (requires custom DE)
- name: Monitor system journal
hosts: all
sources:
- community.eda.journald:
unit: sshd.service
rules:
- name: Detect SSH failures
condition: "'Failed password' in event.MESSAGE"
action:
run_job_template:
name: "Security Alert - SSH Brute Force"
organization: "Security Operations"Using Older DE Images as a Stopgap
Red Hat provides a transition option: keep using your existing ansible.eda namespace rulebooks with an older version of DE-supported or DE-minimal while you update your rulebooks. The older DEs still carry the ansible.eda collection with the deprecated plugins.
This is not a long-term solution — plan your migration within the AAP 2.7 lifecycle.
See also: Pluralsight The IT Ops Sessions: Ansible Sign, Verify, Event-Driven and Ansible Generative AI
Bulk Rulebook Migration Script
To find all affected rulebook files in your repository:
# Find rulebooks using deprecated ansible.eda sources/filters
grep -r "ansible\.eda\." /path/to/rulebooks/ --include="*.yml" -l
# Show specific deprecated plugin usage
grep -rn \
-e "ansible\.eda\.webhook" \
-e "ansible\.eda\.json_filter" \
-e "ansible\.eda\.normalize_keys" \
-e "ansible\.eda\.pg_listener" \
-e "ansible\.eda\.range" \
-e "ansible\.eda\.generic" \
-e "ansible\.eda\.aws_" \
-e "ansible\.eda\.azure_" \
-e "ansible\.eda\.file" \
-e "ansible\.eda\.journald" \
-e "ansible\.eda\.tick" \
-e "ansible\.eda\.url_check" \
/path/to/rulebooks/Bulk rename for eda.builtin targets (the safe subset with no behavior changes):
# Replace eda.builtin targets in-place
find /path/to/rulebooks -name "*.yml" -exec sed -i \
-e 's/ansible\.eda\.webhook/eda.builtin.webhook/g' \
-e 's/ansible\.eda\.json_filter/eda.builtin.json_filter/g' \
-e 's/ansible\.eda\.normalize_keys/eda.builtin.normalize_keys/g' \
-e 's/ansible\.eda\.pg_listener/eda.builtin.pg_listener/g' \
-e 's/ansible\.eda\.range/eda.builtin.range/g' \
-e 's/ansible\.eda\.generic/eda.builtin.generic/g' \
-e 's/ansible\.eda\.dashes_to_underscores/eda.builtin.dashes_to_underscores/g' \
-e 's/ansible\.eda\.insert_hosts_to_meta/eda.builtin.insert_hosts_to_meta/g' \
{} \;Test each rulebook in a non-production activation before deploying the migrated versions.
FAQ
Do I need to update if my rulebooks still work?
For now, ansible.eda backward-compatible mappings remain in AAP 2.7. However, those plugins are no longer actively maintained — bugs and new features will only land in the new namespaces. Plan migration before AAP 2.8.
Where does community.eda come from?
community.eda is available on Ansible Galaxy. Because it's community-supported (not Red Hat certified), it's not included in Red Hat's DE images. Build a custom DE to use it.
What happens to the tick source?
ansible.eda.tick has no maintained equivalent in community.eda. Use eda.builtin.range for a count-bounded periodic source or eda.builtin.generic for a one-shot event.
Do the decision environment images need to be updated?
Yes. To use amazon.aws and azure.azcollection event sources, pull the updated DE-supported decision environment which now includes both collections. For community.eda, build a custom DE as shown above.
Conclusion
The EDA plugin reorganization in AAP 2.7 aligns each source and filter with the team that maintains it, improving long-term quality and release cadence. The eda.builtin migration is a mechanical namespace swap. Cloud source migration requires the updated DE-supported image. Community sources require a custom DE. With the bulk migration script, most teams can update their rulebook repositories in an afternoon.
Related Articles
Category: installation