Выполняется до цикла с регулярным выражением в условном выражении
Мне нужно проверить команду 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) != ""
Я надеюсь, это поможет