Отделение Bereke Bank
наоборот хорошо
Ааа. Ато я прочитал как будто за это надо бить по рукам
George
... У меня рядом люди на chef'е пишут, и я им завидую иногда страшной завистью.
George
Я склоняюсь к мнению, что боль ОПС-человека является величиной константной во времени. Это нужно принять
George
Только представьте себе - у них в шаблонах перменные не глобальные, а явно перечисляются в вызове шаблонизатора.
George
И понять, что нужно решать проблему минимально сложными способами. И иногда переобуваться в прыжке - переходить с технологии на технологмю
George
И есть секции, где можно чуть-чуть попрограммировать.
Sergey
И есть секции, где можно чуть-чуть попрограммировать.
Chef/Puppet/whatever vs Ansible-срачи запрещены, если что.
Sergey
В этом чате, по крайней мере. Если очень нравится другой инструмент - берёшь его и пользуешься, и спрашиваешь про него в другом чате.
George
Я знаю, что не ок, ибо у них там своих тараканов килограммы.
George
Ну, ты, на ансибле, наверное, это можешь сэмулировать...
Не могу. Вот этот код не является валидным на ансибл: template: src: foo.conf.j2 dest: /foo.conf vars: some_var: '{{ some_var }}'
George
Чтобы описать все используемые перменные в шаблоне в template. Есть предположение, что так можно уменьшить coupling между компонентами.
George
... но это предположение. В ansible невозможно уменьшить couping, можно только увеличить.
George
Вот эту самую штуку: https://en.wikipedia.org/wiki/Coupling_(computer_programming)
George
... но это предположение. В ansible невозможно уменьшить couping, можно только увеличить.
Можно разбить все на плейбуки (отдельные) и жонглировать ими ?
kevit
так не передавай переменные в template
George
так не передавай переменные в template
Ты пойнт не понял. Совсем
George
Распиливание на независимые плейбуки работает только если между ними нет связи. Если нужно иметь связи между ними, но чуть-чуть - вот тут вот ой.
George
Здесь речь про инкапсуляцию и немного про безопасность. А ещё про сайд эффекты
kevit
ну что я понял так то что в очередной раз наступили на джинжу
George
Вообще похоже, что сделать новый template2 модуль, который будет делать то, что нужно @amarao не очень сложно
George
@amarao Вива 404!!
George
Вообще похоже, что сделать новый template2 модуль, который будет делать то, что нужно @amarao не очень сложно
Дело не в модуле template (который вообще тривиально заменяется на copy с `content`), а в модели перменных ansible. Если бы они её сделали чуть-чуть иначе (как в Питоне, например), то жизнь была бы кратно легче.
kevit
просто почему-то ты смотришь на ансибл как на язык программирования. а по сути это m4
George
Ага. Ненадлежащий инструмент для решения задач. А хочется надлежащий.
kevit
другой планеты у нас нет)
George
Варианты? Давайте поможем коллеге )
George
Модули писать не поможет, т.к. их версионировать надо
George
А в парадигме ансибла это невозможно
George
С модулями всё хуже - когда я последний раз писал (~1.7) то у ансибла не было никакого механизма для тестирования, кроме интеграционного.
George
Ничего не изменилось
Alibek
Здоровья народ! Было - name: apt add repository debian archive backports when: ansible_os_family == 'Debian' and ansible_distribution_version | version_compare('9.0', '<') В версии 2.8.3 приходится делать: - name: apt add repository debian archive backports when: ansible_os_family == 'Debian' and ansible_distribution_version | version_compare('9', '<') За что?
Anonymous
https://github.com/ansible/ansible/tree/devel/test/units/modules
checkdiff
Никто тут не писал ансимбловый модуль для модификации TXT записей у regru?
George
За юнит-тесты спасибо. С ними уже можно более-менее разрабатывать .
Timur
там же нет процедуры модерации, проверки годноты ролей и т.д.
Зависит от ролей. Есть роли, за которыми тщательно следят мейнтейнеры
Timur
Тьюринг-полный не-язык программирования с тьюринг-полным шаблонизатором, поддерживающий циклы, ветвления, обработку исключений, динамическую подгрузку кода - и всё только с глобальными перменными.
А не нужно пытаться использовать все фичи, которые есть. Особенно, если не очень понимаешь - зачем они. Нужно писать в максимально декларативном стиле. Тогда ломаться что-то будет крайне редко
Sergey
^^^ +100500
Alex
Это переменная уровня inventory, не нужно выдумывать ничего.
Не совсем понял. Что значит переменные уровня инвентори?
George
А не нужно пытаться использовать все фичи, которые есть. Особенно, если не очень понимаешь - зачем они. Нужно писать в максимально декларативном стиле. Тогда ломаться что-то будет крайне редко
Я не понимаю, зачем в комментариях постоянно намекать на то, что собеседник необразованный, обесценивать его работу и проблемы. Честно, не понимаю. Например, комментарий "особенно если не очень понимаешь". А если понимаю?
Sergey
Не совсем понял. Что значит переменные уровня инвентори?
Инвентори - окружение. Если какое-то значение должны знать все или некоторые хосты - место этому значению в group_vars для всех или некоторых групп.
Anonymous
работает?
Anonymous
скорей всего после when еще что-то. when не обязательно должен быть последним в таске
Anonymous
Можно еще так when: ansible_os_family == 'Debian' and (ansible_distribution_version is version('9.0', '<'))
Anonymous
хотя что version_compare, что version... исполняется один и тот же код
Anonymous
который не менялся с 2016 года 👀
George
Уверен, что Тимур знает, что программы можно в виде блок-схем рисовать в визуальных редакторах. Это вроде в пятом классе школы делают. А что? Декларативненько
George
Мне кажется, что этот термин девальвировался и не может быть рекомендован к использованию
Alibek
name - это ключ, в котором обычно лежит имя таска, но никак не таск сам.
вообще-то я спрашиваю за '9.0', < который теперь вдруг перестал работать
Anonymous
вообще-то я спрашиваю за '9.0', < который теперь вдруг перестал работать
"Using tests as filters is deprecated. Instead of using result|version use result is version. This feature will be removed in version 2.9." https://docs.ansible.com/ansible/devel/user_guide/playbooks_tests.html#version-comparison
Anonymous
оба примера выше у меня работают на ansible-playbook 2.8.2
Anonymous
🤷🏼‍♂️
Alibek
Anonymous
нет
Anonymous
посмотри версию Jinja
Anonymous
# pip list | grep Jinja2 Jinja2 (2.10.1)
Anonymous
если ниже 2.10, то все плохо
Отделение Bereke Bank
Кстати о декларативности. Вот есть у меня таска, которая постоянно возвращает changed 😐 вроде ничего не ломается, но это changed напрягает. Сталкивался кто нибудь? - name: Create databases and common users mongodb_user: database: "{{ db_name }}" name: "{{ db_user }}" password: "{{ db_password }}" login_user: root login_password: "{{ mongodb_root_password }}" login_database: admin roles: 'dbOwner'
Sergey
https://docs.ansible.com/ansible/latest/modules/mongodb_user_module.html
Alibek
О спасибо, проверю
Отделение Bereke Bank
state по дефолту present
Отделение Bereke Bank
то есть если юзер создан - оно должно вернуть ok. Как например аналогичный модуль для MySQL
inqfen
Создай issue, если уверен, что все правильно делаешь