OS & Architecture Compatibility
Relevant source files
The following files were used as context for generating this wiki page:
The ansible-teleport role is designed to install and manage the Teleport node service across a variety of Linux distributions and hardware architectures. It leverages native package managers (RPM and DEB) or official installation scripts to ensure that the appropriate Teleport binary is deployed based on the target system's specifications.
Compatibility is enforced through preflight checks that validate the operating system family and architecture before proceeding with installation or configuration tasks. This ensures that the deployment environment meets the minimum requirements for running Teleport as a system service.
Sources: README.md:1-12, tasks/preflight/check.yml:15-21
Supported Operating Systems
The role explicitly supports major Linux distributions categorized by their OS family. During the preflight stage, the role asserts that the target system belongs to one of the following families: RedHat, Debian, or Alpine.
OS Family Breakdown
| OS Family | Supported Distributions / Versions | Package Method |
|---|---|---|
| RedHat (EL) | RHEL/CentOS 7, 8 | RPM / Install Script |
| Debian | Jessie, Stretch | DEB / Install Script |
| Ubuntu | Trusty, Xenial, Bionic | DEB / Install Script |
| Alpine | General Support | Install Script |
Sources: meta/main.yml:16-29, tasks/preflight/check.yml:17-21, molecule/default/converge.yml:10-25
Distribution Specific Requirements
For modern distributions like Ubuntu 16.04+ and RedHat 8+, the role ensures that python3 is present and configured as the Ansible interpreter to maintain compatibility with modern Ansible modules.
Sources: molecule/default/converge.yml:10-25
Hardware Architecture Support
The role is compatible with any architecture for which Teleport provides a binary. Users can specify the target architecture via the teleport_architecture variable.
Supported Architecture Aliases
The following architecture values are used to construct the download URL for Teleport binaries:
- amd64-bin: x86_64 / AMD64 based devices (Default).
- arm64-bin: ARM64 / ARMv8 (64-bit) devices.
- arm-bin: ARMv7 (32-bit) devices.
- 386-bin: i386 / Intel 32-bit devices.
Sources: README.md:10-12, README.md:71-77, defaults/main.yml:11
The download URL is dynamically constructed using these variables:
https://get.gravitational.com/teleport-v{{ teleport_version }}-linux-{{ teleport_architecture }}.tar.gz
Sources: defaults/main.yml:12
Environment Compatibility Logic
The role distinguishes between standard bare-metal/VM environments and containerized environments. This detection influences how services and configuration changes are handled.
Virtualization Detection
The role identifies if it is running inside a container (Docker or containerd) and sets the is_container fact accordingly. This prevents the role from attempting to manage system services (like systemd) in environments where they are unavailable.
The diagram above shows the logic flow for environment detection and its impact on service management.
Sources: tasks/preflight/check.yml:9-21, tasks/service/daemon_management.yml:13-30
Service Management Compatibility
The role provides compatibility for both modern and legacy service management systems.
- systemd: Managed via
tasks/service/systemd.yml, typically for modern EL and Debian-based systems. - SysV init: Supported through
tasks/service/daemon_management.yml, which installs ateleport.init.j2template to/etc/init.d/teleportfor systems requiring legacy persistence.
Sources: tasks/main.yml:71-76, tasks/service/daemon_management.yml:1-30
Compatibility Constraints
| Feature | Bare Metal / VM | Container (Docker) |
|---|---|---|
| systemd | Supported | Not Supported |
| SysV init | Supported | Not Supported |
| Config Backup | Supported | Supported |
| Binary Install | Supported | Supported |
Sources: tasks/service/daemon_management.yml:13-30, tasks/main.yml:25-38
Conclusion
The ansible-teleport role ensures broad compatibility by combining strict OS family validation with flexible architecture selection. By detecting containerization and supporting both systemd and legacy init scripts, the role can deploy Teleport nodes across a diverse landscape of Linux environments, from older RHEL 7 servers to modern Ubuntu instances.
Sources: tasks/preflight/check.yml:17-21, meta/main.yml:16-29, README.md:10-12