ispconfig3

Ansible Роль: Установка и настройка ISPConfig 3 на Ubuntu Bionic

Роль inoxio.ispconfig3 поможет вам установить ISPConfig на ваш компьютер с Ubuntu 18.04. Она следует инструкциям из туториала на howtoforge.com и позволяет производить настройки, которые будут объяснены в следующих разделах. Также роль использует Molecule в качестве тестовой среды и содержит несколько советов, если вы хотите использовать Molecule самостоятельно.

Требования

  • Компьютер с Ubuntu 18.04

Зависимости

  • oefenweb.apt

Переменные роли

Mail, PHPMyAdmin и Roundcube в основном устанавливают пароли администратора для указанных приложений. Mail также нуждается в электронной почте, с помощью которой он сможет отправлять письма.

ISPConfig — самая важная часть, она содержит множество различных переменных. Большинство из них могут быть перенесены в autoinstall.php от ISPConfig. Также важно отметить, что mysql_root_password будет использован для настройки модуля MariaDB.

Переменные playbook: Следующие переменные необходимы в playbook (кроме паролей, которые будут сгенерированы, если оставить поле пустым). Есть проверки, которые подтверждают, что эти переменные указаны в playbook. Переменные по умолчанию можно переопределить в playbook.

Mail: Это установит все необходимые переменные для настройки нового почтового списка. Он автоматически создаст почтовый список с заданными параметрами.

  • mail_admin_email: Почта, которая будет отправлять/получать обновления от Mailman.

  • mail_admin_password: (Необязательно) Пароль администратора Mailman. Если пароль не установлен, будет сгенерирован и выведен в конце выполнения роли.

  • mail_base_domain: Основной домен для Mailman.

  • phpmyadmin_hostname: Основной домен для phpmyadmin.

  • roundcube_admin_password: (Необязательно) Пароль для входа администратора в Roundcube. Если пароль не установлен, будет создан и выведен в конце выполнения роли.

ispconfig: Это содержит большинство конфигураций для вашей настройки ISPConfig. Пожалуйста, ознакомьтесь с примером, предоставленным самим ISPConfig. Вы можете найти его здесь.

  • ispconfig_admin_password: (Необязательно) Пароль для входа администратора ISPConfig. Если пароль не установлен, будет сгенерирован и выведен в конце выполнения роли.

  • ispconfig_mysql_root_password: (Необязательно) Пароль пользователя root, выберите надежный. Даже если ваша база данных не выставлена на всеобщее обозрение. Если пароль не установлен, будет сгенерирован и выведен в конце выполнения роли.

  • ispconfig_mysql_ispconfig_password: (Необязательно) Логин для MySQL. Если пароль не установлен, будет сгенерирован и выведен в конце выполнения роли.

  • ispconfig_mysql_master_root_password: (Необязательно) Пароль для пользователя root главной базы данных. Если пароль не установлен, будет сгенерирован и выведен в конце выполнения роли.

  • ispconfig_hostname: Имя хоста ISPConfig.

  • roundcube_hostname: Имя хоста roundcube.

  • quota_mounts: Список всех директорий, которые будут повторно смонтированы для квоты. См. раздел "Квота".

Переменные по умолчанию:

  • language: Язык для всей системы.

  • mailing_list_name: Устанавливает список mailman. Рекомендуется задать его как Mailman (см. пример playbook).

    • По умолчанию: Mailman
  • ispconfig_install_mode: Установите режим, который вам нужен. Если вы хотите установить его обычно, рекомендуется использовать значение по умолчанию.

    • По умолчанию: standard
  • ispconfig_hostname: Это используется для вашего FQDN, где вы можете установить имя вашего сайта.

  • ispconfig_mysql_hostname: Место, где работает MySQL база данных; если вы просто используете эту роль, то значение по умолчанию достаточно.

    • По умолчанию: localhost
  • ispconfig_mysql_root_user: Имя пользователя root. В большинстве случаев это просто 'root'. Если вы настраиваете свой ISPConfig, задайте его по своему усмотрению. Это также установит имя пользователя root в настройках MariaDB.

    • По умолчанию: root
  • ispconfig_mysql_database: База данных, которая будет инициализирована в настройках MariaDB и использована ISPConfig.

    • По умолчанию: dbISPConfig
  • ispconfig_mysql_ispconfig_user: Пользователь, который будет создан внутри MySQL базы данных.

    • По умолчанию: ISPConfig
  • ispconfig_mysql_port: Порт, используемый MariaDB, также используется для инициализации базы данных.

    • По умолчанию: 3306
  • ispconfig_mysql_charset: Кодировка базы данных.

    • По умолчанию: utf8
  • ispconfig_http_server: Устанавливает HTTP сервер, который работает за сайтом ISPConfig.

    • По умолчанию: apache
  • ispconfig_ispconfig_port: Порт для использования веб-сайтом.

    • По умолчанию: 8080
  • ispconfig_ispconfig_use_ssl: Использовать SSL для подключения к ISPConfig.

    • По умолчанию: y
  • ispconfig_join_multiserver_setup: Соединяет несколько серверов.

    • По умолчанию: n
  • ispconfig_mysql_master_hostname: Место хранения главной MySQL базы данных, в большинстве случаев 'localhost' достаточно.

    • По умолчанию: localhost
  • ispconfig_configure_mail: Настройка Mailman для ISPConfig.

    • По умолчанию: y
  • ispconfig_configure_jailkit: Настройка Jailkit для ISPConfig.

    • По умолчанию: y
  • ispconfig_configure_ftp: Настройка PureFTP для ISPConfig.

    • По умолчанию: y
  • ispconfig_configure_dns: Настройка DNS для ISPConfig.

    • По умолчанию: y
  • ispconfig_configure_nginx: Настройка NGINX для ISPConfig.

    • По умолчанию: n
  • ispconfig_configure_apache: Настройка Apache для ISPConfig.

    • По умолчанию: y
  • ispconfig_configure_firewall: Настройка брандмауэра для ISPConfig.

    • По умолчанию: y
  • ispconfig_install_ispconfig_web_interface: Настройка веб-интерфейса для ISPConfig.

    • По умолчанию: y
  • ispconfig_do_backup: Настройка резервного копирования для ISPConfig.

    • По умолчанию: yes
  • ispconfig_mysql_master_database: База данных, содержащая информацию для ISPConfig.

    • По умолчанию: dbISPConfig
  • ispconfig_reconfigure_permissions_in_master_database: Устанавливает необходимые разрешения для ISPConfig в базе данных.

    • По умолчанию: no
  • ispconfig_reconfigure_services: Переопределяет все службы.

    • По умолчанию: yes
  • ispconfig_create_new_ispconfig_ssl_cert: Создает новый сертификат (не будет нужен).

    • По умолчанию: no
  • ispconfig_reconfigure_crontab: Настраивает cronjob.

    • По умолчанию: yes
  • ispconfig_configure_webserver: Настраивает веб-сервер.

  • quota_mounts: Список директорий, за которыми будет следить квота.

    • По умолчанию: /

Квота

Список quota_mounts в defaults/main.yml содержит все директории, которые будут отредактированы в файле fstab, чтобы включить квоту на них. Если список пуст, квота не будет включена. Вы можете переопределить этот список, добавив переменную квоты в playbook (см. раздел "Переменные роли"). Если ядро на вашем компьютере не содержит модулей квоты, вам нужно оставить список пустым. Это касается машин AWS, использующих ядро linux-aws.

Несколько версий PHP

Вы можете указать несколько версий PHP в vars/main.yml, которые будут установлены.

Пример Playbook

Это показывает пример того, как можно настроить ваш playbook.

- роль: inoxio.ispconfig3
  mail_admin_email: [email protected]
  mail_base_domain: your-company.com
  ispconfig_hostname: ispconfig.your-company.com
  roundcube_hostname: mail.your-company.de
 

Все остальные упомянутые в переменных роли настройки можно найти в defaults/main.yml.
Все настройки для роли ISPConfig берутся из конфигурационного файла для настройки Apache2. Смотрите эту ссылку для получения дополнительной информации. Вы можете найти примеры настроек в autoinstall.php для ISPConfig.

Запуск в качестве ВМ и тестирование с Molecule

Всё это взято из https://Molecule.readthedocs.io/en/latest/. Удобно иметь всё в одном месте.

Это поможет вам запустить роли Ansible на реальной виртуальной машине без заботы о состоянии ВМ.

Для запуска роли и тестовой среды вам понадобится Molecule. Следующее объясняет, как настроить всё и запустить тесты.

  1. Установите virtualenv
    • Установите virtualenv sudo apt install virtualenv
    • Создайте virtualenv в своей папке virtualenv --no-site-packages .venv Это будет содержать все установленные пакеты. Это самый чистый способ избежать захламления вашей системы пакетами.
  2. Запустите virtualenv
    • Вам нужно будет выполнять эту команду каждый раз, когда вы перезагружаете консоль или входите в новую сессию.
    • source .venv/bin/activate
  3. Установите пакет Molecule
    • pip3 install Molecule ansible
    • Вам нужно будет установить Python API для вашего драйвера, который вы будете использовать, в случае этой роли - Vagrant.
    • Выполните эту команду, если вы видите (.venv) в начале строки вашей консоли.
    • pip install python-vagrant

Это требования, которые вам нужно выполнить перед началом работы с Molecule. В следующем разделе объясняется, как вы можете настроить роли для тестирования.

Запуск теста

Запуск тестов довольно прост, просто войдите в свою venv, как было показано в шаге 2, и выполните:

Molecule test

Это автоматически настроит ваш драйвер (Docker или Vagrant в большинстве случаев) и запустит различные тестовые сценарии, такие как тесты идемпотентности или ваши собственные написанные тесты, которые могут тестировать всевозможные вещи.

Новая роль

Molecule init role -r new-role -d vagrant

Это инициализирует новую роль Vagrant с именем new-role и она будет содержать стандартную настройку для Vagrant. В качестве альтернативы вы можете установить свой драйвер на Docker или другие поддерживаемые методы виртуализации.

Обновление Molecule

Примечание: Molecule относительно нов, поэтому будут обновления, поэтому рекомендуется время от времени запускать эту команду.

pip install --upgrade Molecule

Пример Molecule и Playbook

Здесь вы увидите пример структуры Molecule.yml и Playbook.yml для этого тестового сценария.

Molecule.yml

---
dependency:
  name: galaxy
driver:
  name: vagrant
  provider:
    name: virtualbox
lint:
  name: yamllint
platforms:
  - name: instance
    box: ubuntu/bionic64
    instance_raw_config_args:
      - "vm.hostname = 'web.my.net'"
    memory: 4096
provisioner:
  name: ansible
  lint:
    name: ansible-lint
    enabled: false
scenario:
  name: default
  test_sequence:
    # - lint
    - destroy
    # - dependency
    - syntax
    - create
    - prepare
    - converge
    - idempotence
    # - side_effect
    - verify
    - destroy
verifier:
  name: testinfra
  lint:
    name: flake8
    

Здесь вы можете увидеть используемый файл Molecule.yml для этого проекта, вы можете увидеть драйвер и его настройки, такие как память. Важно отметить: было необходимо для задачи в роли установить имя хоста, поэтому вы можете видеть, что оно настроено с помощью instance_raw_config_args. Вы можете использовать различные образы прямо из Vagrant или загрузить их по ссылке. Для этого типа изменений, пожалуйста, ознакомьтесь с документацией Molecule.

Если вы посмотрите на Playbook.yml, вы увидите, что он схож с обычным вызовом роли, но название отличается. Смотрите полный пример ниже в примере playbook.

Playbook.yml

---
- name: Converge
  hosts: all
  roles:
     - role: inoxio.ispconfig3
         ***
         ***

Molecule

Этот раздел будет содержать заключение о Molecule, потому что это была первая установка его.

Первый запуск с Molecule был с Docker в качестве драйвера. С этим используемым методом возникли сложности очень быстро. Из-за природы Docker и сложности этой роли. Это началось с служб, которые не загружены внутри контейнера, и продолжилось с PID, которые разные. Так мы пришли к выводу, что неудобно адаптировать свой код к своему тестовому фреймворку.

Это оставило выбор использовать Vagrant в качестве драйвера. Это поможет нам с проблемой отсутствия полностью существующей виртуальной среды и плавного запуска всего.

Эта установка прошла без крупных проблем и протестировала все важные моменты.

Если вы хотите включить Molecule в свою роль, пожалуйста, следуйте этому небольшому списку:

  • Убедитесь, что вы начинаете с чистого листа и создаете свою роль в Molecule, чтобы вы могли периодически тестировать её.
  • Если вы хотите использовать Docker, убедитесь, что ваша роль не слишком сложная, и вам не нужно адаптировать свою роль к Docker.
Установить
ansible-galaxy install inoxio/ansible-role-ispconfig3
Лицензия
apache-2.0
Загрузки
186