Лента Мой малыш
Городские форумы
Автофорумы
Халявный
Домоводство
Проф. и бизнес форумы
Строительные форумы
Технофорумы
Собачий форум
Велофорумы Нижнего Новгорода
Наши дети
Туризм, отдых, экстрим Творческий
Путешествия Спортивные форумы
Нижегородская область Недвижимость
Форумы по интересам
Частные форумы Форумы домов Жилые районы
Отзывы и предложения (техподдержка)
Реклама на NN.RU
+7 (831) 261-37-60
Техподдержка Полная версия

Кто-нибудь тут с Ansible работает? Может кто что посоветует?

Изучаю сабж.

В OpenBSD service: стопаются, но не стартуют - видимо, используется rcctl
Приходится писать команду напрямую.
Идея такая: написать плейбук и вешать роль на серверы.
Другим плейбуком роль снимать.

В последнее время есть идея просто в темплейты добавить скрипт, чтобы его копировать на пациентов и исполнять.
Или такая идея - плохая? Просто в опёнке последовательность такая:
1. Ставим софт - все необходимые пакеты (nginx, mysql, php)
2. Правим файл rc.conf для запуска служб. (pkg_scripts="nginx php80_fpm mysqld")
3. Создаём папку conf.d для виртуальных хостов
4. Копируем все файлы настроек php из папки sample на место
5. Настраиваем php.ini и nginx.conf (копируем из темплейтов)
6. Создаём базу скриптом mysql_install_db
7. Запускаем службу mysqld
8. Вот я пока не знаю, как без запросов выполнить mysql_secure_installation, есть мнение, что тоже написать и выполнить sql-файл, который затем удалить.
9. Запускаем службы nginx и php80_fpm

Скрипт распространения сайтов в принципе - уже другая тема.
Мне кажется, в плейбуке это всё будет довольно громоздко выглядеть? Или норм?
Просто роль (такая как вебсервер) - не единственная.

Вторым вопросом - что делать в случае выхода обновления? Переписывать плейбуки?
Сейчас при установке можно выбирать из нескольких версий php - а то и ставить несколько.
Пока выбрал версию php-8.0.3 но это только до следующего обновления. Или версию можно задавать переменной?

P.S. В Дебиане 11 вроде всё намного проще, но хочется разобраться получше.
0
Ответить
У каждой страны и каждого государства (что далеко не одно и то же) свой исторический путь. Но каждый народ уверен, что его собственный путь - лучший из возможных.
(С)

У Афрания всегда свой путь. И, что характерно, он уверен, что выбрал единственно правильный и самый лучший из возможных путей.
:-D
2
Ответить
P.S. В Дебиане 11 вроде всё намного проще, но хочется потрахаться
0
Ответить
Тут скорее не секс а затейливое рукоблудие. Может ему про докер рассказать ? ;]
0
Ответить
Расскажи?
Возможно, я что то не так понимаю, но как можно использовать докер, если нужно навесить роль на свежий baremetal, например? Или когда ВМ тебе отдаются уже развернутые на каком нито коммунальном кластере.
0
Ответить
Паралитик писал(а)
Или когда ВМ тебе отдаются уже развернутые


а ты внутрь ещё и докер ставишь *crazy*
0
Ответить
Не, я не ставлю :) Но по идее, конечно, ничего не мешает засунуть докер внутрь темплейта, из которого разворачивается ВМ на той же вмваре, например.
Но мой вопрос был как раз о том, как заменить ансибл докером. С ходу я что то никак не соображу... Или туплю или не понял, что Психо имел ввиду.
0
Ответить
Паралитик писал(а)
baremetal

Ты ТС внимательно читал? Он пишет про "распространение сайтов" - а это явно или тестовые среды какие то, или может лендосы - дорвеи, но явно не продакшен.
0
Ответить
Я не предлагал ансибл заменить докером. Просто, возможно то, что пытается родить ТС реализуется докером с помощью того же ансибла.
0
Ответить
K0IIIAK писал(а)
Паралитик писал(а)
Или когда ВМ тебе отдаются уже развернутые

а ты внутрь ещё и докер ставишь *crazy* ...


И чего тут такого ?
0
Ответить
Собрать образ с готовой средой и пулить на серваки? Тоже как вариант.
Но ТС, если внимательно его прочитать, пытается освоить ансибл, а не докер :)
0
Ответить
Я всё пытаюсь освоить - но не всё сразу.
Дойдёт очередь и до докера, благо LXC и CBSD уже пройденный этап.

Пока меня интересует такой вариант:
Десяток виртуалок, одна половина из которых выполняет роль А, а другая или роль Б или Б и В вместе. При этом роли А, Б, В должны корректно откатываться в начальное состояние виртуалки плейбуками. Развёртывание веб-серверов - одна из простых ролей, так что почему бы и нет? Другой ролью может быть развёртывание серверов DNS - или bind, или nsd+unbound

Дебиан может и проще, но у нас на работе в основном Ред Хат и Центось. Поэтому я не хочу изучить только один вариант, а затем ловить грабли, если на работе принято иначе. Лучше плановый онанизм в тестовой среде, чем неожиданный секс в продакшене.

А на всяких мудаков я в последнее время стараюсь не рефлексировать. Они специально стараются сказать гадость, провоцируя сралки - так зачем вестись на их провокации?

Изучаю для себя, железо есть, к покупке BareMetal не готов.
0
Ответить
Тестовые среды.
Но за подсказку про дорвеи - спасибо, попробую изучить вопрос.
0
Ответить
Я не пытаюсь ничего родить. Я пытаюсь изучить.

Я просто придумал задачу, которую можно решить плейбуками ансибла.
И теперь... У меня получается, но правильно ли я делаю?
Других-то плейбуков я вовсе не видел. Может так не принято?

Посему и вопрос конкретный - как вообще принято решать такие задачи?
Читая мануалы, становишься записным теоретиком, потому и хочется знать мнение практиков.
0
Ответить
А что конкретно не получается?
0
Ответить
Всё получается, не знаю как делать.

Вариант 1 - всё описать в плейбуке.
Вариант 2 - написать скрипт, плейбуком залить на пациента и выполнить.

Преимущество во втором случае: на разные платформы можно заливать разные скрипты.
А если использовать первый вариант, плейбуки придётся переписывать для перевода на другую платформу.

Пока как я понимаю, везде предпочитают первый вариант.
Но тогда у меня вопрос по правильному включению служб для разных ролей.
Если надо включить две роли сразу, а службы пишутся в строку вида
pkg_scripts="mysqld nginx"
В плейбуке при установке роли тогда надо проверять, установлена другая роль или нет.
0
Ответить
По вариантам: тут универсальных советов, как мне кажется, нет. Все зависит от задачи и от того, как тебе самому удобно.

По разным платформам: ансибл в самом начале собирает ″факты″ об узле. В том числе и установленную ОС он знает. Исходя из этого в описании роли можно это использовать: в зависимости от ОС, например, использовать разные пакетные менеджеры(apt, yum, dnf и т.д.), использовать разные пакеты(apache/httpd)
Так же, в свежих версиях, например, есть унифицированный модуль package(https://docs.ansible.com/ansible/latest/collections/ansible/builtin/package_module.html) для установки пакетов, который не зависит(на сколько я знаю) от дистрибутива.

А вот про службы не понял, что ты имеешь ввиду.

На вскидку для установки nginx + php-fpm + mysql я бы сделал так:
Это сама роль.
- name: soft install
yum:
name:
- nginx
- mysql-server
- php-fpm
state: latest

- name: Add NGINX cofig
template: src=node.conf dest=/etc/nginx/conf.d/{{ inventory_hostname }}.conf owner=nginx group=nginx

- name: Create root for nginx
file: path={{ root }}/{{ inventory_hostname }} mode=775 state=directory owner=nginx group=nginx

- name: copy test page
copy: src=index.php dest={{ root }}/{{ inventory_hostname }} owner=nginx group=nginx

- name: service start
service:
name: ″{{ item }}″
state: started
enabled: true
loop:
- mysqld
- nginx
- php-fpm

Протестил - все накатывается и включается. Ну и плюс еще нужно настроить mysql. Скрипты mysql_secure_installation можно или запустить прямо через модуль script или использовать готовые модули для mysql, которыми накинуть нужные права, удалить тестовую базу, и т.д.

PS: Сильно не пинай, сам только начинаю изучать :)
0
Ответить
Спасибо! Это именно то, что я хотел!
Первые практические примеры плейбука.
Да ещё и с пояснениями.

Собственно говоря, именно поэтому я первых двоих и проигнорил.
Ничего полезного. А Вы первый, кто дал ответ на мои вопросы.
Теперь я понял, куда и как двигаться дальше.
0
Ответить
На "ты" проще!
Спрашивай, будем вместе осваивать :)
0
Ответить
По поводу служб...
В Линуксе задать какие службы запускаются при запуске можно командой /sbin/chkconfig
В Опёнке список запускаемых служб пишется в строковую переменную в файл /etc/rc.conf
Соответственно, придётся не только знать платформу, но и запоминать уже установленные на хостах роли. Чтобы при накатывании новой роли и переписывания этой самой переменной старую роль не поломать.
Ну допустим, настроен на хосте DNS-сервер bind - так вот, чтобы при накатывании роли веб-сервера из этой строковой переменной bind не исчез. Получается, просто переписать файл или строку - мало.

В связи с чем такой вопрос: может ли плейбук проверять условия или запрашивать данные из БД на предмет уже установленных конфигураций? Допустим, накатили на хост роль вебсервера - отметили это в БД, при повторном запуске плейбука конфа уже не поломается.

Дальше вопросы будут ещё сложнее - допустим, если две роли зависят от одной и той же службы. Допустим, той же mysqld - и для вебсервера надо, и для PowerDNS. При установке роли не ломать, если служба уже установлена. При удалении роли конкретную службу - не удалять. То есть ещё проверка на зависимости добавляется.
0
Ответить
Афраний писал(а)
В Линуксе задать какие службы запускаются при запуске можно командой /sbin/chkconfig

у тебя ооочень старые сведенья...
ансибл хорошь как раз тем, что правильно составленный сценарий можно прогонять 100500 раз и о ничего не поломает... у пакетов, например, соcтояние latest и у сервисов started как раз и говорит о результате, а не о процессе... а вот когда начинаются "костыли" типа я проще напишу свой скрипт, чем разберусь в том, что есть - вот тогда и получается, что кто-то должен понимать, а выполнился ли твой скрипт уже или его надо выполнять?
с рандомными конфигами чуть сложнее, если они не поддерживаются конкретными модулями конфигурации... тогда можно или искать кем-то написанную роль и использвать её или использовать модули типа blockinfile/lineinfile/etc...
0
Ответить
Ну вот, нас уже трое :)
А можешь подсказать, как "откатить роль"? Как я понимаю, никакого механизма на этот счет у ансибла нет? По крайней мере у меня что то не нагуглилось ничего и сам с такой задачей не встречался. Но интересно.
По сути, что бы откатить роль, нужно написать аналогичную роль, но с действиями наоборот: остановить службы, удалить службы, почистить конфиги?
0
Ответить
я уверен, что больше трёх... просто вопросы тут ну таки себе...
что такое "откатить роль"? если уж разбираться... роль - это не более чем последовательность действий, объединённая для удобства чтения сценария... рель может как ставить что-то, так удалять и менять... установка пакета в каком-то смысле тоже роль, так как она описана достаточно подробно разработчиками ансибла - то её можно "отменить", то есть удалить пакет... если вы свою роль сможете разработать так же скурпулёзно, что бы не было конфликтов ни с кем, то сможете сделать команду что бы эту роль "отменить"
0
Ответить
Паралитик писал(а)
По сути, что бы откатить роль, нужно написать аналогичную роль, но с действиями наоборот: остановить службы, удалить службы, почистить конфиги?
Да.
0
Ответить
Warwar писал(а)
у тебя ооочень старые сведенья...
Есть и более новые, не суть. Суть в том, что этими командами легко прописывается автостарт служб. А вот если службы прописываются в строковой переменной, то её автоматическое редактирование сопряжено с некоторыми трудностями.

В моём контексте "роль" не как в Ансибле, а как в виндовом сервере - настройка и запуск связанного набора из нескольких служб, причём для нескольких ролей службы могут пересекаться.
Тогда некорректное удаление одной роли может поломать другую.
0
Ответить