Выполняется до цикла с регулярным выражением в условном выражении

Мне нужно проверить команду stdout с шаблоном регулярных выражений в до цикла. Когда я использую regex_search для отображения отладочной MSG все работает нормально:

    - name: Checking if node is ready
      shell: "kubectl --kubeconfig {{kubeconf}} get nodes"
      register: k_output

    - debug:
        msg: "{{k_output.stdout | regex_search(node_hostname | string + '\\s+Ready')}}"

Сообщение

ok: [any_node_hostname] => {
    "msg": "any_node_hostname   Ready"
}

Но если я пытаюсь использовать эту конструкцию внутри, пока задача условного оператора не завершится с синтаксической ошибкой.

    - set_fact:
        regexp_pattern: "{{node_hostname | string + '\\s+Ready'}}"

    - debug:
        msg: "{{regexp_pattern}}"

    - name: Checking if node is ready
      shell: "kubectl --kubeconfig {{kubeconf}} get nodes"
      register: k_output
      until: "{{k_output.stdout | regex_search(regexp_pattern)}}" != ""
      retries: 5
      delay: 10

То же самое поведение без set_fact, когда я просто копирую и вставляю полную строку {{k_output.stdout | regex_search(node_hostname | string + '\\s+Ready')}} до условного утверждения. Итак, как я могу использовать regex_search или что-то, что подходит для этого случая до?

1 ответ

У вас есть синтаксическая ошибка в until: утверждение: вы не должны заключать в кавычки выражения, как в следующем примере: повторное выполнение задачи до тех пор, пока не будет выполнено условие

    until: k_output.stdout | regex_search(regexp_pattern) != ""

Я надеюсь, это поможет

Другие вопросы по тегам