Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!

We spend hours scrolling social media and waste money on things we forget, but won’t spend 30 minutes a day earning certifications that can change our lives.
Master in DevOps, SRE, DevSecOps & MLOps by DevOpsSchool!

Learn from Guru Rajesh Kumar and double your salary in just one year.


Get Started Now!

Ansible: How to Work with Ansible Tower REST API (with Example)

Absolutely! Ansible Tower (now called Controller in AAP) has a robust, well-documented REST API. You can use it to automate everything you do via the web UI—launch jobs, manage inventories, users, credentials, and more.
Below is a practical, step-by-step guide (with examples!) to help you get started.


How to Work with Ansible Tower REST API (with Example)


1. Understanding the Ansible Tower API

  • Type: RESTful, JSON-based API.
  • Docs: Interactive Swagger/OpenAPI docs usually at:
    https://<tower-server>/api/
    (log in and try it!)
  • Authentication:
    • Basic Auth (username/password or Personal Access Token)
    • OAuth2 (for advanced use cases)

2. API Authentication

  • Basic Auth:
    Every request uses HTTP basic authentication.
    Example: user:password or Personal Access Token as username (no password needed).
  • Getting a Token:
    In Tower UI:
    User → Tokens → Create Token
    (Recommended: use tokens for automation!)

3. Making a Simple API Request

Let’s say your Tower UI is at https://13.233.139.133/.

List all Job Templates (curl):

curl -k -u 'admin:yourpassword' https://13.233.139.133/api/v2/job_templates/
Code language: JavaScript (javascript)
  • -k: Allow insecure (self-signed) SSL
  • -u: Basic auth, 'user:password'
  • The response is JSON

Using a Personal Access Token (PAT):

curl -k -H "Authorization: Bearer <your_token>" https://13.233.139.133/api/v2/job_templates/
Code language: JavaScript (javascript)

4. Example: Launch a Job Template via API

Suppose you have a job template with ID 7.

API URL:
POST /api/v2/job_templates/7/launch/

Example (with token):

curl -k -H "Authorization: Bearer <your_token>" \
     -X POST https://13.233.139.133/api/v2/job_templates/7/launch/
Code language: JavaScript (javascript)
  • The response includes the job ID (e.g., "id": 81).

5. Check Job Status

Suppose your launched job returned "id": 81.

curl -k -H "Authorization: Bearer <your_token>" \
     https://13.233.139.133/api/v2/jobs/81/
Code language: JavaScript (javascript)
  • Look for "status": "successful" (other states: “pending”, “running”, “failed”).

6. See Job Output (Standard Out)

curl -k -H "Authorization: Bearer <your_token>" \
     https://13.233.139.133/api/v2/jobs/81/stdout/?format=txt
Code language: JavaScript (javascript)
  • Add ?format=txt or ?format=html as needed.

7. Example: Create an Inventory via API

curl -k -H "Authorization: Bearer <your_token>" \
     -H "Content-Type: application/json" \
     -d '{"name":"TestInventory","organization":1}' \
     -X POST https://13.233.139.133/api/v2/inventories/
Code language: JavaScript (javascript)
  • Replace organization: 1 with your organization’s ID (list orgs via /api/v2/organizations/).

8. Useful Endpoints

API EndpointDescription
/api/v2/API root & docs
/api/v2/job_templates/List/create job templates
/api/v2/job_templates/<id>/launch/Launch a job template
/api/v2/jobs/<id>/Check job status/details
/api/v2/jobs/<id>/stdout/Get job standard output
/api/v2/inventories/List/create inventories
/api/v2/hosts/List/create hosts
/api/v2/credentials/List/create credentials
/api/v2/users/List/create users

9. Example Python Script (requests library)

Here’s a simple Python snippet to list all job templates:

import requests

api_url = "https://13.233.139.133/api/v2/job_templates/"
token = "<your_token>"  # Or use user/pass in auth param

headers = {
    "Authorization": f"Bearer {token}",
    "Content-Type": "application/json"
}

response = requests.get(api_url, headers=headers, verify=False)
for jt in response.json()['results']:
    print(f"ID: {jt['id']}, Name: {jt['name']}")
Code language: PHP (php)

(use verify=False for self-signed SSL)


10. Finding More API Endpoints and Docs

  • Visit: https://<tower-server>/api/ in your browser
  • Try out requests in Swagger UI

Summary Table

ActionHTTP MethodAPI URLNotes
List job templatesGET/api/v2/job_templates/
Launch a job templatePOST/api/v2/job_templates/<id>/launch/Needs job template ID
Check job statusGET/api/v2/jobs/<id>/
Get job outputGET/api/v2/jobs/<id>/stdout/?format=txt
Create inventoryPOST/api/v2/inventories/JSON body needed

Tips and Best Practices

  • Use Personal Access Tokens for CI/CD or scripts (not passwords).
  • Always use HTTPS for security.
  • Use the /api/ browser docs for full details and live “try it now” features.
  • Automate with Python (requests), Bash (curl), or your favorite language.
  • Respect rate limits and error messages—read the "detail" field in API responses for helpful info.
  • For bulk/complex changes, look at tower-cli (deprecated, now awx-cli) or the newer awx CLI tool.

Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

Certification Courses

DevOpsSchool has introduced a series of professional certification courses designed to enhance your skills and expertise in cutting-edge technologies and methodologies. Whether you are aiming to excel in development, security, or operations, these certifications provide a comprehensive learning experience. Explore the following programs:

DevOps Certification, SRE Certification, and DevSecOps Certification by DevOpsSchool

Explore our DevOps Certification, SRE Certification, and DevSecOps Certification programs at DevOpsSchool. Gain the expertise needed to excel in your career with hands-on training and globally recognized certifications.

0
Would love your thoughts, please comment.x
()
x