Ansible-скрипты
В панели реализована работа со скриптами на основе популярного и удобного инструмента Ansible.
Ниже описано, как добавить собственные скрипты в панель, и приведены примеры конфигурационных файлов.
Добавление скриптов
Если необходимо добавить скрипты, недоступные в Ansible:
- Создайте репозиторий, доступный по HTTPS, содержащий meta-описание (webscripts.xml) и архивы скриптов (архив должен содержать ansible playbook.yml и необходимые вспомогательные файлы). За основу можно взять каталог скриптов, созданный командой ispmanager.
- Дополните webscripts.xml соответствующими записями и приложите архив скрипта.
- В конфигурационном файле ispmanager (пример пути:
/usr/local/mgr5/etc/ispmgr.conf
) добавьте строку с параметром WebscriptsRepoUrl и URL до репозитория webscripts. - Выполните перезагрузку сервера (команда:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
), после чего на форме Web-скрипты (в разделе Настройки) отобразятся скрипты, указанные в webscripts.xml.
При добавлении параметра WebscriptsRepoUrl панель будет обращаться только по указанному URL. Одновременно работает только с одной директорией.
Примеры конфигурационных файлов
Пример webscripts.xml:
<doc>
<webscript type="ansible" name="Bitrix">
<settings>
<filename>bitrix.tgz</filename>
<playbook>playbook.yml</playbook>
</settings>
<mgr>
<minimal_version>6.0.0</minimal_version>
</mgr>
<required>
<php version="7.2" max_version="7.4">
<extensions>
<extension name="gd"/>
<extension name="exif"/>
</extensions>
<modes>
<mode name="php_mode_cgi"/>
</modes>
</php>
<database type="mysql" version="5.6"/>
</required>
</webscript>
</doc>
- type – внутреннее имя скрипта;
- name – отображаемое в интерфейсе имя;
- filename – имя архива в каталоге. Во время запуска установки скрипта будет загружен и распакован;
- playbook - имя ansible-рецепта, который будет запущен для установки;
- minimal_version – минимально допустимая версия ispmanager для возможности использования скрипта;
- required – сущности, которые требуются для данного скрипта;
- php – требуется PHP версии не ниже version и не выше max_version;
- extensions – расширения PHP, необходимые для скрипта;
- modes – если задано, то скрипт будет работать только в перечисленных режимах PHP;
- database - требуется база данных типа type, с версией сервера не ниже version;
- sql-mode – режимы mysql, которые необходимо включать для сервера баз данных;
- restricted="yes" – значит, наоборот, на этих режимах скрипт работать не будет.
- php – требуется PHP версии не ниже version и не выше max_version;
Пример Ansible playbook.yml:
- hosts: 127.0.0.1
tasks:
- name: Create a install directory if it does not exist
file:
path: "{{ install_path }}"
state: directory
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: "0755"
recurse: yes
- name: Download bitrix
get_url:
url: "http://www.1c-bitrix.ru/download/standard_encode.tar.gz"
dest: "{{ install_path }}/standard_encode.tar.gz"
mode: "644"
timeout: 1800
owner: "{{ user_name }}"
group: "{{ user_name }}"
- name: Unpack bitrix archive
unarchive:
src: "{{ install_path }}/standard_encode.tar.gz"
dest: "{{ install_path }}"
remote_src: yes
owner: "{{ user_name }}"
group: "{{ user_name }}"
- name: Set the permissions on Bitrix directories
command: find {{ install_path }} -type d -exec chmod 755 {} \;
- name: Set the permissions for Bitrix files
command: find {{ install_path }} -type f -exec chmod 644 {} \;
- name: Create a directory if it does not exist
file:
path: "{{ install_path }}/bitrix/php_interface"
state: directory
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: "0755"
- name: copy dbconn.php
template:
src: templates/dbconn.php.j2
dest: "{{ install_path }}/bitrix/php_interface/dbconn.php"
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: 0644
- name: copy .settings.php
template:
src: templates/.settings.php.j2
dest: "{{ install_path }}/bitrix/.settings.php"
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: 0644
- name: copy after_connect_d7.php
template:
src: templates/after_connect_d7.php.j2
dest: "{{ install_path }}/bitrix/php_interface/after_connect_d7.php"
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: 0644
- name: copy after_connect.php
template:
src: templates/after_connect.php.j2
dest: "{{ install_path }}/bitrix/php_interface/after_connect.php"
owner: "{{ user_name }}"
group: "{{ user_name }}"
mode: 0644
- name: Delete archive
file:
path: "{{ install_path }}/standard_encode.tar.gz"
state: absent
Playbook запускается при установке CMS на сайт.
Список параметров, передаваемых в скрипт:
- user_name – имя пользователя;
- install_path – путь установки скрипта;
- db_name – имя базы данных;
- db_user_name – имя пользователя базы данных;
- db_password – пароль пользователя базы данных;
- db_server – ip и порт подключения к базе данных;
- site_name – доменное имя сайта;
- site_docroot – корень сайта;
- site_php – on/off включен ли PHP;
- site_php_mode – режим работы PHP;
- site_ssi – on/off включен ли SSI;
- site_hsts – включен ли HSTS;
- site_nodejs – on/off включен ли Node.js;
- site_secure – on/off включен ли SSL;
- site_ssl_cert – путь к SSL сертификату;
- site_email – email администратора;
- site_basedir – on/off включен ди open_basedir;
- site_charset – кодировка сайта.
Так же среди параметров с префиксом site_ есть все поля из таблицы webdomain.
Технические особенности
- Выполнение скрипта проходит в фоне. По окончании пользователю отображается уведомление;
- /usr/local/mgr5/sbin/webscripts – обработчик выполнения скриптов;
- /usr/local/mgr5/var/webscripts.log – лог обработчика;
- /usr/local/mgr5/var/.webscripts/ – директория, в которую скачивается скрипт:
- webscript - имя таблицы с описаниями скриптов.