Erick
--
igi
это косяк телеги видимо, я писал два минуса
Erick
косяк...
Ждун
фича
Алексей
Есть массивная перменная которую хочу разбить на подфайлы (если возможно)
Подскажите как в файловую структуру оттобразить вот такую переменную:
bind_zone_domains:
- name: "test.ru"
ip: xx.yy.zz.ww
- name: "test2.ru"
ip: xx.yy.yy.zz
Доменов много, у каждого домена могут различаться конфиги, в идеале хочу что то типа
group_vars/
DNS-SERVER/
bind_zone_domains/
test.ru
test2.ru
Timur
Алексей
Есть bind сервер настроенный руками - перенести конфиг в ansible
Timur
И?
Алексей
есть роль https://github.com/bertvv/ansible-role-bind
Алексей
хочу для каждой зоны отдельный файл писать, а не всё в одном файле хранить - это неудобно
Sergey
Есть другие предложения?
Не хотеть странного :-)
Сделать списки с префиксом, склеивать их спокойно фильтрами, выдыхать.....
Алексей
Алексей
Timur
Фильтр combine в помощь
Алексей
что такое AnsibleSequence?
Timur
Извините, телепатическая связь барахлит
Timur
Не могу код просканировать
Алексей
это ансибл ругается
Timur
Timur
Не понял - на что
Sergey
Алексей
Смотри, я сделал как выше файловую структуру описал.
только в bind_zone_domains
файликам добавил расширение .yaml - без этого расширения они не видны, сэтим расширение они вот такую ошибку дают
Алексей
Sergey
Прямо на слайде написано, КАК склеивать
Timur
Алексей
Timur
Timur
Но на вопрос показать больше вы не отвечаете
Алексей
в файле test.ru.yaml
- name: test.ru
hosts:
- name: pub01
ip: 192.0.2.1
ipv6: 2001:db8::1
aliases:
- ns
- name: '@'
ip:
- 192.0.2.2
- 192.0.2.3
ipv6:
- 2001:db8::2
- 2001:db8::3
aliases:
- www
- name: priv01
ip: 10.0.0.1
Алексей
Timur
Алексей
вот я хочу для каждого элемента bind_zone_domains отдельный файл.
ещё вопросы? что ещё дополнить?
Timur
Я так непонятно выражаюсь?
Алексей
код роли? Вот тут вот всё https://github.com/bertvv/ansible-role-bind
Timur
Может, это я такой тупой?
Алексей
Я не понимаю какой код ты хочешь от меня увидеть
Timur
Тот, который ты выполняешь и на котором возникает ошибка
Алексей
Алексей
роль не правил всё можно там поглядеть
Timur
вот
Это не код, а просто вложенный список
Timur
На каком шаге и каком таске конкретно возникает ошибка?
Алексей
Timur
Объединение списков можно проще сделать фильтрами
Алексей
мб
Sergey
Timur
Timur
Непонятно - зачем для этого джинджу туда пихать
Алексей
https://github.com/bertvv/ansible-role-bind/blob/master/defaults/main.yml#L6
Вот это что? Словарь или список?
Timur
Это список словарей
Алексей
ок, мы этот список словарей как можем на файлы отобразить?
Sergey
Алексей
я понял
Sergey
Алексей
нет, не понял.
Алексей
в папку bind_zone_domains/ положил файлик test.ru.yaml
Timur
Алексей
Запустил указанную выше роль для выполнения на сервере - получил ошибку (сразу после запуска)
PLAY [all] ***********************************************************************************************************************************************************************************************************************************
ERROR! failed to combine variables, expected dicts but got a 'dict' and a 'AnsibleSequence':
{"bind_allow_query": ["localhost", "nic_slaves", "ext_slaves", "qrator_slaves", "internals"], "bind_zone_master_server_ip": "172.16.0.7"}
[{"name": "test.ru"}, {"hostmaster_email": "hostmaster"}, {"allow_update": "none"}, {"name_servers": ["ns.nic.ru.", "ns.test.ru.", "ns8-l2.nic.ru.", "ns4-cloud.nic.ru.", "ns8-cloud.nic.ru."]}, {"hosts": [{"ip": "192.0.2.1", "ipv6": "2001:db8::1", "name": "pub01", "aliases": ["ns"]}, {"ip": ["192.0.2.2", "192.0.2.3"], "ipv6": ["2001:db8::2", "2001:db8::3"], "name": "@", "aliases": ["www"]}]}]
Алексей
Алексей
содержимое test.ru.yaml
- name: "test.ru"
hostmaster_email: "hostmaster"
allow_update: none
name_servers: ['ns4-l2.nic.ru.','ns.test.ru.', 'ns8-l2.nic.ru.', 'ns4-cloud.nic.ru.', 'ns8-cloud.nic.ru.']
hosts:
- name: pub01
ip: 192.0.2.1
ipv6: 2001:db8::1
aliases:
- ns
- name: '@'
ip:
- 192.0.2.2
- 192.0.2.3
ipv6:
- 2001:db8::2
- 2001:db8::3
aliases:
- www
Вероятно дело в нём. Но я не пойму в чём именно.
Timur
c чего это?
С того. В YAML дефис испольуется для обозначения элемента списка. Нельзя его использовать в качестве названия переменной или группы
Алексей
Timur
Timur
И она автоматом заменяет дефис в именах группы на подчеркивание
Timur
Но от совсем инициативных это не спасает, как видим
Timur
Уберите дефис в имени группы и проверьте выполнение
Timur
Путь к переменным тоже поправьте соответственно
Алексей
ERROR! failed to combine variables, expected dicts but got a 'dict' and a 'AnsibleSequence':
дело было не в бобине
Timur
Ну, не хотите слушать, что вам говорят - как хотите
Алексей
вопрос был как отобразить список словарей на файлы. Я чёт не догоню.