Alex
mc точно есть в стандартных репах
Alex
ошибка плавающая, не могу выловить причину
Alex
apt update && apt install mc
перед установкой пакета у меня стоит обновление кеша - name: Update apt cache become: yes apt: update_cache: yes ignore_errors: yes register: apt_update_cache_result
Tadeusz
ты так далеко не уедишь, если не будешь вручную проверять
Tadeusz
проблема не в ansible, кмк
Alex
вручную естественно все ставится
Tadeusz
чудес не бывает )
Alex
проблема только с 18й убунтой
Alex
этот же код на других дистрах работает без проблем
Alex
судя по ошибке это выхлоп модуля, а не самого apt
Tadeusz
попробуй убить весь кеш apt'а
Alex
я же говорю - ошибка плавающая, поймать тяжело
Alex
https://i.imgur.com/XWyqChw.png
Lamobot
Как бы, если кеш не обновится, то и дальше полезут ошибки при установке пакетов?
Alex
портит всю картину
Lamobot
особенности плейбука
Можно поэкспериментировать: - сделать autoclean перед обновлением кеша - попробовать force_apt_get - и поставить cache_valid_time чтобы он не фигачил постоянно сеть. Может там сетевые проблемы
Lamobot
+ проверить с каких зеркал качаются пакеты, может другие выставить локальные или, наоборот, не очень
Alex
это временные окружения, создаются для тестов, на 2-3 часа
Lamobot
это временные окружения, создаются для тестов, на 2-3 часа
Без разницы. Я встречался с проблемами зеркал пакетов убунту, когда у тебя кеш не может обновиться.
Alex
Без разницы. Я встречался с проблемами зеркал пакетов убунту, когда у тебя кеш не может обновиться.
deb http://europe-west1.gce.archive.ubuntu.com/ubuntu/ bionic main restricted гугловое зеркало используется по ходу
Sam
Добрый день, а awx тут обсуждать можно? 😄
Alex
TASK [common/jfmc : Update apt cache] *** ok: [app_master] => changed=false attempts: 1 cache_update_time: 1589880421 cache_updated: false ok: [app_slave] => changed=false attempts: 1 cache_update_time: 1589880422 cache_updated: false а почему может не обновляться кеш? Сам таск простой - name: Update apt cache become: yes apt: update_cache: yes cache_valid_time: 86400
Alex
Может потому что уже и так свежий?
чистая система, откуда ему быть свежим?
Alex
- name: Add an apt signing key for docker-ce repo become: yes apt_key: validate_certs: no url: https://download.docker.com/linux/ubuntu/gpg state: present - name: Add Docker CE repository become: yes apt_repository: repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" state: present update_cache: no - name: Update apt cache become: yes apt: update_cache: yes cache_valid_time: 86400 ignore_errors: yes register: apt_update_cache_result until: apt_update_cache_result is succeeded retries: 5 delay: 30 - name: Install prerequisite packages become: yes apt: name: "{{ prerequisite_packages_ubuntu16 }}" state: present update_cache: no register: install_packages_result или у меня в корне не верный подход?
Alex
при установке пакетов он не видит docker-ce, так как кеш не обновился
Lamobot
Ты вроде говорил про проблему на 18 убунте, а это 16?
Aleksandr
смысл в таск Update apt cache, если можно перед установкой пакета обновить кэш
Alex
Ты вроде говорил про проблему на 18 убунте, а это 16?
да, но это немного другая задача/проблема
Alex
смысл в таск Update apt cache, если можно перед установкой пакета обновить кэш
в примерах к самому модулю есть чисто обновление кеша
Alex
поэтому решил вынести в отдельную таску и задать время жизни самого кеша
Alex
но то ли я что то не понимаю, то ли оно не работает
Sam
Да
После установки AWX уже больше часа висит банер
Sam
Lamobot
при установке пакетов он не видит docker-ce, так как кеш не обновился
У меня почти так же ставится докер: - name: "Add docker public key" apt_key: url: "https://download.docker.com/linux/ubuntu/gpg" id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88" state: present - name: "Add docker repo" apt_repository: filename: "docker" repo: "deb [arch={{ repo_arch }}] https://download.docker.com/linux/ubuntu {{ansible_distribution_release}} stable" state: present - name: "Install docker community edition" apt: name: "{{ packages }}" state: latest update_cache: yes vars: packages: - docker-ce - docker-ce-cli - containerd.io
Lamobot
да, это понятно. Я не пойму почему апдейт кеша как отдельный таск не срабатывает
Запустите с дебагом. Или добавьте shell: apt-get update посмотреть, что ему не так :)
Alex
Запустите с дебагом. Или добавьте shell: apt-get update посмотреть, что ему не так :)
из консоли все работает, после apt-get update он видит docker-ce пакет
Alex
Что вы хотите сделать? Поставить докер?
1. добавить репу с docker-ce 2. обновить кеш и задать время жизни 3. установить все необходимые пакеты
Alex
и докер в том числе
Alex
там с десяток пакетов
Alex
Исходя из офф доки update_cache: yes Run the equivalent of apt-get update before the operation. Can be run as part of the package installation or as a separate step. должно выполняться apt-get update, но не выполняется
Отделение Bereke Bank
Попробуй через pkg. Хз даже
Alex
Попробуй через pkg. Хз даже
pkg это же более общий модуль, нее?
Sergey
Вижу пару вариантов: 1. Страдать 2. Читать логи Тебе какой больше нравится?
Aleksey
первый!
Aleksey
простите
Aleksey
первый, нах
Sergey
Sam
Вижу пару вариантов: 1. Страдать 2. Читать логи Тебе какой больше нравится?
В логах тихо, нашел 3 вариант sudo reboot. Все заработало
Vadim
крутая футболка
[IPT] Dmitry
ребят, есть роль сервера приложений есть куча одинаковых ролей самих приложений, которые деплоятся в этот сервер и +/- похожи друг на друга (повторяющийся код типа: скопировать конфиги, деплоймент, итп) как правильно и красиво это организовать с переиспользованием повторяющегося кода?
[IPT] Dmitry
руки чешутся все однотипные таски для деплоя приложений сложить в роль сервера приложений и инклудить их в роли приложений
Sergey
руки чешутся все однотипные таски для деплоя приложений сложить в роль сервера приложений и инклудить их в роли приложений
Я сделал одну роль, которая в параметрах получает имя конкретного приложения. По этому имени роль выбирает конфиги из общего для окружения словаря, и по нему же выбирает артефакт, который нужно задеплоить.
[IPT] Dmitry
Я сделал одну роль, которая в параметрах получает имя конкретного приложения. По этому имени роль выбирает конфиги из общего для окружения словаря, и по нему же выбирает артефакт, который нужно задеплоить.
скажем так, одинаковая только некоторая база, в некоторых вещах сильные различия: некоторые приложения работают без приключения к БД или содержат установку доп. софта типа sftp или MQ. в общем, есть смысл иметь общую базу из одинаковых и простых тасков и её как-то инклюдить или типа того
[IPT] Dmitry
1 компонент = 1 роль.
ну ок, с компонентами понятно. но как быть со сложным кодом деплоя? например, у меня в некоторых приложениях есть сложная конфигурация через jython и только в них
Sergey
Отдельную роль для них.
[IPT] Dmitry
вот, и как в ней (роли) быть с этой базой?
[IPT] Dmitry
делать базу тасков всё таки ролью и её инклюдить всем?
Sergey
?
Для этих приложений. Ну вот, например, у меня есть X сервисов, которые различаются примерно ничем, кроме параметров командной строки (у них даже unit-файлы одинаковые с точностью до названия сервиса). Все эти приложения деплоятся одной ролью. Когда появятся приложения, чей деплой будет отличаться от этого - появится другая роль.
Sergey
Это тебе решать - как раз вопрос инженерной целесообразности.
[IPT] Dmitry
Это тебе решать - как раз вопрос инженерной целесообразности.
явно не целесообразно копипаст кода поддерживать. трудно и внимательно. у меня два варианта напросилось: - инклудить повторяемые таски из одной роли - постараться выписать повторяемые таски в одну роль и использовать её как тут правильно? второе?
Anton
Ребят, кто с ансиблом может помочь? такая задача: "нужно чтобы Ansible забирал из репозитория юзерпараметры и скрипты для заббикса и копировал по хостам в определённые каталоги." Дженкинс джобу я настроил чтобы она пинала ансибл при новых коммитах. Помогите с плейбуком плиз.
[IPT] Dmitry
явно не целесообразно копипаст кода поддерживать. трудно и внимательно. у меня два варианта напросилось: - инклудить повторяемые таски из одной роли - постараться выписать повторяемые таски в одну роль и использовать её как тут правильно? второе?
первый вариант для кода более гибкий: есть повторяемый таск в 6 из 8 ролей, а в 2 нет, например. но второй вариант выглядит более правильным на первый взгляд. хотя можно эти таски (6 из 8) в мелкие роли делать
Sergey
явно не целесообразно копипаст кода поддерживать. трудно и внимательно. у меня два варианта напросилось: - инклудить повторяемые таски из одной роли - постараться выписать повторяемые таски в одну роль и использовать её как тут правильно? второе?
Насколько я вижу, в этом варианте ты ломаешь абстракции Ансибла. Какое-то время это будет работать, конечно, но потом взорвётся. Конечно, имеешь полное право проверить :-)
[IPT] Dmitry
просто ситуация патовая, какой-то выбор из двух бутылок, на какую присесть
Sergey
это в первом с инклудом?
Да что первый, что второй :-) Ты пытаешься выдержать DRY - хорошо, но в итоге твой деплой может повторить судьбу npm, когда функции из одной строки опакечивают.