просто для развлечения. Отправляю пост запрос след кодом
- name: Add new endpoint to Portainer
uri:
url: '{{ portainer.url }}/api/endpoints'
method: POST
headers:
Authorization: "Bearer {{ content.json.jwt }}"
remote_src: yes
force: yes
body_format: form-multipart
body:
Name: "playground"
EndpointCreationType: "1"
URL: "tcp://{{ ansible_host }}:2375"
TLS: "true"
TLSCACertFile:
content: "{{ ca.cert }}"
filename: "{{ ca.cert }}"
TLSCertFile:
content: "{{ client.cert }}"
filename: "{{ client.cert }}"
TLSKeyFile:
content: "{{ client.key }}"
filename: "{{ client.key }}"
register: response
Portainer отвечает, что не видит PEM data в переданном сертификате, если через curl или httpie отправлять те же сертификаты, то все ок. Куда копать, в чем я ошибся? Wireshark говорит, что не полный путь отправляется в filename (только конечное название файла, без пути) , поэтому попробовал добавить content, но не помогло
Если я не ошибаюсь, вывод с -v вам покажет какой запрос уходит
Он показывает только вывод модуля с аргументами, без самого запроса
Я через curl это делал раньше. Попробуйте добавить больше хедеров: -H "accept: application/json" -H 'Content-Type: multipart/form-data' И у меня там стоит -F "EndpointType=1" А не endpointcreationtype
В новых версиях обновилась эта форма, сам с этим долго торчал
Возможно, у меня когда-то возникли косяки с новыми и я остался на бородатых старых.
Причем в свагере до сих написано по старому, поэтому долго искал инфу
Если я добавлю еще информации, может кто-то поможет. Сравнивая пакеты в wireshark пришел к выводу, что ansible отправляет файлы сертификатов в base64, когда httpie не оборачивает в base64. Как-то можно это отключить? Ставить text/plain не помогло, точно так же отправляет base64
{{ my_shit_var | b64decode }} попробуй
А почему тебе это важно? Отправляет и отправляет
Portainer отвечает, что не видит PEM data в переданном сертификате
Обсуждают сегодня