Aleksandr
Вот и выше тут, вместо того чтобы взять готовое городит своё
Vladimir
так проверка прошла так - validate: 'nginx -c %s -t'
George
George
https://trac.nginx.org/nginx/ticket/1300
George
Ну, ок 🤷♂
Sebor▂▅▇█▓▒░
+
Артём
А чем validate лучше, чем обычный nginx -s reload?
niko
релоад при сломанном конфиге возвращает сакцесс
niko
а рестарт возвращает выключенный нжинкс)
George
George
Я им в багтрекер писал и сильно матюгался на это вот все
Александр
есть способ сказать модулю template (или copy). Перезатри мне эту папку?
Александр
может вы предложите какие-то свои оптимальные методы выкладывания конфигурации на целевые хосты?
Aleksey
докеру не надо пробрасывать файл
Антон
Ты всегда можешь добавить таск, в котором чистишь эту директорию)
Aleksey
пробрасывайте диреткорию
Александр
конечно я могу добавить сюда ещё один или пару тасков, для удаления директории если она существует, но хотелось бы найти более оригинальный подход
Александр
Aleksey
тогда попробуйте unsafe_writes
Aleksey
а
Александр
unsafe_writes - я читал про это в документации, но если честно ничего не понял(
Aleksey
я не дочитал
Aleksey
это вы еще не столкнулись с реальной проблемой
Aleksey
то что вам создаётся диреткорией это ерунда
Aleksey
у вас основная беда будет в том что у вас при обновлении конфигурации докер ёё не подхватит
Aleksey
ибо монтируете файл а это известный антипаттерн
Антон
Антон
Всё равно после обновления nginx.conf придётся ребутать nginx
Aleksey
не nginx а контейнер
Aleksey
что бы вольюмы востановились
Александр
можно просто сказать pkill -1 nginx но это уже отдельная тема
Aleksey
Александр
да
Aleksey
ну ок. хозяин барин
Александр
это работает во многих плейбуках в нашей компании. Но это сделает reload nginx'а во всех контейнерах на хосте
Aleksey
🤷♂️ ну ок
Александр
а! стоп!
Александр
перечитал... вы имеете виду, что в контейнере не будет изменений в файле, пока я его не рестартану?
Aleksey
да
Александр
честно говоря я всегда использую монтирование директорий, но в данном случае, контейнер не мой... тогда мне придётся, тащить в ансибл все содержимое /etc/nginx/conf.d/ из контейнера
Александр
что не хотелось бы ((
Антон
Aleksey
Антон
nginx без перезагрузки файл не перечитает, а в контейнере он будет доступен изменённый
Александр
Aleksey
вот этот вариант я подсуну только nginx.conf 100500 раз проходили
Aleksey
https://docs.docker.com/storage/bind-mounts/#mount-into-a-non-empty-directory-on-the-container
Aleksey
этот пример с nginx расмотрен в доке :)
Aleksey
ну и ниже про bind propogation
Александр
когда-то оооочень давно, мы использовали для этих целей svn, но потом решили, что конфиги должны быть в ансибл и что по флагам -CD он обязательно должен показывать изменения. Кроме того, как я уже сказал, в ансибле лежат шаблоны
Александр
ну у нас тоже все роли и плейбуки в гите. Но обновлять конфигурацию на серверах из гита, при этом использовать шаблоны (к примеру, с персонализацией для хоста или ЦОДа) - это что-то на грани фантастики, про велосипеды на костылях по граблям...
Igor
Только осваиваю ansible.
Кто нибудь может подсказать по роли которая будет устанавливать openvpn клиент на Ubuntu xenial и генерировать для него файл конфигурации на основании переменных хоста ansible.
Результатом выполнения плейбука, запускающего роль, должен быть настроенный и запущенный опенвпн клиент.
Igor
Что за L/P можете пояснить?
Sebor▂▅▇█▓▒░
Igor
Готовое на гитхабе нашёл но чета с разбега не понял.
George
George
как тут интересно вчера было
Oleg Y.
господа, у меня странный вопрос.
Есть inventory серверов, которые разбиты на много групп вида:
-- inventory/group1/hosts
[app]
10.116.6.66
10.116.6.67
-- inventory/group2/hosts
[app]
10.116.7.66
10.116.7.67
... etc
Запускается плейбук на группу хостов.
Плейбук вида:
- hosts: app
roles:
- whatever1
- whatever2
Я решаю задачу сделать общий кластер из серверов, входящих во все группы. На первом уровне наивности, когда группа была одна, в template работала конструкция:
members: {{ ansible_play_hosts_all | join(',') }}
Сейчас по очевидным причинам она не подходит, т.к. групп стало много.
Вопрос. какие практики организации inventory вы могли бы порекомендовать?
George
не писать плейбуки на 1000-и хостов? ну, вообще я просто фильтровал хосты из конкретной группы
George
"{{ groups['project-a'] | map('extract', hostvars, ['ansible_host']) | map('regex_replace', '$', ':9100') | list }}" <- причем я такое в переменных писал, а не в плейбуке
Артём
Вопрос больше про jinja2, чем про ansible, но рискну.
Если я хочу получить строку
MY_VARIABLE = {a},{b}
где a и b - переменные, как заэскейпить это?
MY_VARIABLE = { {{a}},{{b}} }
Где внешние curly braces нужны нетронутыми.
George
я вопроса не понял
George
дай пример входа и пример выхода
Timur
И зря. У nginx родная роль вполне годная. И протестированная на реальном проде, в отличие от
Andrey
https://github.com/nginxinc/ansible-role-nginx
Timur
Timur
ansible-galaxy install robertdebock.openvpn
Отделение Bereke Bank
Какой ужас https://github.com/robertdebock/ansible-role-openvpn/blob/master/tasks/main.yml#L21
Timur
Артём
дай пример входа и пример выхода
Вход:
var1 = 'a'
MY_VAR={"{{var1}}"}
Даёт выход
MY_VAR={"a"}
Хочу избавиться от кавычек в итоговом варианте.
George
ну так грохни кавычки посередине
George
{"{{"var1"}}"}
George
ты наверное так хочешь?
Артём
Хочу, что бы в итоге в файле было MY_VAR={a}
George
просто для меня это странно, т.к. я обычно джинджу двойными оборачиваю )))) и я не спец по ансиблу