Я хочу отправить ios_facts в gitlab с помощью модуля ansibles uri.
- name: get ios facts
ios_facts:
gather_subset: all
register: ios_facts
- name: commit to gitlab
delegate_to: localhost
uri:
url: http://gitlab/api/v4/projects/2/repository/commits
method: POST
body_format: json
status_code: 201
headers:
PRIVATE-TOKEN: "xxxxxxxxxxxxxx"
Content-Type: "application/json"
body: |
{
"branch": "master",
"commit_message": "{{ ansible_net_hostname }} update",
"actions": [
{
"action": "update",
"file_path": "conf/{{ ansible_net_hostname }}",
"content": "{{ ansible_net_config }}"
}
]
}
Playbook работает нормально, если я использую любую переменную, отличную от ansible_net_config , или если я вставляю необработанное содержимое ansible_net_config вместо использования ссылки jinja2. Ansible_net_config - это большая строка, использующая \ n в качестве новой строки и содержащая некоторые специальные символы. Я полагаю, что проблема возникает из-за того, что я не получаю действительный json при разборе playbook.
Затем я получаю HTTP-ошибку 400: Неверный запрос
Есть ли какой-нибудь фильтр, который я могу применить, или что-то еще, что я могу упустить?