ispmanager 6 lite, pro, host

Ansible-скрипты

В панели реализована работа со скриптами на основе популярного и удобного инструмента Ansible.

Ниже описано, как добавить собственные скрипты в панель, и приведены примеры конфигурационных файлов.

Добавление скриптов

Если необходимо добавить скрипты, недоступные в Ansible:

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

Пример 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 - имя таблицы с описаниями скриптов.