Ansible не принимает модуль сбоя клиента

#ansible #devops

#ansible #devops

Вопрос:

 - name:                             "Waiting for URL to come up."
  uri:
    url:                            "{{ url }}/libs/granite/core/content/login.html"
    status_code:                    200
  register:                         result
  until:                            result.status == 200
  retries:                          10
  delay:                            10
  fail:
    msg: "Service was not available after 10 minutes. Files were installed except for the ones that required AEM to be available"
 

Я добавляю сообщение о сбое, чтобы при сбое задачи у нас был значимый результат.
Однако я получаю сообщение об ошибке:

  line 3, column 3, but maynbe elsewhere in the file depending on the exact syntax problem.nnThe offending line appears to be:nnn- name:                             "Waiting for URL to come up."n  ^ heren"}[0
 

Я проверил документацию, и, похоже, это правильный способ сделать. Чего мне не хватает?

Ответ №1:

Если вы посмотрите на документацию к uri модулю, вы заметите, что там нет fail параметра. Однако существует отдельный fail модуль. Если вы хотите использовать это, вам нужно будет переписать свою uri задачу так, чтобы она не вызывала сбой Ansible, а вместо этого записывала результат задачи, чтобы вы могли использовать его в последующем fail действии.

 - name:                             "Waiting for URL to come up."
  uri:
    url:                            "{{ url }}/libs/granite/core/content/login.html"
    status_code:                    200
  until:                            result.status == 200
  retries:                          10
  delay:                            10
  register: uri_result
  ignore_errors: true

- name: fail with custom message
  when: uri_result is failed
  fail:
    msg: >-
      Service was not available after 10 minutes. Files
      were installed except for the ones that required AEM
      to be available.
 

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

1. Можете ли вы записать «register» дважды, как вы это сделали?

2. Нет, вы не можете. Я не заметил более раннего :). Позвольте мне это исправить.

3. Просто вопрос, в этом случае вы используете uri_result, не удалось. ЕСЛИ я захочу использовать то же условие в других задачах после. Могу ли я просто использовать result.status == 200. Иначе как бы вы определили, был ли он успешным? Например: aem == «что-то и uri_result == ??

4. Вы, конечно, можете проверить result.status , если хотите. Вы можете проверить успешную задачу, проверив uri_result is success .

5. Отличные советы! Я также видел «не сбой». Это я добавил. Должно работать так же, как «is success» правильно?