Lamobot
No package matching 'containerd.io' is available
Если это про убунту, то там стандартный пакет containerd. А containerd.io уже из репы докера.
Lamobot
Лучше подрубать репы докера и оттуда пакет ставить
Bogdan
`
Bogdan
- name: Set the stable docker repository apt_repository: repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu \ bionic \ stable" state: present update_cache: yes
Bogdan
Вот так пробовал.
i4l
он же просто containerd называется
i4l
в universe вроде есть
Bogdan
странно, то что я раньше этот плейбук использовал, и ошибок не было, прошло 2 месяца, ни чего не обновлял и сыпаться начало
Lamobot
Попробуйте руками зайти - посмотреть есть ли пакет
Lamobot
И ещё, ключик докера добавляли? https://docs.docker.com/engine/install/ubuntu/
Lamobot
На моей памяти, он менялся когда-то, как и адрес репы
Bogdan
не точно
Bogdan
но не помогает в любом случае
Bogdan
Вообщем я поставил Гирлингая роль и запахало вроде
Andrew
Коллеги! Прошу совета вашего. Есть задача развернуть 2 разных сайта (конфига nginx) из одного шаблона. Но в этом шаблоне порядка 12 переменных, которые для этих двух сайтов различаются. Так как прописывать по 12 переменных 2 раза в роли мне категорически не нравится, то я все эти переменные объединил в словарик, разделив их для сайтов ключами словаря: site1: var1: value11 var2: value12 ... site2: var1: value21 var2: value22 ... Внутри template я их использую в виде site.var1 и т.д. При вызове темплате я site определяю нужным мне образом: - name: site1 template: ... vars: site: "{{ site1 }}" - name: site2 template: ... vars: site: "{{ site2 }}" Всё это работает конечно, но меня не покидает ощущение, что я псих и это решается по другому. Подскажите best practice на этот счёт, please.
Ivgenich
Да, Жень
Тогда лучше как-то так мне кажется - https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html
Lamobot
Тогда получится куча мелких ролей. Тоже не true
2 сайта из одного шаблона? Откуда тут много ролей? Или у вас таких сайтов вагон?
Andrew
Тогда лучше как-то так мне кажется - https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html
Проблема не в циклическом вызове одного и того же. А в том, что надо передавать кучу переменных разных для каждого вызова, а хочется это делать скопом.
Andrew
2 сайта из одного шаблона? Откуда тут много ролей? Или у вас таких сайтов вагон?
У меня в роли настраивается полностью nginx для группы хостов. В этой группе хостов на каждом должно быть 2 группы сайтов, причем группа шаблонов одна. Поэтому единая роль для этой настройки. Если делать как Вы предлагаете - придется эту роль разбить на несколько: основные настройки и по одной роли на каждый из сайтов в группе.
Andrew
Но опять же это не отменяет того, что в каждую роль придется передавать 12+ переменных
Andrew
а хотелось их сгруппировать
Andrew
и передавать группой.
George
омагад
Что не так ?
George
Все равно два набора простыней не избежать
Vladislav
Все равно два набора простыней не избежать
все норм, это я смеюся) это мой коллега )
Vladislav
Два чая этому господину.
было там по другому реализовано, костыльно, через include vars
Timur
Посмотри https://github.com/k0ste/ansible-role-systemd_helper/blob/master/tasks/deploy_tmpfiles.yml
loop: "{{ hostvars[inventory_hostname]['systemd_tmpfiles'] | Вот за такое нужно бить толстий-толстий проволока
Timur
Или как это по-русски - "ломом"
Timur
Проблема не в циклическом вызове одного и того же. А в том, что надо передавать кучу переменных разных для каждого вызова, а хочется это делать скопом.
Вариант со словарем - норм. Только передавать корневой ключ словаря лучше не на уровне тасков, а на уровне ролей при повторном вызове, как выше сказали
Timur
А как правильней?
В зависимости от того, какая задача решается
Fire
В зависимости от того, какая задача решается
В данном конкретном примере - получить список переменных хоста из определённого списка.
Fire
Зачем их получать? Они и так есть у хоста
И к ним надо обратиться. Посмотри шаблон и README у репозитория.
Timur
И к ним надо обратиться. Посмотри шаблон и README у репозитория.
Посмотрел. И? Все равно не понимаю, зачем для обращения к переменным своего же хоста нужно вызывать словарь hostvars[inventory_hostname]
Fire
Трэш и угар, согласен с Тимуром.
Критикуешь - предлагай.
Sergey
Критикуешь - предлагай.
Раз ты набрасывать не стесняешься, то не стесняйся и поискать по истории чата. Если вкратце: роль, которая что-то знает про хосты и группы - не роль, а говно. Она не соответствует определению роли - "перемещаемая самодостаточная единица контента". Ну и сам приём - hostvars[inventory_hostname] - говорит о том, что автор вообще ничего про Ansible не знает.
Ivan
всё равно в чате дофига упоминаний hostvars[inventory_hostname]
Sergey
всё равно в чате дофига упоминаний hostvars[inventory_hostname]
Согласен. И все - про bad practice, ибо это - antipattern.
Sergey
Не вижу упомнинаний best practice
Ожидаешь, что кто-то будет разжевывать?
Sergey
Обращение к переменным описано в доке.
Fire
Обращение к переменным описано в доке.
И я не вижу чтобы было написано, что так делать не стоит.
Sergey
И я не вижу чтобы было написано, что так делать не стоит.
Для очевидных вещей инструкции не пишутся.
Lamobot
И я не вижу чтобы было написано, что так делать не стоит.
Это молодежный девиз что ли? "что не запрещено, то разрешено"? Голову тоже иногда стоит напрягать :) hostvars используются для доступа к фактам/переменным других хостов. Чтобы обратиться к фактам/переменным текущего хоста (inventory_hostname) использовать hostvars не нужно! Эти переменные и так доступны, без hostvars[inventory_hostname]! Поэтому эта конструкция и выглядит так криво. Перечитайте доки: https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html https://docs.ansible.com/ansible/latest/user_guide/playbooks_vars_facts.html
i4l
а она так только выглядит криво?
Fire
Для очевидных вещей инструкции не пишутся.
А стоило бы. Это исключит многие детские ошибки.
Lamobot
Ну так почему б и не использовать, если есть возможность?) И никто не говорит, почему так поступать плохо.
{{ var }} или же {{ hostvars[inventory_hostname]['var'] }} ? Может стоит задать вопрос по другому? "почему так делать плохо" поменять на "как сделать лучше"?
i4l
почему так делать плохо?
Grek 🇺🇦
как минимум это излишество, и как уже говорили - привязывает роль к инвентори, что херня, простите
Sergey
почему так делать плохо?
Потому же, почему и гланды принято удалять через рот. Пусть короче и проще, так сказать.
Fire
как минимум это излишество, и как уже говорили - привязывает роль к инвентори, что херня, простите
Так в моём случае роль привязана к конкретной структуре конфигурации (читай хост/груп_варс)
i4l
а нельзя сюда как-то бота с фринода где bcoca тусуется?
Fire
.... .... .... .... .... .... .... ....
Это плохо? Почему?
Grek 🇺🇦
потому что эта роль становится прибитой гвоздями к окружению. наверное в каком-то случае это прокатит, но тогда теряется смысл делать роль
Grek 🇺🇦
ну камон, выше уже писали почему так
Fire
потому что эта роль становится прибитой гвоздями к окружению. наверное в каком-то случае это прокатит, но тогда теряется смысл делать роль
И каким образом роль в этом случае прибивается к окружению? Чтобы я мог ей воспользоваться, мне достаточно склонировать её из гитхаба, написать конфигурацию под хост, выполнить плей с этой ролью. Всё, я настроил на хосте systemd.
Grek 🇺🇦
обращением к хостварс, вместо прямого обращения к переменной если у тебя нет инвенторя, все выполняется на localhost с connection local или через delegate ну короче - вариантов много
Grek 🇺🇦
я ж говорю - конкретно в твоем случае может и прокатит, но есть варианты
Fire
я ж говорю - конкретно в твоем случае может и прокатит, но есть варианты
В общем, надо всякие странные окружения придумать, организовать и проверить, как оно будет?
Grek 🇺🇦
нет, писать независимо от окружения
Grek 🇺🇦
все не проверишь
Nick
И каким образом роль в этом случае прибивается к окружению? Чтобы я мог ей воспользоваться, мне достаточно склонировать её из гитхаба, написать конфигурацию под хост, выполнить плей с этой ролью. Всё, я настроил на хосте systemd.
Я не специалист. Но как минимум - ты же потеряешь возможность оверрайдить переменную. А это важная часть философии ансибла. И дебажить это - ты затрахаешься