Timur
У вас докер-имеджи собираются 12 часов?
/warn
Ага
/warn
У вас докер-имеджи собираются 12 часов?
Это огромный софт для виртуализации сети, с этим ничего не поделать
UglyKoyote
неткрекер что ли?
Timur
Это огромный софт для виртуализации сети, с этим ничего не поделать
Неважно какой софт. Зачем докер при таком подходе?
/warn
Неважно какой софт. Зачем докер при таком подходе?
Я не имею понятия, но все стоит на докерах. Там внутри много непонятного, свой Openstack и куча всего еще
Timur
ыыыы
/warn
Opencontrail
Можете вгуглить, может вы хоть поймёте что это такое, а то я с этим работаю, но сам не понимаю)
Timur
В общем, я не очень понимаю, как здесь может помочь ансибл
/warn
Ну, моя задача - впихнуть файлы в контейнер. Если не ансиблом, то не знаю чем еще это делать. Точно не через jenkins ssh plugin.
/warn
И я никогда не работал с докером с помощью ансибла, поэтому не очень знаю как это правильно сделать
Pit
Господа вопрос по молекуле. Есть роль раскатки всяко-разных репозиториев. типа положим в /etc/apt/sources.list свои файлы. Начинаю обмазывать тестами. Запилил в молекуле такое: def test_spacket_install(host): os_version = (host.ansible("setup") ["ansible_facts"]["ansible_os_family"]) if os_version == 'debian': os.system("apt update && apt install mc") Беда в том что таска выполняется, но по её результатам - никаких ошибок, даже если выполнить её в центе. Вопрос - как вытаскивать состояние этого выполнения, и по нему принимать решение о наличии ошибки? Оффдока по молекуле не помогает
Артём
https://pastebin.com/21cmrx1i
Pit
assert’ов не вижу.
вот я и пытаюсь понять как их впилить сюда
Pit
легче не стало
Pit
У вас прямо в молекуле происходит не только проверка версии, но и установка пакета?
в общем - да. Самый тот способ проверить работу репозитория - поставить из него пакет
Артём
Ну ок. Можно добавить def test_mc_package(host):     pkg = host.package(‘mc’)     assert pkg.is_installed
Артём
И ожидать, что если пакет поставить не удалось (и мы не упали в результате той ошибки, которая помешала его поставить), то будет ошибка в тестах.
Pit
Ну ок. Можно добавить def test_mc_package(host):     pkg = host.package(‘mc’)     assert pkg.is_installed
можно. но хотелось бы еще проверять на ошибки при apt update. их тоже может быть
Артём
В смысле, не проверять конкретное состояние конкретного элемента, а ловить все возможные ошибки при работе команды?
Pit
В смысле, не проверять конкретное состояние конкретного элемента, а ловить все возможные ошибки при работе команды?
хотя бы результат выполнения - 1/0. Пакет может оказаться установленным в образе еще до моего взаимодействия с ним.
Артём
хотя бы результат выполнения - 1/0. Пакет может оказаться установленным в образе еще до моего взаимодействия с ним.
А если он там есть, то у нас проблема, потому что проверить репозиторий методом установки пакета уже не получится, так?
Pit
А если он там есть, то у нас проблема, потому что проверить репозиторий методом установки пакета уже не получится, так?
поэтому apt update - вне зависимости от наличия пакетов покажет работает ли репозиторий
Артём
То есть интересует нас команда update и её exit code.
Артём
в первую очередь - да
Тогда может подойти run и его rc https://testinfra.readthedocs.io/en/latest/modules.html
George
у тебя Dockerfile ансибл собирает? или наоборот?
Sheridan
Камрады, а можно ли в инвентарь положить файл, который надо на remote копировать? Это чтототипа лицензии и под каждый инвентарь оно своё должно быть...
Никита
Это огромный софт для виртуализации сети, с этим ничего не поделать
собирать бинарник и ставить его в докер за несколько секунд
Sheridan
можно конечно в base64 и в строку в переменную а потом copy: content: , но хотелось бы более наглядно..
Anonymous
Коллеги а может кто нить поделиться примером таска docker-compose pull с. приватной репы ?
Timur
Инвентарь - это просто текстовый файл с конфигом
Timur
С набором переменных
Timur
Что вы туда закидывать собрались еще?
Sheridan
Т.е.?
файл относится к роли, но для каждого интвентаря должен быть свой. Как быть?
Sheridan
Где файл лежит?
дефолтный в роли. Инвентарный - непонятно
Timur
Если непонятно где лежит - откуда вы его хотите брать?
/warn
ты меня удивляешь
Ну, так бывает :)
Anonymous
логин само собой сделан
Anonymous
больше интересует таск где пулиться композ, для обычного то докера мне все понятно
George
Зачем компоуз? Кто компоуз? Где компоуз?
Anonymous
ну вот начальось))
Anonymous
мопедне мой, я просто разместил объяву)
Anonymous
хотя мб пойду по пути обычного докера
kevit
добрый день, господа, помогите мне с напавшим тупняком
kevit
- name: "Start and enable services" become: true systemd: name: "{{ item }}" enabled: true daemon_reload: true state: started with_items: - "service.target" - "service-worker.service" - "service-server.service"
kevit
есть вот такая конструкция, таргет, два сервиса
kevit
в каждом сервисе такое
kevit
[Service] Restart=on-failure RestartSec=10
kevit
когда конфигуришь сервис ансиблом ничего не встает, а перегружает сервис раз в 10 секунд
George
Больше фактуры
kevit
например?
George
Ну, все логично - сервис падает, перезапускается. Вероятно, какая-то зависимость неудовлетворена
George
Полный юнит файл покажешь ? Лог ошибок ?
kevit
все сервисы запускаются руками
kevit
сейчас я проверю одну идею что это из-за таргета, возможно таргет нельзя в том же лупе конфигурить
George
В этом нет логики
George
И включи вербозный режим ансибла
kevit
что смотреть? сервисы кладутся, таргет кдадется, ансибл пробегает успешно, только все флапает в результате
kevit
.target loaded active active
kevit
-worker.service loaded activating auto-restart
kevit
если виртуалку ребутнуть то все встает без проблем. если таргет перегрузить после прохода ансибла то не встает
UglyKoyote
а юнит файлы не трогаешь в процессе пробега ансиблом?
kevit
я их кладу из темплейтов
UglyKoyote
я просто когда подкладываю их/правлю - дергаю вот такую таску - name: Daemon reload systemd: daemon_reexec: yes а уже потом стартую, может оно?
UglyKoyote
а то похожая ситуация была, не стартуют сервисы и всё тут после ансибла
kevit
о, значит есть там стуки
kevit
щас проверю
Alex
подскажите, а как то можно динамически генерировать имя переменной? Например у меня есть app1_installer_type: type1 app2_installer_type: type2 .... appN_installer_type: typeN и мне надо в переменную app_installer_type записать значение в зависимости от того, что пользователь передал в app_type. Например app_type=app1, то в app_installer_type мне надо получить type1. Т.е. грубо говоря app_installer_type={{ {{app_type}}_installer_type }}