LINUX.ORG.RU

Ansible передать параметр внешней петли в условие when в петле внутренней.

 


0

1

Привет, ЛОР. Собственно вопрос сам себя сформулировал.

Есть внешний луп, состоящий из списка

my_cool_dict:
  Uno:
    word: "privet"
  Duo:
    word: "Paka"
  Tre:
    word: "Agu"

Который я передаю во внутрь вот так

- name: chick chick
  include_tasks: my_task.yaml
  loop: " {{ my_cool_dict }}"
  loop_control:
    loop_var: outer

Внутри таски my_task.yaml создаются локальные факты test.fact вида

{
    "general": {
        "Privet": "true",
        "Paka": "true",
        "Agu": "true"
    }
}

Внутри этой самой таски мне как то нужно получить таски чот не получается достучаться до локальных фактов с помощью внешней переменной

when: ansible_local.test.general.outer.word == 'Privet'

говорит, что нет такого поля outer.

Как это делают настоящие профессионалы своего дела, подскажи ЛОРчик, а?

★★★

Последнее исправление: SpaceRanger (всего исправлений: 1)

Есть внешний луп, состоящий из списка

Только это не список, а словарь

Убедись, что у тебя цикл в принципе работает

Внутри этой самой таски мне как то нужно получить таски чот не получается достучаться до локальных фактов с помощью внешней переменной

Ты делаешь что-то очень извращённое. Возможно, перепутал ansible с языком программирования - это распространённая ошибка

Если твои «агу-чики» имеют какой-то смысл, попробуй как-то так:

ansible_local.test.general[outer.word]

Но в любом случае это довольно извращённый вариант и в реальных задачах так не делают

router ★★★★★
()

Ничо не понял, в таком виде оно не работает, т.к. loop ждет именно список

Нужно либо список сделать именно списком, а не словарем, либо цикл делать типа with_dict

по-поводу того, что внутри цикла - есть же debug, можно посмотреть в каком виде оно вообще внутрь попадает - и из этого уже рисовать when

# my_task.yaml
- debug:
    var: outer
CaHbl4
()
Ответ на: комментарий от router
ansible_local.test.general[outer.word]

Вот оно! Доступ не по точке, а в квадратных скобочках!Благодарствую, добрый молодец!

SpaceRanger ★★★
() автор топика
Последнее исправление: SpaceRanger (всего исправлений: 1)