【问题标题】:Ansible Tower API not accepting tokenAnsible Tower API 不接受令牌
【发布时间】:2018-05-07 13:48:33
【问题描述】:

我在Tower 服务器中执行以下POST

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


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

然后返回错误:

{"detail":"未提供身份验证凭据。"}

还尝试了以下方法:

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

按照here的建议。

POST 正文中传递原始用户名/密码时也会发生同样的情况(并跳过Authorization 标头):

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

知道为什么这不起作用吗?

【问题讨论】:

  • 链接说使用Authorization: Token xxxxxxxx,而不仅仅是Authorization: xxxxxxxxxxx。也许就是这个?
  • 也试过这个

标签: ansible ansible-tower ansible-awx


【解决方案1】:
Authorization: Bearer <oauth2-token-value>

See here,“3. OAuth 2 令牌身份验证”部分,“Curl 示例”部分。

【讨论】:

    【解决方案2】:

    我最终使用基本身份验证如下:

    1.创建您想用来运行 ci 作业的用户

    2.在相应的 CI 工作中执行以下帖子:

    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
    

    在哪里

    • awx_data.json 是一个包含实际 POST 正文的文件
    • MY_AUTH_TOKEN 是上述用户的典型base64 编码用户名+密码

    您还可以分配上述结果并与201 进行检查,这是AWX 在成功创建工作时返回的结果。

    轮询AWX 服务器以检查作业是否成功完成当然是另一回事了。

    【讨论】:

    • 嘿!您能否在您的答案中发布您在说..邮递员时提出的等效 POST 请求?我正在尝试从 /api/v2/users/13/personal_tokens/ 请求个人令牌,但它只能在 Ansible 网站上使用。如果我尝试使用 Postman,通过正文中的正确用户名和密码发送,它仍然显示“未提供身份验证凭据。”
    猜你喜欢
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多