#ansible #yaml #jwt-auth
#ansible #yaml #jwt
Вопрос:
Я пытаюсь включить токен JWT в свой Ansible playbook для доступа к конечной точке 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 в playbook. Кто-нибудь может помочь, предоставив рекомендации о том, как я могу включить токен JWT в playbook?
Ответ №1:
Давайте посмотрим на это сообщение об ошибке:
ОШИБКА! конфликтующие инструкции действий: uri, заголовки
Мы можем видеть uri
, что и headers
то, что он говорит, противоречат друг другу в качестве ключей определения задачи здесь:
tasks:
- name: Get Ports
uri:
...
headers:
...
Ansible рассматривает оба этих действия как отдельные действия над одной и той же задачей и не знает, что с этим делать. Вместо этого вам нужно передать headers
модуль в качестве опции uri
.
В удивительном мире 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 }}"
Комментарии:
1. Спасибо @Kevin C — отступ исправлен. Кстати, как мне получить переменную для обработки токена JWT от POSTMAN?