Ansible Dynamic Host Vars - PullRequest
       18

Ansible Dynamic Host Vars

1 голос
/ 20 сентября 2019

Возможно ли заменить {{ item.name }} в цикле, а затем использовать его для поиска хоста?

Примечание: {{item.name}} является динамическим и заранее неизвестным.

Host Vars созданы так, что:

existing_item_this: "1234"
existing_item_that: "2345"

Предположим, что мы перебираем список, где item.name равно "this", затем "that".Я хочу, чтобы ansible сначала заменил {{ item.name }} на "this" , а затем .

Возможно ли это?

Такое ощущение, что это должно быть проще.Есть ли более простой способ?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Задание ниже

- debug:
    msg: "{{ hostvars[inventory_hostname]['existing_item_' ~ item] }}"
  loop:
    - 'this'
    - 'that'

дает

ok: [127.0.0.1] => (item=this) => {
    "msg": "1234"
}
ok: [127.0.0.1] => (item=that) => {
    "msg": "2345"
}

Q: Такое ощущение, что это должно быть проще.Есть ли более простой способ?

A: Можно использовать Lookup с плагином vars .Задание ниже

- debug:
    msg: "{{ lookup('vars', 'existing_item_' ~ item) }}"
  loop:
    - 'this'
    - 'that'

дает тот же результат.

0 голосов
/ 20 сентября 2019

Работает ли определение переменных, как показано ниже, для вашего сценария?

existing_item:
  this: “1234”
  that: “2345”

Затем выполните цикл по существующему элементу.

...