Dmitry
и к8с для этого не нужен, есть гораздо более простые решения.
Например? Задача вроде стандартная, веб-сервер в контейнере
citius
например hashicorp nomad
Dmitry
например hashicorp nomad
Ну т.е. вы хотите все же оркестратор подключить
citius
а контейнеры без оркестраторов это боль и страдания, проще обычные сервера/виртуалки держать
citius
ну вполне можно закостылить ансиблом какое-то решение с запуском нового контейнера с новым конфигом и последующей остановкой старого. но это прям дикий онанизм, для того и изобрели оркестраторы
Anonymous
Ну т.е. вы хотите все же оркестратор подключить
ну, я бы прислушался к советам citius. он крут (без сарказма). он реально шарит
citius
банальным docker-compose тожее можно извратиться
Dmitry
а контейнеры без оркестраторов это боль и страдания, проще обычные сервера/виртуалки держать
Да почему же, если их немного то нет особой боли. Я думаю не стоит городить оркестатор для системы, где меньше 30 контейнеров бегает. >docker-compose Кто-то выше меня наоборот переубедил его использовать и работать чисто модулями. И в целом все работает, и отлично.
citius
а если уж идти в bad practice - собрать свой образ на базе supervisord и выполнять внутри supervisorctl restart nginx. (но я такого не предлагаю №)
citius
в номаде и 3 контейнера прекрасно управляются, притом что оверхед от него околонулевой, а выгода огого
Anonymous
какая разница сколько контейнеров, если костылишь кривоее решение.
я тебя люблю. еще немного и предложу руку и сердце
citius
:D
citius
щас придет модератор, и поделом мне набьет банхаммером лицо
Anonymous
разрулю как-нибудь
Anonymous
;)
Sergey
а, не парся. они спят
Фиг там плавал. Давай уже не делать странное. Веб-сервер в контейнере - ну нет таких задач, которые эта конструкция решит успешнее, чем просто веб-сервер, поэтому чатик и молчал.
🏳️ Phil
Фиг там плавал. Давай уже не делать странное. Веб-сервер в контейнере - ну нет таких задач, которые эта конструкция решит успешнее, чем просто веб-сервер, поэтому чатик и молчал.
Заметание мусора под ковер - отличное усоовие и для вебсервера. Сайт и магазин на двух разных версиях php, одна из которых deprecated =)
Sergey
А то меня засмеют.
🏳️ Phil
Ну это, давай я не буду тебе-то разницу между веб-сервером и PHP объяснять 😁
Ты там это, пару свечек-то на канделябре притуши :) Мы сейчас не разговариваем в плоскости выяснения автономности академического функционала. Совершенно не важно. Важно то, чо это какая-то программа, за которой иногда хчется подмести мусор как и за любой другой. Или оградить от соседнего мусора
Vlad
Можно послать сигнал на перезапуск процессу nginx в контейнере docker kill -s HUP <container name>
Alexander
Всем привет, вопрос не по формату канала, но устал искать уже (может тут есть геймдевы), интересуют живые чаты, js, phaser3, спасибо
Nikolay
чтобы применить новые настройки конфига, и важно именно применить, а не оборвать соединения рестартом контейнера
конфиги чтоле на хост системе лежат примнтированные в контейнер? Просто docker exec -it <container> nginx reload не подходит?
Serg
как-то так можно: например если локально, ну или есть извне доступ к докеру по ремоут: export DOCKER_HOST=my_remote_host host: nginx_container_name connection: docker tasks: - shell: nginx -s reload
Dmitry
как-то так можно: например если локально, ну или есть извне доступ к докеру по ремоут: export DOCKER_HOST=my_remote_host host: nginx_container_name connection: docker tasks: - shell: nginx -s reload
Ну это же опять же через модуль шелл. Сейчас так и работает, но я надеялся, что есть более правильный метод.
Alex
так что приходится страдать
Serg
ну команду все равно придется запускать в шелле, проблема в nginx, а не в докере или ансибле
Serg
если бы nginx сам детектил изменения в конфиге и релоадился, не надо было бы команду
Serg
можно еще с обычным sidecar контейнером, запускаешь docker_container модуль с image: nginx, PID namespace твоего нынешнего nginx контейнера, перезаписываешь entrypoint на "nginx -s reload".
Alex
никто не мешает настроить проверку файла, раз в минуту и при измненении делать reload
Alex
если прям очень нужно
Dmitry
никто не мешает настроить проверку файла, раз в минуту и при измненении делать reload
Внутри или поверх контейнера? Изменение у меня энсибл отлично видит, поэтому и думал им инициализировать действие
Dmitry
по крону на хосте
Тоже вариант, спасибо
Dmitry
Фиг там плавал. Давай уже не делать странное. Веб-сервер в контейнере - ну нет таких задач, которые эта конструкция решит успешнее, чем просто веб-сервер, поэтому чатик и молчал.
Так ведь все просто, у меня у каждого разработчика свой веб-сервер со своими настройками и лимитами, чтобы если что-то сломает один - не упало у всех.
Nikolay
ну команду все равно придется запускать в шелле, проблема в nginx, а не в докере или ансибле
я думаю проблема в использовании докера для поставленной задачи. Вероятно докер тут вообще человеку не нужен. Именно поэтому приходится костилить со всякими exec. Если вытащить nginx из докера, то проблем с ансиблом нет.
Nikolay
Serg
так и с nginx проблем нет
согласен, я вообще здесь проблем не видел))
Nikolay
Думаю проще чем так не заделать. - name: ensure nginx.conf exists template: src: nginx.conf.j2 dest: /etc/nginx/nginx.conf notify: nginx reload #handlers/main.yml - name: nginx reload command: docker exec -i <container> nginx -s reload
Alexander
Alexander
Давайте не будем это обсуждать?
Alexander
Реально, больно читать
Alexander
Написали же выше. Ну не надо так... С этим потом кому-то работать после вас.. Будьте милосердными
Pavel
Коллеги, доброго дня а какие есть способы временного решения вот этого вопроса? ну кроме shell команд разумеется https://evotec.xyz/powershellgallery-disables-support-for-tls-1-0-breaking-install-module/ а то ошибка при работе win_psmodule
Ivan
Привет! Я не могу сообразить, как такое делается: У меня есть переменная, py_ver: 3.6 or 3.7, к примеру. я запилил допустим словари: versions: py3.6: "3.6.10" py3.7: "3.7.7" hashes: py3.6: "md5..." py3.7: "md5..." Мне надо зашаблонить "url: https://www.python.org/ftp/python/{{ versions.py{{ py_ver }} }}/Python-{{ versions.py{{ py_ver }} }}.tar.xz" прокатит такое?
Sergey
Вызвать шаблонизатор из шаблонизатора нельзя.
Ivan
О, тогда versions: 3.6: "3.6.10" 3.7: "3.7.7" ...python/{{ versions[py_ver] }}/P... так?
Ivan
{{ versions['py' ~ py_ver ] }}
Это что такое за магия? Как она работает?
Sergey
Это что такое за магия? Как она работает?
~ - оператор сцепления строк в Jinja {{ }} - вызов Jinja
Ivan
~ - оператор сцепления строк в Jinja {{ }} - вызов Jinja
Спасибо, выглядит очень хорошо побежал пробовать
Full
Народ, а подскажите про gather_facts. Если установлен в false, эти самые факты в принципе доступны? Если я в одной роли фиксирую некоторое значение через set_fact, оно будет доступно в следующей за ней, если gather_facts: false?
Nikolay
Народ, а подскажите про gather_facts. Если установлен в false, эти самые факты в принципе доступны? Если я в одной роли фиксирую некоторое значение через set_fact, оно будет доступно в следующей за ней, если gather_facts: false?
set_facts определяет переменные в рамках запущенной роли, так что будет работать. При gather_facts=false не будут собираться парамерты удаленного хоста. Т.е. ты не сможешь испольовать всякие переменные типа ansible_distribution_version к примеру.
Full
Мне и не нужно. Мне нужно передать значение между ролями.
Nikolay
Мне и не нужно. Мне нужно передать значение между ролями.
мне кажется так будет работать если определить переменную выше. И перезаписать через set_facts в role1. Но это очень неочевидно потом будет при отладке. Где-то эта переменная поменяла значение. Похоже на попытку программировать на ансибле. - hosts: myhost vars: myvar: "" roles: - role: role1 - role: role2
Sergey
^^^ +++
Full
:) Может быть, отчасти. Первая роль у меня готовит файл - образ для unattended install, вторая - эту установку должна произвести. Подготовить виртуалку, залить образ на датастор, прицепить к виртуалке, и т.д. Уперся в то, как передать локейшн готового образа из первой роли ко второй. В идеале они мне видятся независимыми. В первой я фиксирую расположение файла в фактах (iso_path). А во второй для связки с первой добавляю в extra vars что-то типа: file_location: '{{ iso_path }}' И получаю ошибку вида: No such file or directory: '{{ iso_path }}' Смущает еще и то, что ошибка про отсутствие пути, а не про неопределенную переменную. Простым решением было бы использовать какое-то "соглашение" про пути, но это настолько не очевидно, что через месяц и не поймешь, почему так.
Full
Я не знаю, как лучше сделать. :)
Artem
Я не знаю, как лучше сделать. :)
Зафиксируй путь готового образа в инвентори, чтобы он не динамически в первой роли получался, а конкретный
Ждун
По идее роль сущность которую можно выполнить саму по себе. Вот подумайте если будет запущена только вторая роль, что будет происходить и как ее инициалищировать