#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
....