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. Следующее объясняет, как настроить всё и запустить тесты.
- Установите virtualenv
- Установите virtualenv
sudo apt install virtualenv
- Создайте virtualenv в своей папке
virtualenv --no-site-packages .venv
Это будет содержать все установленные пакеты. Это самый чистый способ избежать захламления вашей системы пакетами.
- Установите virtualenv
- Запустите virtualenv
- Вам нужно будет выполнять эту команду каждый раз, когда вы перезагружаете консоль или входите в новую сессию.
source .venv/bin/activate
- Установите пакет 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.
Installs and customizes ISPConfig 3 on Ubuntu Bionic
ansible-galaxy install inoxio/ansible-role-ispconfig3