awx
AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.
Top Related Projects
Modern UI and powerful API for Ansible, Terraform, OpenTofu, PowerShell and other DevOps tools.
Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
an application that automates the lifecycle of servers
Free and open log management
Software to automate the management and configuration of any infrastructure or application at scale. Install Salt from the Salt package repositories here:
Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Quick Overview
AWX is the open-source version of Ansible Tower, a web-based solution for managing Ansible projects and inventories. It provides a user-friendly interface for scheduling, orchestrating, and monitoring Ansible playbooks, making it easier to manage complex automation tasks across large-scale infrastructures.
Pros
- User-friendly web interface for managing Ansible automation
- Centralized management of inventories, credentials, and playbooks
- Role-based access control (RBAC) for enhanced security
- RESTful API for integration with other tools and systems
Cons
- Complex setup and installation process
- Resource-intensive, requiring significant system resources
- Steeper learning curve compared to command-line Ansible
- Limited customization options compared to the enterprise version (Ansible Tower)
Getting Started
To get started with AWX, follow these steps:
-
Clone the AWX repository:
git clone https://github.com/ansible/awx.git cd awx
-
Install dependencies:
pip install -r requirements/requirements.txt
-
Run the installer:
ansible-playbook -i inventory installer/install.yml
-
Access the AWX web interface at
http://localhost
(default credentials: admin/password)
Note: These instructions are simplified. For a production setup, refer to the official documentation for more detailed installation and configuration steps.
Competitor Comparisons
Modern UI and powerful API for Ansible, Terraform, OpenTofu, PowerShell and other DevOps tools.
Pros of Semaphore
- Lightweight and easier to set up compared to AWX
- More straightforward user interface
- Better suited for smaller teams or projects
Cons of Semaphore
- Less feature-rich than AWX
- Smaller community and ecosystem
- Limited enterprise-level support options
Code Comparison
AWX (Python):
from django.db import models
from django.utils.translation import ugettext_lazy as _
class Organization(models.Model):
name = models.CharField(max_length=512)
description = models.TextField(blank=True)
Semaphore (Go):
type Project struct {
ID int `json:"id"`
Name string `json:"name" binding:"required"`
Created time.Time `json:"created"`
Alert bool `json:"alert"`
AlertChat string `json:"alert_chat"`
}
AWX is built using Python and Django, while Semaphore is written in Go. AWX's codebase is more extensive and complex, reflecting its broader feature set. Semaphore's code is more compact and focused on core functionality.
Both projects use modern web technologies and follow best practices in their respective languages. AWX's larger codebase may require more resources to run and maintain, while Semaphore's lighter footprint could be advantageous for smaller deployments or resource-constrained environments.
Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
Pros of Rundeck
- Simpler setup and configuration compared to AWX
- Built-in support for a wider range of job types, including scripts and commands
- More flexible scheduling options and workflow management
Cons of Rundeck
- Less integrated with Ansible ecosystem and playbooks
- Smaller community and fewer third-party integrations
- Limited built-in reporting and analytics capabilities
Code Comparison
AWX (using Ansible playbook):
- name: Install Apache
hosts: webservers
tasks:
- name: Install Apache package
yum:
name: httpd
state: present
Rundeck (using Job definition):
- defaultTab: nodes
executionEnabled: true
id: install-apache
name: Install Apache
nodeFilterEditable: false
sequence:
commands:
- exec: sudo yum install -y httpd
scheduleEnabled: true
Both AWX and Rundeck are powerful automation tools, but they have different strengths. AWX is more tightly integrated with Ansible and provides a web-based interface for managing Ansible playbooks. Rundeck, on the other hand, offers a more versatile job scheduling and workflow management system that can work with various automation tools and scripts. The choice between the two depends on specific use cases and existing infrastructure.
an application that automates the lifecycle of servers
Pros of Foreman
- More comprehensive lifecycle management, including provisioning and content management
- Supports a wider range of operating systems and virtualization platforms
- Extensible plugin architecture for additional functionality
Cons of Foreman
- Steeper learning curve due to broader feature set
- Requires more resources to run effectively
- Less focused on automation compared to AWX
Code Comparison
Foreman (Ruby):
class Host::Managed < Host::Base
include Hostext::Operating_system
include Facets::ManagedHostExtensions
include Facets::HostTemplateHelpers
include Facets::Searchable
end
AWX (Python):
class JobTemplate(UnifiedJobTemplate, JobOptions, SurveyJobTemplateMixin, ResourceMixin):
class Meta:
app_label = 'main'
ordering = ('name',)
The code snippets showcase the different programming languages and architectural approaches. Foreman uses Ruby and emphasizes modular design with extensive use of mixins, while AWX is built with Python and follows a more object-oriented structure.
Both projects are open-source and actively maintained, but they serve different primary purposes. Foreman is a complete lifecycle management tool, while AWX focuses on automation and is the upstream project for Ansible Tower. The choice between them depends on specific infrastructure needs and management preferences.
Free and open log management
Pros of graylog2-server
- Specialized log management and analysis tool
- Powerful search capabilities and customizable dashboards
- Scalable architecture for handling large volumes of log data
Cons of graylog2-server
- Steeper learning curve for setup and configuration
- Limited automation and orchestration features
- Requires additional components (e.g., Elasticsearch) for full functionality
Code Comparison
graylog2-server (Java):
public class GraylogServerStarter {
private static final Logger LOG = LoggerFactory.getLogger(GraylogServerStarter.class);
public static void main(String[] args) {
final Configuration configuration = new Configuration();
final Server server = new Server(configuration);
AWX (Python):
class AWXTaskManager:
def __init__(self):
self.tasks = {}
def add_task(self, task_id, task):
self.tasks[task_id] = task
While graylog2-server focuses on log management and analysis, AWX is primarily an automation platform. graylog2-server offers robust log processing capabilities, but may require more setup effort. AWX provides easier automation and orchestration but lacks specialized log analysis features. The code snippets reflect their different purposes: graylog2-server initializes a server configuration, while AWX manages tasks for automation workflows.
Software to automate the management and configuration of any infrastructure or application at scale. Install Salt from the Salt package repositories here:
Pros of Salt
- More scalable for large infrastructures due to its event-driven architecture
- Built-in remote execution capabilities for real-time system management
- Supports multiple operating systems and cloud platforms out-of-the-box
Cons of Salt
- Steeper learning curve, especially for users new to configuration management
- Less extensive module ecosystem compared to Ansible
- Configuration can be more complex, particularly for simple tasks
Code Comparison
Salt configuration example:
install_nginx:
pkg.installed:
- name: nginx
start_nginx:
service.running:
- name: nginx
- enable: True
AWX (Ansible) playbook example:
- name: Install and start Nginx
hosts: webservers
tasks:
- name: Install Nginx
apt:
name: nginx
state: present
- name: Start Nginx
service:
name: nginx
state: started
enabled: yes
Both examples achieve similar results, but Salt uses a declarative approach with states, while AWX (Ansible) uses a procedural approach with tasks. Salt's configuration is more concise, but AWX's playbook may be more intuitive for beginners.
Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Pros of Terraform
- Declarative infrastructure-as-code approach, allowing for more predictable and version-controlled infrastructure management
- Supports a wide range of cloud providers and services, offering greater flexibility in multi-cloud environments
- Strong ecosystem with a large number of providers and modules available
Cons of Terraform
- Steeper learning curve, especially for those new to infrastructure-as-code concepts
- Limited support for configuration management tasks compared to AWX's Ansible-based approach
- State management can be complex, requiring careful handling to avoid conflicts
Code Comparison
AWX (Ansible-based):
- name: Create EC2 instance
ec2:
key_name: mykey
instance_type: t2.micro
image: ami-123456
wait: yes
group: webserver
count: 1
Terraform:
resource "aws_instance" "web" {
ami = "ami-123456"
instance_type = "t2.micro"
key_name = "mykey"
vpc_security_group_ids = [aws_security_group.webserver.id]
}
Both AWX and Terraform are powerful tools for infrastructure management, but they have different strengths. AWX excels in configuration management and ad-hoc task execution, while Terraform focuses on infrastructure provisioning and state management. The choice between them depends on specific project requirements and team expertise.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.
To install AWX, please view the Install guide.
To learn more about using AWX, view the AWX docs site.
The AWX Project Frequently Asked Questions can be found here.
The AWX logos and branding assets are covered by our trademark guidelines.
Contributing
- Refer to the Contributing guide to get started developing, testing, and building AWX.
- All code submissions are made through pull requests against the
devel
branch. - All contributors must use
git commit --signoff
for any commit to be merged and agree that usage of--signoff
constitutes agreement with the terms of DCO 1.1 - Take care to make sure no merge commits are in the submission, and use
git rebase
vs.git merge
for this reason. - If submitting a large code change, it's a good idea to join discuss via the Ansible Forum. This helps everyone know what's going on, and it also helps save time and effort if the community decides some changes are needed.
Reporting Issues
If you're experiencing a problem that you feel is a bug in AWX or have ideas for improving AWX, we encourage you to open an issue and share your feedback. But before opening a new issue, we ask that you please take a look at our Issues guide.
Code of Conduct
We require all of our community members and contributors to adhere to the Ansible code of conduct. If you have questions or need assistance, please reach out to our community team at codeofconduct@ansible.com
Get Involved
We welcome your feedback and ideas via the Ansible Forum.
For a full list of all the ways to talk with the Ansible Community, see the AWX Communication guide.
Top Related Projects
Modern UI and powerful API for Ansible, Terraform, OpenTofu, PowerShell and other DevOps tools.
Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts
an application that automates the lifecycle of servers
Free and open log management
Software to automate the management and configuration of any infrastructure or application at scale. Install Salt from the Salt package repositories here:
Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot