Модуль USIB, передающий целое число из переменной - PullRequest
0 голосов
/ 02 мая 2018

Я установил переменную из предыдущей игры, которая собирает значение (целое число), а затем вызываю ее в следующей задаче, используя модуль uri, чтобы передать ее через API. Но я всегда получаю 422 ошибку обратно, говоря: «Значение должно быть целым числом».

- name: Deploy Staging Blueprint
local_action:
  module: uri
  url: "https://{{ server_address }}/api/application/{{app_id}}/deploy"
  method: PUT
  status_code: 202
  validate_certs: no
  headers:
    Content-Type: 'application/json'
    Accept: 'application/json'
    AUTHTOKEN: "{{ server_session.token }}"
  body_format: json
  body:
    version: "{{ staging.json.version }}"
run_once: true
register: deploy
changed_when: deploy|succeeded

Сначала я попытался преобразовать его в целое число с помощью "| int", но это не сработало. Затем я попробовал «| type_debug» и проверил, что переменная является целым числом.

Но я все еще получаю эту ошибку. Если я заменим переменную на необработанное целое число, оно будет работать нормально. Используя подробный вывод, все равно кажется, что значение передается в виде строки.

"invocation": {
    "module_args": {
        "attributes": null,
        "backup": null,
        "body": {
            "version": "48"
        },
        "body_format": "json",

Есть идеи, что мне здесь не хватает или как я могу обойти это? Сейчас я использую Ansible 2.4.0 для этого проекта.

1 Ответ

0 голосов
/ 20 июля 2018

Модуль uri может принимать предварительно отформатированное тело в формате json. Попробуйте:

- name: Deploy Staging Blueprint
  local_action:
    module: uri
    url: "https://{{ server_address }}/api/application/{{app_id}}/deploy"
    method: PUT
    status_code: 202
    validate_certs: no
    headers:
      Content-Type: 'application/json'
      Accept: 'application/json'
      AUTHTOKEN: "{{ server_session.token }}"
    body_format: json
    body: '{ "version": {{ staging.json.version }} }'
  run_once: true
  register: deploy
  changed_when: deploy|succeeded
...