Как я могу использовать вложенные переменные в ansible для динамической установки группы хостов, на которой работает playbook? - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в ansible и не могу понять это. У меня есть книга игр, которая настраивает кучу объектов kubernetes. Значение hosts должно интерполироваться динамически. Ansible не разрешает вложение переменных, поэтому я не уверен, как заставить это работать. ** live: ** "{{k8s - {{cluster}} - {{datacenter}} или lookup ('live_node', server)}}" ****

Любые предложения будут высоко оценены .

- hosts: "{{ Live }}"
  max_fail_percentage: 1
  gather_facts: no
  vars:
    live: **"{{ k8s-{{cluster}} -{{ datacenter }} or lookup('live_node', server)}}"**
  tasks:
    - block:
        - include: kubernetes_tasks/k8s.yaml

1 Ответ

1 голос
/ 06 марта 2020

Вы допустили общую ошибку при работе с jinja2: все внутри усов является (плюс или минус) выражением python; так что не пытайтесь делать больше шаблонов, просто ссылайтесь на переменную или выражение, как вы делали бы это в выражении print:

vars:
  live: "{{ ('k8s-' + cluster + '-' + datacenter) or lookup('live_node', server) }}"

Теперь, поскольку вы были настолько неточны в своем вопросе, это не совсем точно, так как левая часть всегда будет правдивой, и, таким образом, lookup никогда не будет работать, но если вы сделаете то, что сказал Джек, и обновите некоторые примеры, мы можем помочь вам с более синтетически точным ответом

...