ошибка при оценке условного (restart_status.rc == 0): ‘объект dict’ не имеет атрибута ‘rc’ «}

ansible

#ansible

Вопрос:

Эта команда терпит неудачу каждый раз в Ansible, как я могу понять, почему это происходит и в чем может быть причина?

 ---
- name:                      "Restart service httpd via service module"
  service:
    name:                    httpd
    state:                   restarted
  register:                  restart_status
  until:                     restart_status.rc == 0
  retries:                   2
  delay:                     10
  when:                      infrastructure_type == 'cloud'
  changed_when:              restart_status.changed
  ignore_errors:             yes
 

Ошибка, которую я получаю, это:

 error while evaluating conditional (restart_status.rc == 0): 'dict object' has no attribute 'rc'"}
 

Ответ №1:

Это связано .rc с тем, что он специфичен для command: shell: модулей и; service: модуль не содержит документированных выходных переменных, что означает, что ansible считает, что он может только добиться успеха или потерпеть неудачу, но в остальном ему больше нечего вам предложить

Очень вероятно, что выражение, которое вам нужно until: restart_status is succeeded , использует succeeded тест

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

1. «Is succeded» будет означать, что ему удалось перезапустить службу без ошибок, верно?

2. На самом деле это зависит от самого модуля, но можно только предположить, что это то, для чего state: restarted он предназначен, да. Если вы обнаружите, что это не так, не стесняйтесь открывать проблему