К сожалению, это невозможно. Это ограничение основано на реализации API Kubernetes, не связанного с Ansible или модулем k8s_facts.
Есть несколько обходных путей, но в конечном итоге я думаю, что использование селектора на основе множеств - ваш лучший вариант. Это будет выглядеть примерно так:
- k8s_facts:
kind: Node
label_selectors:
- "beta.kubernetes.io/instance-type in (e1.xlarge, f1.xlarge, g1.xlarge)"
Вы также должны иметь возможность извлекать типы экземпляров в переменную для удобства чтения и обслуживания кода.
Другой вариант - просто зациклитьk8s_facts
задание для каждого типа экземпляра, которое, я полагаю, вы уже рассмотрели: "beta.kubernetes.io/instance-type={{ item }}"
.
Наконец, один из ваших примеров в вопросе будет не работать:
label_selectors:
- "beta.kubernetes.io/instance-type=e1.xlarge"
- "beta.kubernetes.io/instance-type=f1.xlarge"
- "beta.kubernetes.io/instance-type=g1.xlarge"
Это ищет узлы, которые удовлетворяют всем из этих критериев (то есть e1.xlarge && f1.xlarge && g1.xlarge
), которые всегда будут равны нулю.