правилам:
1. Строка символов- abcde....
2. Для нужного количества символов из строки нужно составить список
3. К каждому элементу списка надо добавить определенную строку
num: 2
litters: abcde
names: "{{ letters[:num] | list }}"
^ вот так я получу ["a", "b"]
Нужно же получить ["host-a", "host-b"]
Какой мне нужно фильтр применить после list?
{{ ["host"] | product(letters[:num | int] | list) | map("join", "-")}} $ ansible -m debug -a 'msg={{ ["host"] | product(letters[:num | int] | list) | map("join", "-")}}' -e 'letters=abc num=2' localhost localhost | SUCCESS => { "msg": [ "host-a", "host-b" ] }
Да, отлично, большое спасибо. Сложно, правда. =)
- name: Test debug: msg="host-{{ letters[item] }}" loop: "{{ range(0, num | int, 1) | flatten(1) }}"
Застрял ещё в одном месте в продолжение этой задачи. Я нагенерил имён, они нужны для создания юнитов systemd на хосте. Получается, что ролью я создаю, допустим, три сервиса: - hostname-a.service - hostname-b.service - hostname-c.service Настраиваю их и при изменениях требуется выполнить их перезапуск. Когда сервис один и его имя статично, я использую handlers, но тут наверное не получится? Можно ли передать хэндлеру имя сервиса для перезапуска при указании его в notify?
В хэндлеры муторно передавать переменные, но можно сделать финт ушами и обрабатывать сервисы как хосты в инвентори, тогда у каждого будет свой хэндлер
Они динамически создаются во время выполнения роли. Идея в том, что в инвентаре на хосте/группе хостов висит переменная, указывающая сколько экземпляров софта должно работать. Оно в принципе сделалось, но вот с перезапуском пока не соображу как лучше поступить.
А что если к примеру что то подобное -> https://pastebin.com/B48jswG6 Правда не тестил
Обсуждают сегодня