Unable to start rulebook activation: ERROR: No username set in the environment

robinr1
Wed, 18 Mar 2026 19:32:13 +0000
Get Help

I’m a long time user of Ansible, AWX and ARA but new to EDA. I tried setting up an EDA instance using eda-server-operator:main, and after a lot of trail and error, it looks like it is now running correctly. This is my eda-server-operator config:

apiVersion: eda.ansible.com/v1alpha1
kind: EDA
metadata:
  name: eda
spec:
  admin_user: admin
  admin_password_secret: eda-admin-password

  automation_server_url: http://awx-service:5082         # internal kubernetes address of awx running in same cluster

  image: quay.io/ansible/eda-server
  image_version: sha-b4030df              # newer versions break eda-ui authentication (https://github.com/ansible/eda-server/issues/1504)
  image_web: quay.io/ansible/eda-ui
  image_web_version: "2.5"

  service_type: ClusterIP
  ingress_type: none

  extra_settings:
    - setting: EDA_ALLOW_LOCAL_RESOURCE_MANAGEMENT
      value: true
    - setting: EDA_EVENT_STREAM_BASE_URL
      value: "https://eda/eda-event-streams"

  db_fields_encryption_secret: eda-db-encryption-secret

  database:
    postgres_storage_class: netapp-nfs-volume

  bundle_cacert_secret: eda-custom-certs

  # debug:
  no_log: false

I then set up a rulebook activation with a small test rulebook in a git repo:

- name: Listen for events on a webhook
  hosts: all
  sources:
    - ansible.eda.webhook:
        host: 0.0.0.0
        port: 5001

  rules:
    - name: debug
      condition: event.payload is defined
      action:
        debug:
          msg: "{{ event.payload }}"

I added a new project pointing to the git repo containing the rulebook
I registered a user and a token for EDA in AWX
I added a “Red Hat Ansible Automation Platform”-type credential to EDA where I set the AWX host (the same as I set in the automation_server_url parameter for the operator) and the generated oAuth token
I built a Decision Environment:

---
version: 3

images:
  base_image:
    name: quay.io/fedora/fedora:41

dependencies:
  galaxy:
    collections:
      - ansible.eda
  python:
    - azure-servicebus
    - aiobotocore
    - aiohttp
    - aiokafka
    - gssapi
    - watchdog
    - systemd-python
    - dpath
    - ansible-rulebook
  ansible_core:
    package_pip: ansible-core~=2.16.0
  ansible_runner:
    package_pip: ansible-runner
  system:
    - gcc [platform:rpm compile]
    - gcc-c++ [platform:rpm compile]
    - make [platform:rpm compile]
    - python3-devel [platform:rpm]
    - systemd-devel [platform:rpm] # required for systemd-python
    - krb5-devel [platform:rpm] # required for gssapi
    - java-17-openjdk-devel [platform:rpm]

additional_build_steps:
  prepend_base:
    - RUN dnf install -y python3 python3-pip python3-libdnf5
  append_final:
    - RUN /usr/local/bin/ansible-galaxy collection list

I registered the DE in EDA
I configured a rulebook activation pointing to the above rulebook, the DE image built using above config and added the AWX credentials I created earlier

When I now try to activate the rulebook I get this logging (level: debug):

Python executable = /usr/bin/python3
Platform = Linux-6.4.0-150600.23.81-default-x86_64-with-glibc2.40
ansible_rulebook.util - ERROR - Cannot list installed collections: Command '['/usr/local/bin/ansible-galaxy', 'collection', 'list']' returned non-zero exit status 5.
ansible_rulebook.app - DEBUG - No collections found
ansible_rulebook.app - INFO - Starting worker mode
ansible_rulebook.websocket - INFO - websocket ws://eda-daphne:8001/api/eda/ws/ansible-rulebook
ansible_rulebook.websocket - INFO - attempt websocket connection
ansible_rulebook.websocket - INFO - workload websocket connected
ansible_rulebook.collection - ERROR - Error listing collections: b'ERROR: No username set in the environment\n'
ansible_rulebook.condition_parser - DEBUG - OperatorExpressionFactory tokens: [Identifier(value='event.payload'), 'is', String(value='defined')]
ansible_rulebook.cli - ERROR - Terminating: End Of File (EOF). Exception style platform.
<pexpect.pty_spawn.spawn object at 0x7ff174ca1d30>
command: /usr/local/bin/ansible-vault
args: ['/usr/local/bin/ansible-vault', 'decrypt', '--vault-id', 'EDA_SERVER@/tmp/tmpyx5mf6g7']
buffer (last 100 chars): b''
before (last 100 chars): b'ERROR: No username set in the environment\r\n'
after: <class 'pexpect.exceptions.EOF'>
match: None
match_index: None
exitstatus: None
flag_eof: True
pid: 121
child_fd: 9
closed: False
timeout: 30
delimiter: <class 'pexpect.exceptions.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
searcher: searcher_re:
0: re.compile(b'Reading ciphertext input from stdin')
Secret activation-secret-1 is deleted.
Service netbox-events is deleted.
Pod 'activation-job-1-46' is deleted.
Job activation-job-1-46 is cleaned up.
Activation failed. Restart policy is not applicable.

For what I understand from this message is that ansible-galaxy collection list seems to fail, and seems to expect some username being set in the environment ?

I don’t have a local Ansible galaxy instance running so I don’t know what this now expects from me and/or what username I have to set in what variable?

I tried spinning up the DE container myself, set the same env variables as the “Red Hat Ansible Automation Platform”-type credential should insert into the container, for in case this error is triggered by an empty username var set by it (as I only have set the oAuth parameter, but I also tried setting a username/password, but to no avail) and I tried running:

bash-5.2$ ansible-galaxy collection list

# /usr/share/ansible/collections/ansible_collections
Collection  Version
----------- -------
ansible.eda 2.11.0

I also added the above playbook locally into the running container as test.yml and tried ansible-rulebook:

bash-5.2$ ansible-rulebook -r test.yml -vv
2026-03-18 15:07:41,448 - asyncio - DEBUG - Using selector: EpollSelector
2026-03-18 15:07:41,448 - ansible_rulebook.app - DEBUG - Loading rules from the file system test.yml
2026-03-18 15:07:41,684 - ansible_rulebook.condition_parser - DEBUG - OperatorExpressionFactory tokens: [Identifier(value='event.payload'), 'is', String(value='defined')]
2026-03-18 15:07:41,685 - ansible_rulebook.app - INFO - Starting sources
2026-03-18 15:07:41,685 - ansible_rulebook.app - INFO - Starting rules
2026-03-18 15:07:41,685 - ansible_rulebook.engine - DEBUG - run_ruleset
2026-03-18 15:07:41,685 - drools.ruleset - INFO - Using jar: /usr/local/lib/python3.13/site-packages/drools/jars/drools-ansible-rulebook-integration-runtime-1.0.11-SNAPSHOT.jar
2026-03-18 15:07:41,735 - drools.ruleset - DEBUG - Creating Drools Ruleset
2026-03-18 15:07:41 993 [main] INFO org.drools.ansible.rulebook.integration.api.rulesengine.MemoryMonitorUtil - Memory occupation threshold set to 90%
2026-03-18 15:07:41 994 [main] INFO org.drools.ansible.rulebook.integration.api.rulesengine.MemoryMonitorUtil - Memory check event count threshold set to 64
2026-03-18 15:07:41 994 [main] INFO org.drools.ansible.rulebook.integration.api.rulesengine.MemoryMonitorUtil - Exit above memory occupation threshold set to false
2026-03-18 15:07:41 998 [main] INFO org.drools.ansible.rulebook.integration.api.rulesengine.AbstractRulesEvaluator - Start automatic pseudo clock with a tick every 100 milliseconds
2026-03-18 15:07:42,000 - drools.ruleset - DEBUG - Ruleset Session ID : 1
2026-03-18 15:07:42,000 - ansible_rulebook.engine - DEBUG - ruleset define: {"name": "Listen for netbox events on a webhook", "hosts": ["all"], "sources": [{"EventSource": {"name": "ansible.eda.webhook", "source_name": "ansible.eda.webhook", "source_args": {"host": "0.0.0.0", "port": 5001}, "source_filters": []}}], "rules": [{"Rule": {"name": "debug", "condition": {"AllCondition": [{"IsDefinedExpression": {"Event": "payload"}}]}, "actions": [{"Action": {"action": "debug", "action_args": {"msg": "{{ event.payload }}"}}}], "enabled": true}}]}
2026-03-18 15:07:42,000 - drools.dispatch - DEBUG - Establishing async channel
2026-03-18 15:07:42,006 - ansible_rulebook.engine - INFO - load source ansible.eda.webhook
2026-03-18 15:07:42,045 - ansible_rulebook.engine - INFO - loading source filter eda.builtin.insert_meta_info
2026-03-18 15:07:42,259 - ansible_rulebook.engine - DEBUG - Calling main in ansible.eda.webhook
2026-03-18 15:07:42,261 - ansible_rulebook.engine - INFO - Waiting for all ruleset tasks to end
2026-03-18 15:07:42,261 - ansible_rulebook.rule_set_runner - INFO - Waiting for actions on events from Listen for netbox events on a webhook
2026-03-18 15:07:42,261 - ansible_rulebook.rule_set_runner - INFO - Waiting for events, ruleset: Listen for netbox events on a webhook
2026-03-18 15:07:42 262 [drools-async-evaluator-thread] INFO org.drools.ansible.rulebook.integration.api.io.RuleExecutorChannel - Async channel connected

So I have no idea what is complaining about a missing username, why and how to fix it..I also don’t find anything in any documentation about this.

2 posts - 1 participant