Ansible-скрипты
В панели реализована работа со скриптами на основе популярного и удобного инструмента Ansible.
Ниже описано, как добавить собственные скрипты в панель, и приведены примеры конфигурационных файлов.
Добавление скриптов
Если необходимо добавить скрипты, недоступные в Ansible:
Скопируйте в необходимую директорию, созданную командой ispmanager, webscripts, содержащую meta-описание (webscripts.xml) и архивы скриптов (архив должен содержать ansible playbook.yml и необходимые вспомогательные файлы).
Дополните webscripts.xml соответствующими записями и приложите архив скрипта.
В конфигурационном файле ispmanager (пример пути:
/usr/local/mgr5/etc/ispmgr.conf
) добавьте строку с параметром WebscriptsRepoUrl и путем до директории webscripts.Выполните перезагрузку сервера, после чего на форме Web-скрипты (в разделе Настройки) отобразятся скрипты указанные в webscripts.xml.
При добавление параметра WebscriptsRepoUrl панель будет обращаться только по указанному в нем пути. Одновременно работает только с одной директорией.
Примеры конфигурационных файлов
Пример 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" – значит, наоборот, на этих режимах скрипт работать не будет.
Пример 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 - имя таблицы с описаниями скриптов.