--}}
Новая тема
Вы не можете создавать новые темы.
Т.к. вы неавторизованы на сайте. Пожалуйста назовите себя или зарегистрируйтесь.
Список тем

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

Нужен совет (поиск решения проблемы. не для купли-продажи)
715
26
С друзьями на NN.RU
В социальных сетях
Поделиться
Изучаю сабж.

В 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 вроде всё намного проще, но хочется разобраться получше.
997
20.10.2021
У каждой страны и каждого государства (что далеко не одно и то же) свой исторический путь. Но каждый народ уверен, что его собственный путь - лучший из возможных.
(С)

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


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

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

Посему и вопрос конкретный - как вообще принято решать такие задачи?
Читая мануалы, становишься записным теоретиком, потому и хочется знать мнение практиков.
Psycho
21.10.2021
K0IIIAK писал(а)
Паралитик писал(а)
Или когда ВМ тебе отдаются уже развернутые

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


И чего тут такого ?
Psycho
21.10.2021
Паралитик писал(а)
baremetal

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

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

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

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

Изучаю для себя, железо есть, к покупке BareMetal не готов.
А что конкретно не получается?
Всё получается, не знаю как делать.

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

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

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

По разным платформам: ансибл в самом начале собирает ″факты″ об узле. В том числе и установленную ОС он знает. Исходя из этого в описании роли можно это использовать: в зависимости от ОС, например, использовать разные пакетные менеджеры(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: Сильно не пинай, сам только начинаю изучать :)
Спасибо! Это именно то, что я хотел!
Первые практические примеры плейбука.
Да ещё и с пояснениями.

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

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

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

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

Как раз и вопрос по скрупулезности разработки плейбуков.
Паралитик писал(а)
По сути, что бы откатить роль, нужно написать аналогичную роль, но с действиями наоборот: остановить службы, удалить службы, почистить конфиги?
Да.
Warwar писал(а)
у тебя ооочень старые сведенья...
Есть и более новые, не суть. Суть в том, что этими командами легко прописывается автостарт служб. А вот если службы прописываются в строковой переменной, то её автоматическое редактирование сопряжено с некоторыми трудностями.

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