ansible / 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.
Other
13.96k stars 3.41k forks source link

Support for HashiCorp Terraform Cloud / HashiCorp Terraform Enterprise Run Tasks #13785

Open benemon opened 1 year ago

benemon commented 1 year ago

Please confirm the following

Feature type

New Feature

Feature Summary

HashiCorp's Enterprise Terraform Platforms (Terraform Cloud and Terraform Enterprise) support the creation of Run Tasks. Run Tasks are a mechanism by which 3rd party tools and services can be integrated into the Enterprise Terraform run lifecycle, outside of relying on codified triggers.

Many organisations will utilise an Enterprise Terraform platform in conjunction with AWX / Ansible Automation Platform as part of an end-to-end provisioning and configuration management workflow. Having the ability to drive AWX / Ansible Automation Platform workflows and jobs in response to events within the Enterprise Terraform Platform would ease the current burden of integration between the two Enterprise Products by moving the integration point out of code (i.e. out of playbooks or terraform configurations), and allow for more complex workflow patterns to be created in a simple, scalable fashion.

Select the relevant components

Steps to reproduce

N/A - Feature doesn't currently exist.

Current results

Integration must currently be done either within Ansible Playbooks to trigger Terraform Cloud / Terraform Enterprise APIs, or using the recently released Ansible Provider for Terraform as a means to run Ansible Plays within the scope of a Terraform Configuration.

Sugested feature result

A Platform-level integration between AWX/AAP and Terraform Cloud / Terraform Enterprise would enable:

Additional information

This Feature Request is being raised on the AWX project as the Feature Request would involve the AWX development team providing an endpoint and allowing the generation of an HMAC key that Terraform Cloud / Terraform Enterprise could then send a request to in order to trigger an AWX/AAP Job or Workflow. When the Workflow or Job completes, AWX/AAP would callback to Terraform Cloud / Terraform Enterprise with the status of the Workflow or Job.

benemon commented 1 year ago

I have built a small shim to act as a PoC for this integration. It takes an outbound Run Task Request from the enterprise Terraform platform, and ETL's the payload into something that AWX/AAP could interpret and work with.

It currently supports launching Job Templates / Workflow Job Templates, and the groundwork is done for the creation of Inventories based on the output of Terraform Runs.

Ansible Run Task Shim

fosterseth commented 1 year ago

@ffirg you may be interested in taking a look at this

benemon commented 1 year ago

Hi @ffirg @fosterseth - is there any way we can look at moving this forward? Is there any further information I can provide? Happy to help in any capacity I can.