cyber
Объясни - для чего нужен такой костыль
Чтобы сделать шифрование пароля в одной роли , для разных подсистем
Timur
Чтобы сделать шифрование пароля в одной роли , для разных подсистем
А зачем для этого динамическое имя переменной? Количество подсистем и их имена меняются от запуска к запуску?
Timur
Гораздо легче и логичнее создавать одну переменную - словарь с динамическим списком ключей, чем создавать динамически кучу словарей с одним и тем же именем ключа
Timur
Добавлять новые ключи со значениями в имеющийся словарь гораздо легче. И код получается читабельнее
cyber
Ну это сути не меняет
cyber
Ключ должен быть динамическим
Timur
Не знаете, как динамически добавлять ключи в словарь?
cyber
Ага, расскажи
cyber
Не знаете, как динамически добавлять ключи в словарь?
ты имеешь ввиду такую структуру: db_pass: app1: "pass1" app2: "pass2" app3: "pass3"
cyber
?
Timur
Да
cyber
Мне хотелось бы чтобы вызавая роль с параметром application у меня эта application добавлялась дополнительным значением в словарь db_pass
Timur
Это делается через set_fact с помощью фильтра combine
Timur
Примеры с телефона не очень удобно набирать
cyber
Я пытался сделать так: set_fact: db_pass: {{application}}: {{encrypted_pass}}
Timur
Но в гугле по ключевым словам куча примеров доступна
cyber
Но у меня application не раскрывалось
Timur
Нужно через combine
cyber
combine сложно
cyber
Я в итоге сделал так
cyber
- set_fact: db_pass: "{'{{ application }}':'{{encrypted_pass}}'}"
cyber
Без combine
Timur
Это сработает только для одного элемента
Timur
Следующий вызов этой конструкции с новым значением переменной перезапишет весь словарь целиком
cyber
А потом что будет?
cyber
Блииин
Timur
https://stackoverflow.com/questions/35605603/using-ansible-set-fact-to-create-a-dictionary-from-register-results
Timur
По ссылке есть хорошие примеры
cyber
блин , ну ты меня расстроил :(
Xman
посдкажите плиз как правильно загнать переменные, чтото на ночь глядья опух clickhouse_shards: shard: - { name: "01", replicas: ["ch63.smi2", "ch64.smi2"]} - { name: "02", replicas: ["ch65.smi2", "ch66.smi2"]}
Xman
вот темплейт <?xml version="1.0"?> <!-- {{ ansible_managed }} --> <yandex> <remote_servers> {% for shard_name, replicas in clickhouse_shards.iteritems() %} <{{ shard_name }}> <shard> <internal_replication>true</internal_replication> {% for replica in replicas %} <replica> <host>{{ replica['host'] }}</host> <port>{{ replica['port'] | default(9000) }}</port> </replica> {% endfor %} </shard> </{{ shard_name }}> {% endfor %} </remote_servers> </yandex>
Xman
FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'dict object' has no attribute 'host'"}
Sergey
посдкажите плиз как правильно загнать переменные, чтото на ночь глядья опух clickhouse_shards: shard: - { name: "01", replicas: ["ch63.smi2", "ch64.smi2"]} - { name: "02", replicas: ["ch65.smi2", "ch66.smi2"]}
Ты, конечно, работаешь на СМИ2, и это - фу. Но Ансибл - не фу, поэтому он тебе совершенно точно сказал, что ключа host в словаре, который ты описываешь, просто нет.
Александр
Пробую AWX Project. Нехват Multiple credentials острый. Как выходить из положения? Открытые ключи в проекте зло, т.к. много пользователей.
Dmitry
ssh ключи?
Rad
Вчера озадачился вопросом получения результата рестарта или запуска сервиса , все что я находил это манипуляции с shell или command , т.е. через команд делаем рестарт, результат регистрируемых, а потом смотрим на rc . Но мне это не очень нравится, кто-то знает варианты аккуратней ?
Rad
А какой результат интересует?
Интересует удалось сервису стартануть или нет
Timur
Интересует удалось сервису стартануть или нет
Модуль сервиса обеспечивает нужный результат и так. Если не удалось стартануть - выдаст ошибку
Timur
Зачем что-то дополнительно проверять?
Victor
Ну значит сервис запустился
Victor
То что он потом здох это совсем другое
Timur
Совершенно верно
Timur
Проверять после старта, не упал ли сервис - это не задача ансибла
Timur
Если логика сценария требует каких-то данных о состоянии сервиса - это можно сделать, например, с помощью модуля service_facts
Timur
https://docs.ansible.com/ansible/devel/modules/service_facts_module.html#service-facts-module
Dok
Если в ансибл добавить последующую инструкцию на запуск сервиса - разве, это не будет являться своеобразной проверкой?
Timur
Можно два раза вызывать команду запуска сервиса и сравнивать результат changed. Но зачем?
matt
можно хэндлеров наворотить для этого
matt
например как тут
matt
https://github.com/kubernetes-incubator/kubespray/blob/master/roles/kubernetes/master/handlers/main.yml
Dok
Пытается запустить: Уже запущен - ок Запустил - чейнжд Не запустилось - не ок
matt
антил ретрай дилэй
Timur
bashsible сплошной
matt
да-да)
matt
тяжелые наркотики
Александр
а к чемy credentials-то?
Там и ключи и пароли и sudo
Danis
Как в Jenkins, при использовании ansiblePlaybook, передать список в качестве значения переменной для Ansible?
Danis
Такое не работает: var: "[${test}]"
Danis
Где test обычная строчка.
Zhyhanov
Кто сможет помочь, дела по примеру одного хорошего человека плейбук для монго дб, ( https://github.com/mrlesmithjr/ansible-mongodb). И у него в переменных есть такой параметр mongodb_replication_group: 'test-nodes' и с этой группы он опеределяет кто мастер а кто слейв будет в реплика сет. Так вот вопрос как он передает группу хостов которые будут использоваться ?
Zhyhanov
или возможно подскажите как можно определить какой из хостов как мастер и далее в темплейтах и тасках использовать данную переменную
Старый
на 2,7 кто перешёл уже?
Gleb
я
Gleb
очень весело
Старый
- name: Install packages yum: name: "{{ item }}" state: present with_items: "{{ packages }}" - пакет сейчас же - name: Install packages yum: name: "{{ packages }}" state: present но я чтот не врубился а перечисление где делать пакетов? снизу как раньше не работает, в name тоже
Gleb
писать не переписать
matt
либо vars в самой таске
Старый
😕нафиг столько сложностей то они делают
Gleb
please use `pkg: ['aptitude', 'python-apt', 'python-pycurl', 'apt-transport-https', 'python-pycurl', 'debian-keyring']` and remove the loop.
Victor
Руки пока не дошли, но вроде как просто вместо item сразу указываешь packages - оно должно лист нормально схавать.
Старый
ну у меня вообще dnf and portage, но а серьёзно