Ansible — «блок» не является допустимым атрибутом для игры

#ansible #ansible-2.x

Вопрос:

Я пытаюсь понять, как устранить сообщение об ошибке: ОШИБКА! «блок» не является допустимым атрибутом для игры

Как мне этого добиться? Я пытаюсь использовать условие «блокировать», но оно не работает. Я больше не знаю, что искать.

Код:

 ---

- name: Get diagnostic info block
  block:
    - name: Get top process diagnostic info
      script: library/diag_top_processes.ps1
      failed_when: false
      changed_when: false
      register: diag_top_proc_out

    - name: Get memory and pagefile usage diagnostic info
      script: library/diag_memory_and_pagefile.ps1
      failed_when: false
      changed_when: false
      register: diag_mem_page_out

    - name: Get CPU info
      script: library/diag_cpu_info.ps1
      failed_when: false
      changed_when: false
      register: diag_cpu_info_out

    - name: Init diag message
      set_fact:
        diag_msg: "Diagnostic information:"
        proc_info:
          "{{ diag_top_proc_out.stdout|regex_replace('rn|n|r', '') }}"
        cpu_info: "{{ diag_cpu_info_out.stdout_lines | join(' ') }}"

    - name: Add top process info
      set_fact:
        diag_msg: "{{ [diag_msg, proc_info] | join(' ') }}"

    - name: Add memory info
      set_fact:
        diag_msg:
          "{{ [diag_msg, diag_mem_page_out.stdout_lines[0]] | join(' ') }}"

    - name: Add CPU info
      set_fact:
        diag_msg:
          "{{ [diag_msg, cpu_info] | join(' ') }}"

  rescue:
    - name: Diag info collection failed, setup variable
      set_fact:
        diag_failed: true
 

Ошибка при использовании «блока» для воспроизведения:

 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
ERROR! 'block' is not a valid attribute for a Play

The error appears to be in '/home/keith/Ansible/ansible-role-high-cpu-usage-win/tasks/get_diagnostic.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:


- name: Get diagnostic info block
  ^ here
 

Комментарии:

1. Вы используете block в игре, а не в задании. Я предполагаю, что вы выполняете ansible-playbook [your_file].yml . Вы можете увидеть пример того, как написать сборник пьес здесь docs.ansible.com/ansible/latest/user_guide/…

Ответ №1:

Этот файл будет исправлен только в том случае, если вы это сделаете

 - include_tasks path/to/get_diagnostic.yml
 

Как сказал Лопес, его нельзя вызвать с помощью командной строки ansible-playbook.

Ответ №2:

Перепишите игру как:

 ---
 - name: Play
   tasks:
    - name: Get diagnostic info block
      block:
        - name: Get top process diagnostic info
           script: library/diag_top_processes.ps1
           failed_when: false
           changed_when: false
           register: diag_top_proc_out
           ....
      rescue:
         - name: Another tasks
           ....