【问题标题】:Issues inserting JWT token into Ansible Playbook将 JWT 令牌插入 Ansible Playbook 的问题
【发布时间】:2020-10-06 08:14:47
【问题描述】:

我试图在我的 Ansible 剧本中包含一个 JWT 令牌以访问 API 端点。这是剧本:

---
 - name: Request ex API
   hosts: localhost
   connection: local
   tasks:
      - name: Get Ports
        uri:
            method: GET
            url: "https://sandboxapi.domain.com/ex/v3/port/userport"
            return_content: yes
        headers:
            Accept: application/json
            Authorization: "JWT {{token.json.token}}"
        register: response
      - debug:
            msg: "{{ response.content }}"

但是,我得到了这个错误信息:

lw@APMBC02D20RHMD6R playbooks % ansible-playbook ex.yml
ERROR! conflicting action statements: uri, headers

错误似乎出现在“/Users/lw/Ansible-EX/playbooks/ex.yml”中:第 6 行第 9 列,但可能 根据确切的语法问题,位于文件中的其他位置。

违规行似乎是:

   tasks:
      - name: Get Ports
        ^ here

我不确定如何将 JWT 令牌包含到剧本中。任何人都可以通过提供有关如何将 JWT 令牌包含到剧本中的指导来提供帮助吗?

【问题讨论】:

    标签: ansible yaml jwt-auth


    【解决方案1】:

    让我们看看那个错误信息:

    错误!冲突的操作语句:uri、标头

    我们可以看到 uriheaders 在此处作为任务定义的键发生冲突:

       tasks:
          - name: Get Ports
            uri:
                ...
            headers:
                ...
    

    Ansible 将这两个操作视为对同一任务的单独操作,并且不知道如何处理。相反,您需要做的是将headers 作为选项传递给the uri module

    在美妙的 YAML 世界中,这意味着改变一些空白:

       tasks:
          - name: Get Ports
            uri:
                method: GET
                url: "https://sandboxapi.domain.com/ex/v3/port/userport"
                return_content: yes
                headers:
                    Accept: application/json
                    Authorization: "JWT {{token.json.token}}"
    

    【讨论】:

      【解决方案2】:

      您的缩进不正确。试试:

      ---
      - name: Request ex API
        hosts: localhost
        connection: local
        tasks:
          - name: Get Ports
            uri:
              method: GET
              url: "https://sandboxapi.domain.com/ex/v3/port/userport"
              return_content: yes
              headers:
                Accept: application/json
                Authorization: "JWT {{ token.json.token }}"
              register: response
      
          - debug:
              msg: "{{ response.content }}"
      

      【讨论】:

      • 感谢@Kevin C - 缩进修复了它。顺便说一句,我如何有一个变量来处理来自 POSTMAN 的 JWT 令牌?
      猜你喜欢
      • 2019-11-21
      • 2018-02-07
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      • 2019-12-08
      • 2017-10-08
      相关资源
      最近更新 更多