Search code examples
ansibleansible-toweransible-awx

Ansible Tower API not accepting token


I am performing the following POST in a Tower server:

http://<my-tower-url>/api/v2/job_templates/10/launch/


Headers:
Content-Type:application/json
Authorization:sometokenhere

And getting back the error:

{"detail":"Authentication credentials were not provided."}

Have also tried the following:

Headers:
Content-Type:application/json
Authorization:Token sometokenhere

as suggested here.

Same happens when passing raw username/password in the POST body as follows (and skipping the Authorization header):

{
    "username": "myusername",
    "password": "mypass",
    "inventory": "inventoryname",
    "verbosity": 0,
    "extra_vars": {
        "var1": "somevar1",
        "var2": "somevar2",
        "var3": "somevar3",
        "var4": "somevar4",
        "var5": "somevar5"
    }
}

Any idea why this is not working?


Solution

  • I ended up using basic auth as follows:

    1.create the user which you want to run your ci jobs with

    2.perform the following post at the respective CI job:

    curl -o /dev/null -s -w \"%{http_code}\n\" -X POST http://<my-tower-url>/api/v2/job_templates/10/launch/ \
                      -H \"authorization: Basic $MY_AUTH_TOKEN\" \
                      -H \"content-type: application/json\" \
                      -d \"@awx_data.json
    

    Where

    • awx_data.json is a file holding the actual POST body
    • MY_AUTH_TOKEN is the tyical base64 encoded username+password of the above user

    You can also assign the above result and check it against 201 which is what AWX returns upon successful job creation.

    Polling the AWX server to check if the job was successfully finished is another story of course.