Цикл по подмножествам массива Ansible - PullRequest
1 голос
/ 19 июня 2019

Я работаю над Ansible playbook, чтобы автоматизировать развертывание некоторых панелей мониторинга в Grafana. У меня есть большой список элементов, которые будут входить в каждую панель, как я могу зациклить массив, но в наборах из 4 элементов из массива?

Вот цикл

- name: Loop through the topcs to fill in the template with the topic names (replacing the {kafka_topic_placeholder}) and append them to the working file
      shell: sed 's/{kafka_topic_placeholder}/{{ item }}/g' "{{ widget_template_file_path }}" >> "{{ working_file_name }}"
      loop: "{{ kafka_topic_names }}"

Но я хочу запустить этот набор команд:

- name: Create the beginning of row
   shell: sed 's/{dashboard_id_placeholder}/{{ dashboard_id }}/g' "{{ dashboard_template_file_part_1 }}" > "{{ final_output_file_name }}"

- name: Add the contents of our working file
   shell: cat "{{ working_file_name }}" >> "{{ final_output_file_name }}"

- name: Add the ending of the row
   shell: sed 's/{overwrite_placeholder}/{{ overwrite_dashboard }}/g' "{{ dashboard_template_file_part_2 }}" >> "{{ final_output_file_name }}"

За этот список:

kafka_topic_names:
- topic1
- topic2
...
- topicN

Итак, я хочу получить столько строк, сколько нужно, чтобы в каждой строке было по 4 темы. Я могу заставить его работать со всем в одной строке, но я не уверен, как остановиться во время цикла, выполнить нужные мне команды, затем продолжить цикл с того же места в массиве

1 Ответ

1 голос
/ 20 июня 2019

Вы можете выполнить все команды в одной задаче, как сценарий оболочки.

- name: Create the beginning of row
  shell: |
    sed 's/{kafka_topic_placeholder}/{{ item }}/g' "{{ widget_template_file_path }}" >> "{{ working_file_name }}"
    sed 's/{dashboard_id_placeholder}/{{ dashboard_id }}/g' "{{ dashboard_template_file_part_1 }}" > "{{ final_output_file_name }}"
    cat "{{ working_file_name }}" >> "{{ final_output_file_name }}"
    sed 's/{overwrite_placeholder}/{{ overwrite_dashboard }}/g' "{{ dashboard_template_file_part_2 }}" >> "{{ final_output_file_name }}"
  loop: "{{ kafka_topic_names }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...