bebebe
вот там боль
Anonymous
Я изначально в одной из задач так планировал делать, но слишком сложно получается ради простого таска
Потому и делаю как выше сказано. Грубо? да, несомненно. Работает? почти всегда
Fedor
среда же определена
bebebe
вы пробовали? :)
bebebe
там нет пейтона
Tadeusz
посейдона)
bebebe
и не может быть к сожалению, из-за ограничения железа
Fedor
выход можно найти практически из любой ситуации
bebebe
да точно, спасибо
Fedor
вполне нормально всякие сетевые девайсы им менеджатся
Fedor
видел, им кто-то микроты настраивал
bebebe
https://github.com/ronaldoafonso/ansible-lua-openwrt даже потуги были
Fedor
была бы задача :)
Fedor
😁
Fedor
👍
bebebe
вполне нормально всякие сетевые девайсы им менеджатся
вы говорите ровно про то что все команды котороые выполняются на роутерах и железках без пейтона выполняютс через raw модуль
bebebe
а это печалько
Fedor
ну да
Fedor
можно эмулировать модули тасками)))
Fedor
таск - поставиьт например лихттпд, в нем куча равов и файндов
Fedor
и ему в параметры передаются имена демонов, которые надо поставить
bebebe
покажите эти таски, вместе посмеемся
Fedor
вот и пакетменеджер
bebebe
raw, register, stdout, jinja filters вот это вот фсе
Fedor
может, где-то в инете кто-то и написал, я преград не вижу пока что.
Fedor
да
bebebe
кстати. если для openwrt еще можно написать connection_driver на lua, то в случае с routeros (mikrotik) это принципиально не возможно
bebebe
только raw ssh, только хардкор
bebebe
особенно наверное интересно парсить таблички какие-нибудь
Fedor
благо, там машинный вывод есть
Fedor
в микроте
Maxim
коллеги, я с тупым вопросом, извините vars: users: - name: bregor public_key: https://github.com/Bregor.keys comment: Maxim Filatov groups: sudo append: yes task: - name: Add public keys for users authorized_key: user: "{{ item.name }}" key: "{{ item.public_key | default(lookup('file', 'public_keys/' + item.name)) }}" loop: "{{ users }}" error: fatal: [kube01]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'file'. Error was a <class 'ansible.errors.AnsibleError'>, original message: could not locate file in lookup: public_keys/bregor"} вопрос - а чего он вообще в | default() полез, если item.public_key присутствует?
Maxim
а, ansible-2.6
Sergey
в 2.6 сломали циклы?
Max
А докер в 2.6 не починили ещё?
Maxim
Может по этому?
то есть выражение в default() выполнится в любом случае, от левой части (до пайпа) зависит только то, будет ли использован результат выполнения default()?
Konstantin
то есть выражение в default() выполнится в любом случае, от левой части (до пайпа) зависит только то, будет ли использован результат выполнения default()?
судя по исходникам default(), если значение на входе есть, то ничего не выполняется: if isinstance(value, Undefined) or (boolean and not value): return default_value return value
Maxim
хм
Maxim
тогда что я делаю не так?
Vadim
мне кажется оно сначала пытаеся зарезолвить лукап, а потом подставить его в default
Vadim
я бы сделал отдельную local_key с лукапом и подставлял переменную в дефолт
Constantin
мне кажется оно сначала пытаеся зарезолвить лукап, а потом подставить его в default
Так это логично, во всех языках которые я знаю, сперва вычисляются внутренние выражения, а потом они передаются в качестве агрументов уже
Даня
Не совсем понял отличия command от shell
для command нельзя доп параметры кидать, вроде как
Maxim
но ведь лукап передаётся аргументом к функции, которая вообще не должна вызываться
Maxim
зачем вообще его считать?
Constantin
зачем вообще его считать?
Она вызывается потому что pipe
Vadim
зачем вообще его считать?
чтобы упасть раньше, если оно неправильное
Vadim
(я не знаю, только предполагаю)
Constantin
Я пока не очень силен в jinja {% if tem.public_key %}{{item.public_key}}{% else %}{{efault(lookup('file', 'public_keys/' + item.name)) }}{% endif %}
Maxim попробуйте, не так красиво, но может срабаотать (естественно не efault, а `default`)
bebebe
Она вызывается потому что pipe
удваиваю этого господина
Maxim
чтобы упасть раньше, если оно неправильное
ну то есть true || посчитай_факториал_пары_миллиардов должно сначала посчитать факториал на всякий случай? 🤔
Sergey
Не совсем понял отличия command от shell
command = тупо запустить чего написано, кинуть аргументы на вход bash = запустить баш, ему на вход кинуть аргменты (в строке будет работать перенаправление, конвейеры, HEREDOC - вот это вот всё)
Maxim
У вас была одна косая черта — это не ИЛИ http://jinja.pocoo.org/docs/2.10/api/#custom-filters
ну вот видимо в этом и был изначальный вопрос я прочитал мануал, понял из него, что это работает примерно как variable ? variable : some_default и удивился, когда что-то пошло не так
Vadim
а как это со списком значений сделать?
попробуй что-то вроде - name: set local_key if public_key unset set_fact: users: {{ users | combine({'local_key': lookup('file', 'public_keys/' + item.name)}) }} loop: "{{ users }}" when: item.public_key is not defined - name: Add public keys for users authorized_key: user: "{{ item.name }}" key: "{{ item.public_key | default(item.local_key) }}" loop: "{{ users }}"
I know
Что вы используете для docker'а?
manefesto
Что вы используете для docker'а?
Что значит для докера ? Линукс используем
Vadim
модули docker_container, docker_image и прочее, но лучше конечно k8s_raw (и выкинуть докер)
cent
модули docker_container, docker_image и прочее, но лучше конечно k8s_raw (и выкинуть докер)
А как k8s_raw может заменить docker_image ? Собирать же он не сможет, правильно?
Nklya
а зачем ансиблом билдить имаджи?
cent
а зачем ансиблом билдить имаджи?
Ну, неудобно != невозможно )
Nklya
это не вопрос неудобства, это что-то делать там, где не нужно
cent
это не вопрос неудобства, это что-то делать там, где не нужно
Вопрос был о другом. Советую его перечитать
Nklya
Sergey
Ну, неудобно != невозможно )
в магазин на руках ходить? круто, но непрактично
Vadim
кстати энсиблом можно (и в большинстве случаев - лучше) билдить имаджи
I know
модули docker_container, docker_image и прочее, но лучше конечно k8s_raw (и выкинуть докер)
И это собирать и поднимать ими, так? Надо попробовать сегодня.