receptor

2Roles

Overview

Description

Receptor installer

Readme

Ansible Receptor Collection (ansible.receptor)

Quality Gate Status Maintainability Rating Security Rating Bugs Code Smells

Description

This collection prepares and configures a node for running Receptor. The setup role in particular will configure a systemd service to run Receptor. As long as the service is running, the node will remain connected to other Receptor nodes in the mesh. This collection supports defining the peering relationship between nodes.

Requirements

ansible_core >= 2.15.0 Python >= 3.9

Installation

Before using this collection, you need to install it with the Ansible Galaxy command-line tool:

ansible-galaxy collection install ansible.receptor

You can also include it in a requirements.yml file and install it with:

ansible-galaxy collection install -r requirements.yml

using the format:

collections:
  - name: ansible.receptor

Note that if you install any collections from Ansible Galaxy, they will not be upgraded automatically when you upgrade the Ansible package. To upgrade the collection to the latest available version, run the following command:

ansible-galaxy collection install ansible.receptor --upgrade

You can also install a specific version of the collection, for example, if you need to downgrade when something is broken in the latest version (please report an issue in this repository). Use the following syntax to install version 1.0.0:

ansible-galaxy collection install ansible.receptor:==1.0.0

See using Ansible collections for more details.

Use Cases

This collection contains two roles:

  • podman : installs and configures podman on the node
  • setup: installs and configures Receptor on the node

Podman Role

Installs and configures podman.

Variables

ParameterTypeDefaultsComments
podman_userstringpodmanThe user under which podman will be configured.
podman_groupstringpodmanThe group under which podman will be configured.
default_runtimestringcrunThe default container runtime to use for podman.
default_cgroup_managerstringcgroupfsThe default cgroup manager to use for podman.

Setup Role

Installs and configures a Receptor node by doing the following:

  • Install Receptor
  • By default, Receptor is obtained via the pre-built binary on the Receptor Github release page.
  • For Centos/Redhat/Fedora systems, Receptor can be installed via the dnf package manager.
  • It is also possible to upload a custom Receptor binary from the local filesystem to the node.
  • Configure a systemd service to run whichever Receptor binary was obtained.
  • This service should start automatically on system startup.
  • Generate a Receptor configuration file.
  • Start the Receptor service.

See receptor_install_method for options on how Receptor is installed.

Variables

ParameterTypeDefaultsComments
receptor_install_methodstringreleaseOptions are 'release', 'package', or 'local'. If 'package', will use the os-specific package manager to install Receptor. If 'local', will upload a local receptor binary. To be paired with receptor_local_bin_file. If 'release', the receptor binary will be downloaded from receptor Releases on github.
receptor_local_bin_filestring''Path of local Receptor binary, if install method is 'local'.
receptor_install_dirstring/usr/binDirectory of the Receptor binary path on remote node. if install method is 'release' or 'local'.
receptor_packageslist[]Set the names of the packages needed to install Receptor, if install method is 'package'.
additional_python_packageslist[]Install additional python packages.
python_executablestringpython3The python executable for installing python packages.
pip_executablestringpip3The pip executable for installing python packages.
additional_system_packageslist["python3-pip"]Install other system packages, probably on a per-node-type basis using groupvars or hostvars.
receptor_userstringreceptorThe user under which Receptor will be configured.
receptor_groupstringreceptorThe group under which Receptor will be configured.
receptor_socket_dirstring/var/run/receptorDirectory for the Receptor control socket file.
receptor_control_filenamestringreceptor.sockPath of the control socket file.
receptor_config_dirstring/etc/receptorPath to the Receptor config file.
routable_hostnamestring''Hostvar for the routable address to this node. If this is unset ansible_host will be used instead. Must be unique.
receptor_peerslist of dict''Hostvar for the Ansible hosts that this node is peering outwards to. This is expected to be a list of dicts. In the dicts, the 'host' key is required, 'port' and 'protocol' are optional and will default to the overall defaults for receptor_port and receptor_protocol.
receptor_tlsbooleanfalseIf true, configure Receptor to use TLS for all connections.
receptor_replace_tlsstringfalseIf true, upload and replace existing TLS certificate and keys. If false, they will only be uploaded if the files are not present on the node.
receptor_mintls13booleanfalseIf true, force the minimum TLS version to be 1.3. Otherwise, the minimum version will be 1.2. This variable has no effect unless receptor_tls is enabled.
receptor_tls_dirstring/etc/receptor/tlsDirectory on the server where the TLS certificates and keys are located.
receptor_tls_ca_dirstring{{ receptor_tls_dir }}/caDirectory on the server where the CA certificates and keys are located.
receptor_tls_certfilestring{{ receptor_tls_dir }}/{{ receptor_host_identifier }}.crtPath on the server to the TLS certificate file.
receptor_tls_keyfilestring{{ receptor_tls_dir }}/{{ receptor_host_identifier }}.keyPath on the server to the TLS key file.
receptor_ca_certfilestring"{{ receptor_tls_ca_dir }}/mesh-CA.crt"Path on the server to the certificate authority certificate file.
receptor_ca_keyfilestring{{ receptor_tls_ca_dir }}/mesh-CA.keyPath on the server to the certificate authority key file.
custom_ca_certfilestring''Path on the local filesystem to user-provided certificate authority certificate file.
custom_ca_keyfilestring''Path on the local filesystem to user-provided certificate authority key file.
custom_tls_certfilestring''Path on the local filesystem to user-provided node certificate file. If used, both must be provided in combination with a custom_ca_certfile that was used to sign them.
custom_tls_keyfilestring''Path on the local filesystem to user-provided node key file. If used, both must be provided in combination with a custom_ca_certfile that was used to sign them.
receptor_signbooleanfalseIf true, Receptor will sign any work that it sends over the Receptor mesh using a private key.
receptor_verifybooleanfalseIf true, Receptor will verify any work that it receives using a public key.
receptor_worksign_key_dirstring/etc/receptorDirectory on the server to the public and private OpenSSL work signing key files.
receptor_worksign_private_keyfilestring{{ receptor_worksign_key_dir }}/work_private_key.pemPath on the server to the private OpenSSL work signing key file.
receptor_worksign_public_keyfilestring{{ receptor_worksign_key_dir }}/work_public_key.pemPath on the server to the public OpenSSL work signing key file.
custom_worksign_private_keyfilestring''Path on the local filesystem to user-provided OpenSSL work signing key file.
custom_worksign_public_keyfilestring''Path on the local filesystem to user-provided OpenSSL work signing key file.
receptor_log_levelstringinfoOptions are 'error', 'warning', 'info', and 'debug'.
receptor_log_dirstring/var/log/receptorDirectory for the Receptor log file. Used only when receptor_install_method is local or release.
receptor_listenerbooleantrueIf true, configure Receptor to listen for incoming remote connections.
receptor_local_onlybooleanfalseIf true, Receptor is not configured with any listeners or peers. This will take precedence over the value of receptor_listener.
receptor_protocolstringtcpProtocol for Receptor backend connections. Options are 'tcp', 'udp', and 'ws'.
receptor_portinteger27199Set the port number used by this instance of Receptor, if receptor_listener is enabled.
receptor_work_commandsdict''The definition of the Receptor work commands. This variable is expected to be a dictionary, with keys the unique worktype name, and values a dict of the rest of the key-value pairs of the work definition.
receptor_kubernetes_commandsdict''The definition of the Receptor work-kubernetes commands. This variable is expected to be a dictionary, with keys the unique worktype name, and values a dict of the rest of the key-value pairs of the work definition.
receptor_github_ownerstringansibleOwner of the github repository to download Receptor from, if install method is 'release'.
receptor_github_repostringreceptorRepository name to download Receptor from, if install method is 'release'.
receptor_github_releasestring''Receptor version to download Receptor from, if install method is 'release'. If not specified, the latest release will be used.
receptor_service_namestringreceptorName of systemd service that runs Receptor. Used only when receptor_install_method is 'local' or 'release'. If Receptor is installed via a package manager, a systemd is already configured.
receptor_fd_limit_softinteger4096The file descriptor limits in PAM for Receptor.
receptor_fd_limit_softinteger8192The file descriptor limits in PAM for Receptor.

Testing

This collection has been tested on the following distributions:

OSReleaseTested (Y/N)
Centos>=8Y
Redhat>=8Y
Debian>=11Y

Code Quality

This project uses SonarCloud for continuous code quality analysis.

  • Quality Analysis: All pull requests are automatically analyzed for code quality
  • Quality Gate: New code must meet quality standards including maintainability, reliability, and security
  • Dynamic Analysis: SonarCloud performs continuous code quality checks on all contributions

Note: This is an Ansible collection with YAML-based roles. Testing is performed using Molecule.

To run tests locally:

pip install -r molecule/requirements.txt
molecule test

Contributing

We value all feedback. To report an issue or propose an enhancement, please open an issue in our GitHub project.

We also encourage and welcome contributions! To fix an issue or make code changes, please create a fork and submit a pull request PR.

Support

As Red Hat Ansible Certified Content, this collection is entitled to support through the Ansible Automation Platform (AAP) using the Create issue button on the top right corner. If a support case cannot be opened with Red Hat and the collection has been obtained either from Galaxy or GitHub, there may community help available on the Ansible Forum.

Release Notes and Roadmap

Release Notes

License Information

Apache 2

Certification

Product
Red Hat Ansible Automation Platform 2.4
Red Hat Ansible Automation Platform 2.5
Red Hat Ansible Automation Platform 2.6
DocumentationDependencies
No dependencies
There are currently no dependencies for this collection.
View in Automation Hub
Red Hat logoLinkedInYouTubeFacebookTwitter

Platforms

Products & services

Try, buy, sell

Help

About Red Hat Ecosystem Catalog

The Red Hat Ecosystem Catalog is the official source for discovering and learning more about the Red Hat Ecosystem of both Red Hat and certified third-party products and services.

We’re the world’s leading provider of enterprise open source solutions—including Linux, cloud, container, and Kubernetes. We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

© 2025 Red Hat