如果 GET 变量不存在,则发送 POST

Send a POST if the variable does not exist with the GET

我正在尝试使用 ansible 进行 2 次调用 api。 第一个是 GET,它必须 return 一个 json 响应并匹配(或不匹配)变量。 第二个是 POST 仅当 GET 匹配变量时。

- name: check if hostname exist
  uri:
    url: 'some_url'
    headers:
      Authorization: 'api-key'
      Accept: 'application/json'
    method: GET
    validate_certs: yes
    return_content: yes
    body_format: json
  register: result

- name: defined the new variable
  register: resultmatch
  when: "{{ ansible_hostname }} is in result.content"

- name: create the group with the hostname
  uri:
    url: ""
    headers:
      Authorization: 'api-key'
      Accept: 'application/json'
    method: POST
    validate_certs: yes
    body: "{
            '{{ hostname }}': '{{ ansible_hostname }}'
          }"
    return_content: yes
    body_format: json
  register: add_secret
  when: resultmatch is defined

我希望脚本在主机名设置到变量中时创建一个新组。 但似乎变量结果不被视为 json 内容,我还有另一个问题:

  • name: defined the new variable
    ^ here

没有ansible模块无法注册。这里没有要注册的输出。

- name: defined the new variable
  register: resultmatch
  when: "{{ ansible_hostname }} is in result.content"

如果您需要定义一个新变量,请按如下方式使用。

- name: defined the new variable
  set_fact:
    resultmatch: true
  when: "{{ ansible_hostname }} is in result.content"