Выполняется до цикла с регулярным выражением в условном выражении - PullRequest
1 голос
/ 24 июня 2019

Мне нужно проверить команду 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 Ответ

1 голос
/ 24 июня 2019

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

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

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

...