Я согласен с ответом от zacherates.
Но вы можете сделать вызов intern () в ваших нелиберальных строках.
Из примера zacherates:
// ... but they are not the same object
new String("test") == "test" ==> false
Если вы ставите нелитеральное равенство строки, это правда
new String("test").intern() == "test" ==> true
Per Ansible FAQ :
Другое правило - «усы не стекают». Мы часто видим это:
{{ somevar_{{other_var}} }}
Вышеупомянутое НЕ РАБОТАЕТ, если вам нужно использовать динамическую переменную, используйте словарь хостов или vars соответственно:
blockquote>{{ hostvars[inventory_hostname]['somevar_' + other_var] }}
Итак, в вашем случае:
- debug: msg={{hostvars[inventory_hostname][Component].community_release_num}}
Или:
- debug: msg={{vars[Component].community_release_num}}
Или (поскольку Ansible 2.5):
- debug: msg={{(lookup('vars', Component)).community_release_num}}