Ansible run_once with_items - PullRequest
       18

Ansible run_once with_items

0 голосов
/ 25 февраля 2020

Попытка выполнить эту задачу в Ansible только для первого элемента в with_items. Я не могу изменить переменную cluster_server_names, как это используется в другом месте. Нужна ли отдельная задача для регистрации новой переменной, содержащей только имя сервера, которое я хочу, или есть другой способ?

   - name: "Provision public IP in dev"
     uri:
       url: "{{ api_url }}/servers/{{ item }}/publicIPAddresses"
       headers:
         Authorization: "REMOVED"
         Content-Type: "application/json"
         Accept: "application/json"
       method: POST
       body_format: json
       status_code:
         - 200
         - 201
         - 202
       body:
         ports: [{"protocol":"TCP","port":"80"}]
     no_log: false
     register: blueprint
     run_once: true
     with_items:
       - "{{cluster_server_names |json_query(get_server_names)}}"

1 Ответ

1 голос
/ 25 февраля 2020

Боюсь, у меня нет способа проверить это, но попробуйте фильтр first:

- name: "Provision public IP in dev"
  uri:
    url: "{{ api_url }}/servers/{{ server }}/publicIPAddresses"
    headers:
      Authorization: "REMOVED"
      Content-Type: "application/json"
      Accept: "application/json"
    method: POST
    body_format: json
    status_code:
      - 200
      - 201
      - 202
    body:
      ports: [{"protocol":"TCP","port":"80"}]
  no_log: false
  register: blueprint
  run_once: true
  vars:
    server: "{{cluster_server_names | json_query(get_server_names) | first }}"
...