Встала задача написания некой недоCICD для автоматичсекой раскатки стендов для разработчиков с определенной базовой системой на борту и автопуллом нужной ветки из Гита. И при разработке поймал себя на мысли, что ваять руками все процессы по созданию виртуального хоста и редактированию настроек как-то не правильно. То есть задача - найти способ через командную строку 1-2 командами создавать нужный допсайт на окружении, далее разворачивать нужную "эталонную версию" системы и делать пулл нужной ветки Git с выполнением невыполненных миграций. Со всеми процессами кроме первого особых проблем нет, главное заранее подготовить архивы "Эталона". А вот чтобы создать нужный хост, кроме как заходя в меню окружения - и никак больше - так говорил оооочень долгий поиск гугла и яндекса. Но при поиске случайно накнулся на вот этот пост на Яндекс Дзене
То есть в окружении все таки есть возможность создать вхост одной командой.
Делается это следующим образом - в shell вводим:
Да, сайт создается, но не настраивается поддержка Push сервера, что крайне необходимо для доработок Битрикс24. Для этого открываем и "препарируем" блокнотиком файл /opt/webdir/bin/bx-sites, особенно образая внимание на блок (с 71 строки):
Здесь у нас описаны все доступные команды для добавления и редактирования сайтов, то есть если нужно создать вхост для Битрикс окружения с пуш сервером, команда будет выглядеть так:
Cоответственно если нам нужно удалить какой-то из сайтов, команда будет иметь вид:
На вид вроде все просто - команду выполнили через PHP Exec (или откуда вы там решили управлять стендами) и поперли дальше. А не просто)
В окружении есть встроенный планировщик задач, который при выполнении создает задачу на создание или удаление сайта. И если вы хотите правильно автоматизировать создание стендов - то сначала нужно дождаться выполнения этой задачи, а потом уже выполнять все последующие действия. Для этого нам пондобится узнать список текущих задач и их статус, поможет нам следующая команда:
Она в виде построчных массивов с разделителем двоеточия выдает все текущие задачи, нам остается только убедиться янет ли задач в статусе running.
То есть в окружении все таки есть возможность создать вхост одной командой.
Делается это следующим образом - в shell вводим:
/opt/webdir/bin/bx-sites -a create -s site.local-dev.ru -t kernel --charset UTF-8 --cron |
# get command line options
Getopt::Long::Configure("bundling");
my $result_option = GetOptions(
'v' => \$o_verbose,
'verbose' => \$o_verbose,
'h' => \$o_help,
'help' => \$o_help,
"a:s" => \$o_action,
'action:s' => \$o_action,
"s:s" => \$o_site,
'site:s' => \$o_site,
'hiden' => \$o_hiden,
"o:s" => \$o_format,
'output:s' => \$o_format,
'd:s' => \$o_dbname,
'database:s' => \$o_dbname,
'u:s' => \$o_user,
'user:s' => \$o_user,
'p:s' => \$o_pass,
'password:s' => \$o_pass,
't:s' => \$o_type,
'type:s' => \$o_type,
'r:s' => \$o_root,
'root:s' => \$o_root,
'H:s' => \$o_hostname,
'hostname:s' => \$o_hostname,
'smtphost:s' => \$o_SMTPHost,
'smtpport:s' => \$o_SMTPPort,
'smtpuser:s' => \$o_SMTPUser,
'password:s' => \$o_SMTPPassword,
'smtptls' => \$o_SMTPTLS,
'smtpauth:s' => \$o_SMTPAuth,
'email:s' => \$o_EmailAddress,
'disable' => \$o_disable,
'enable' => \$o_enable,
'minute:s' => \$o_min,
'hour:s' => \$o_hour,
'day:s' => \$o_day,
'month:s' => \$o_month,
'weekday:s' => \$o_wday,
'ntlm_domain:s' => \$o_ntlm_domain,
'ntlm_fqdn:s' => \$o_ntlm_full_domain,
'ntlm_ads:s' => \$o_ntlm_ads,
'ntlm_login:s' => \$o_ntlm_login,
'ntlm_password:s' => \$o_ntlm_password,
'ntlm_host:s' => \$o_ntlm_host,
'filters:s' => \$o_filters,
'service:s' => \$o_service,
'kernel_site:s' => \$o_kernel_site,
'kernel_root:s' => \$o_kernel_root,
'charset:s' => \$o_charset,
'cron' => \$o_enable_cron,
'password_file:s' => \$o_password_file,
'tmpdir:s' => \$o_tmpdir,
'fstype:s' => \$o_fstype,
'extension:s' => \$o_extension,
'dns:s' => \$o_dns,
'private_key:s' => \$o_private_key,
'certificate:s' => \$o_certificate,
'certificate_chain:s' => \$o_certificate_chain,
'nodejspush' => \$o_push,
'domains:s' => \$o_domains,
) or unknown_arg(); |
/opt/webdir/bin/bx-sites -a create -s site.local-dev.ru -t kernel --charset UTF-8 --cron --nodejspush |
/opt/webdir/bin/bx-sites -a delete -s site.local-dev.ru -t kernel -r /home/bitrix/ext_www/site.local-dev.ru |
В окружении есть встроенный планировщик задач, который при выполнении создает задачу на создание или удаление сайта. И если вы хотите правильно автоматизировать создание стендов - то сначала нужно дождаться выполнения этой задачи, а потом уже выполнять все последующие действия. Для этого нам пондобится узнать список текущих задач и их статус, поможет нам следующая команда:
/opt/webdir/bin/bx-process -a list |