It might sound strange to call the Ansible Tower API right from within Ansible itself. However, if you want to connect several playbooks with each other, or if you user Ansible Tower mainly as an API this indeed makes sense. To me this use case is interesting since it is a way to document how to access, how to use the Ansible Tower API.
The following playbook is an example to launch a job in Ansible Tower. The body payload contains an extra variable needed by the job itself. In this example it is a name of a to-be launched VM.
--- - name: POST to Tower API hosts: localhost vars: job_template_id: 44 vmname: myvmname tasks: - name: create additional node in GCE uri: url: https://tower.example.com/api/v1/job_templates/{{ job_template_id }}/launch/ method: POST user: admin password: $PASSWORD status_code: 202 body: extra_vars: node_name: "{{ vmname }}" body_format: json
Note the status code (202) – the URI module needs to know that a non-200 status code is used to show the proper acceptance of the API call. Also, the job is identified by its ID. But since Tower shows the ID in the web interface it is no problem to get the correct id.