inoxio.ispconfig3
Rola Ansible: Instalacja i dostosowanie ISPConfig 3 na Ubuntu Bionic
Rola inoxio.ispconfig3 pomoże ci zainstalować ISPConfig na twojej maszynie z Ubuntu 18.04. Wszystko opiera się na instrukcjach w tutorialu z howtoforge.com i pozwala na różne dostosowania, które będą omówione w kolejnych sekcjach. Rola implementuje również Molecule jako środowisko testowe i zawiera kilka wskazówek, jeśli chcesz samodzielnie korzystać z Molecule.
Wymagania
- Maszyna z Ubuntu 18.04
Zależności
- oefenweb.apt
Zmienne roli
Mail, PHPMyAdmin i Roundcube ustawią głównie hasła administratora dla nazwanych aplikacji. Mail sam w sobie również będzie potrzebował adresu e-mail do wysyłania wiadomości.
ISPConfig jest tutaj najważniejszą częścią, zawiera wiele różnych zmiennych. Większość z nich można przypisać do pliku autoinstall.php z ISPConfig. Warto również zauważyć, że mysql_root_password będzie używane do skonfigurowania modułu MariaDB.
Zmienne w Playbooku: Poniższe zmienne są wymagane w playbooku (oprócz haseł, które zostaną wygenerowane, jeśli pola będą puste). Istnieją kontrole, które weryfikują, czy te zmienne są podane w playbooku. Zmienne domyślne można nadpisać w playbooku.
Mail
: To ustawi wszystkie potrzebne zmienne do skonfigurowania nowej listy mailingowej. Automatycznie
tworzy listę mailingową z podanymi parametrami.
mail_admin_email
: E-mail, który będzie wysyłał/otrzymywał aktualizacje od Mailmana.mail_admin_password
: (Opcjonalnie) Hasło dla administratora Mailmana. Jeśli hasło nie zostanie ustawione, zostanie wygenerowane i wydrukowane na końcu wykonania roli.mail_base_domain
: Podstawowa domena dla Mailmana.phpmyadmin_hostname
: Podstawowa domena dla phpMyAdmin.roundcube_admin_password
: (Opcjonalnie) Hasło do logowania admina w Roundcube. Jeśli hasło nie zostało ustawione, zostanie wygenerowane i wydrukowane na końcu wykonania roli.
ispconfig
: Zawiera większość konfiguracji dla twojej instalacji ISPConfig.
Proszę zapoznać się z przykładem dostarczonym przez ISPConfig.
Możesz go znaleźć tutaj.
ispconfig_admin_password
: (Opcjonalnie) Hasło do logowania administratora ISPConfig. Jeśli hasło nie zostało ustawione, zostanie wygenerowane i wydrukowane na końcu wykonania roli.ispconfig_mysql_root_password
: (Opcjonalnie) Hasło użytkownika root, proszę wybrać bezpieczne. Nawet jeśli twoja baza danych nie jest otwarta. Jeśli hasło nie zostanie ustawione, zostanie wygenerowane i wydrukowane na końcu wykonania roli.ispconfig_mysql_ispconfig_password
: (Opcjonalnie) Logowanie do MySQL. Jeśli hasło nie zostało ustawione, zostanie wygenerowane i wydrukowane na końcu wykonania roli.ispconfig_mysql_master_root_password
: (Opcjonalnie) Hasło dla użytkownika root bazy danych master. Jeśli hasło nie zostało ustawione, zostanie wygenerowane i wydrukowane na końcu wykonania roli.ispconfig_hostname
: Nazwa hosta ISPConfig.roundcube_hostname
: Nazwa hosta Roundcube.quota_mounts
: Lista wszystkich katalogów, które mają być ponownie zamontowane dla kwoty. Zobacz sekcję "Kwota".
Domyślne zmienne:
language
: Język systemowy.mailing_list_name
: Ustawia listę Mailmana. Rekomenduje się ustawienie jej jako Mailman (zobacz przykładowy playbook).- Domyślnie:
Mailman
.
- Domyślnie:
ispconfig_install_mode
: Wybierz tryb, w którym chcesz to zainstalować, jeśli chcesz zainstalować to regularnie, rekomendowane jest użycie domyślnego.- Domyślnie:
standard
.
- Domyślnie:
ispconfig_hostname
: Służy do twojego FQDN, gdzie możesz ustawić nazwę swojej strony.ispconfig_mysql_hostname
: Miejsce, w którym działa baza danych MySQL, jeśli używasz tylko tej roli, domyślna jest wystarczająca.- Domyślnie:
localhost
.
- Domyślnie:
ispconfig_mysql_root_user
: Nazwa użytkownika root. W większości przypadków będzie to po prostu 'root'. Jeśli dostosowujesz swój ISPConfig, ustaw jak chcesz. Ustawi również nazwę użytkownika root w konfiguracji MariaDB.- Domyślnie:
root
.
- Domyślnie:
ispconfig_mysql_database
: Baza danych, która zostanie zainicjalizowana w konfiguracji MariaDB i używana przez ISPConfig.- Domyślnie:
dbISPConfig
.
- Domyślnie:
ispconfig_mysql_ispconfig_user
: Użytkownik, który zostanie utworzony w bazie danych MySQL.- Domyślnie:
ISPConfig
.
- Domyślnie:
ispconfig_mysql_port
: Port używany przez MariaDB, używany również do inicjalizacji bazy danych.- Domyślnie:
3306
.
- Domyślnie:
ispconfig_mysql_charset
: Zestaw znaków bazy danych.- Domyślnie:
utf8
.
- Domyślnie:
ispconfig_http_server
: Ustala serwer HTTP działający w serwisie ISPConfig.- Domyślnie:
apache
.
- Domyślnie:
ispconfig_ispconfig_port
: Port, którego będzie używała strona.- Domyślnie:
8080
.
- Domyślnie:
ispconfig_ispconfig_use_ssl
: Użyj SSL do połączenia z ISPConfig.- Domyślnie:
y
.
- Domyślnie:
ispconfig_join_multiserver_setup
: Przyłącza do wielu serwerów.- Domyślnie:
n
.
- Domyślnie:
ispconfig_mysql_master_hostname
: Miejsce głównej bazy danych MySQL, w większości przypadków 'localhost' jest wystarczający.- Domyślnie:
localhost
.
- Domyślnie:
ispconfig_configure_mail
: Konfiguracja Mailmana dla ISPConfig.- Domyślnie:
y
.
- Domyślnie:
ispconfig_configure_jailkit
: Konfiguracja Jailkit dla ISPConfig.- Domyślnie:
y
.
- Domyślnie:
ispconfig_configure_ftp
: Konfiguracja PureFTP dla ISPConfig.- Domyślnie:
y
.
- Domyślnie:
ispconfig_configure_dns
: Konfiguracja DNS dla ISPConfig.- Domyślnie:
y
.
- Domyślnie:
ispconfig_configure_nginx
: Konfiguracja NGINX dla ISPConfig.- Domyślnie:
n
.
- Domyślnie:
ispconfig_configure_apache
: Konfiguracja Apache dla ISPConfig.- Domyślnie:
y
.
- Domyślnie:
ispconfig_configure_firewall
: Konfiguracja zapory dla ISPConfig.- Domyślnie:
y
.
- Domyślnie:
ispconfig_install_ispconfig_web_interface
: Konfiguracja interfejsu webowego dla ISPConfig.- Domyślnie:
y
.
- Domyślnie:
ispconfig_do_backup
: Konfiguracja kopii zapasowej dla ISPConfig.- Domyślnie:
yes
.
- Domyślnie:
ispconfig_mysql_master_database
: Baza danych, która zawiera informacje dla ISPConfig.- Domyślnie:
dbISPConfig
.
- Domyślnie:
ispconfig_reconfigure_permissions_in_master_database
: Ustawia potrzebne uprawnienia dla ISPConfig w bazie danych.- Domyślnie:
no
.
- Domyślnie:
ispconfig_reconfigure_services
: Ponownie konfiguruje wszystkie usługi.- Domyślnie:
yes
.
- Domyślnie:
ispconfig_create_new_ispconfig_ssl_cert
: Tworzy nowy certyfikat (nie będzie potrzebny).- Domyślnie:
no
.
- Domyślnie:
ispconfig_reconfigure_crontab
: Konfiguruje zadanie cron.- Domyślnie:
yes
.
- Domyślnie:
ispconfig_configure_webserver
: Konfiguruje serwer www.quota_mounts
: Lista katalogów, które będą monitorowane przez kwotę.- Domyślnie:
/
.
- Domyślnie:
Kwota
Lista quota_mounts
w defaults/main.yml zawiera wszystkie katalogi, które będą edytowane w pliku fstab, aby włączyć kwoty na
nich. Jeśli lista jest pusta, kwoty nie będą włączone. Możesz nadpisać tę listę, dodając zmienną kwotową w playbooku
(zobacz sekcję "Zmienne roli"). Jeśli kernel Twojej maszyny nie zawiera modułów kwotowych, musisz zostawić listę pustą.
Dotyczy to maszyn AWS, które używają kernela linux-aws.
Wiele wersji PHP
Możesz określić wiele wersji PHP w vars/main.yml, które zostaną zainstalowane.
Przykładowy Playbook
Poniższy przykład pokazuje, jak możesz skonfigurować swój playbook.
- role: inoxio.ispconfig3
mail_admin_email: email@twoja-firma.com
mail_base_domain: twoja-firma.com
ispconfig_hostname: ispconfig.twoja-firma.com
roundcube_hostname: mail.twoja-firma.pl
Wszystko inne wymienione w zmiennych roli można znaleźć w defaults/main.yml.
Wszystkie ustawienia dla roli ISPConfig są pobierane z pliku konfiguracyjnego dla instalacji Apache2.
Zobacz ten link
po więcej informacji.
Przykładowe ustawienia można znaleźć w pliku autoinstall.php dla ISPConfig.
Uruchom jako VM i przetestuj z Molecule
Wszystko tutaj pochodzi z https://Molecule.readthedocs.io/en/latest/. Warto mieć wszystko w jednym miejscu.
To pomoże ci uruchomić role Ansible na prawdziwej maszynie wirtualnej bez przejmowania się stanem VM.
Aby uruchomić rolę i uruchomić środowisko testowe, będziesz potrzebować Molecule. Poniżej wyjaśniono, jak wszystko skonfigurować i uruchomić testy.
Zainstaluj virtualenv
- Zainstaluj virtualenv
sudo apt install virtualenv
- Utwórz virtualenv w swoim folderze
virtualenv --no-site-packages .venv
To będzie zawierać wszystkie zainstalowane pakiety. To najczystszy sposób, aby uniknąć zagracenia systemu.
- Zainstaluj virtualenv
Uruchom virtualenv
- Będziesz musiał uruchomić tę komendę za każdym razem, gdy ponownie uruchomisz konsolę lub wejdziesz w nową sesję.
source .venv/bin/activate
Zainstaluj pakiet Molecule
pip3 install Molecule ansible
- Będziesz musiał zainstalować interfejs API Pythona dla swojego sterownika, którego będziesz używać, w przypadku tej roli jest to Vagrant.
- Uruchom tę komendę, jeśli widzisz
(.venv)
na początku swojej linii konsolowej. pip install python-vagrant
To są wymagania, które musisz spełnić przed rozpoczęciem pracy z Molecule. W następnej części wyjaśniono, jak możesz skonfigurować role do testowania.
Uruchom test
Uruchamianie testów jest dość proste, wystarczy przejść do swojego venv, jak pokazano w kroku 2 powyżej, i uruchomić:
Molecule test
To automatycznie ustawi twój sterownik (Docker lub Vagrant w większości przypadków) i uruchomi różne scenariusze testowe takie jak testy idempotencji lub własne testy, które mogą sprawdzać różne rzeczy.
Nowa Rola
Molecule init role -r nowa-rola -d vagrant
To zainicjalizuje nową rolę Vagrant o nazwie nowa-rola
i
będzie zawierać standardową konfigurację dla Vagrant. Jako alternatywę możesz ustawić swój sterownik na Docker lub inne
wspierane metody wirtualizacji.
Aktualizacja Molecule
Uwaga: Molecule jest stosunkowo nowa, więc będą aktualizacje, zaleca się uruchamianie tej komendy od czasu do czasu.
pip install --upgrade Molecule
Przykład Molecule i Playbook
Tutaj zobaczysz przykład, jak struktura Molecule.yml
i Playbook.yml
wygląda dla tego scenariusza testowego.
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
Tutaj możesz zobaczyć używaną Molecule.yml
dla tego projektu, widać użyty driver
i jego ustawienia, takie jak pamięć. Ważna uwaga: Konieczne było
ustawienie nazwy hosta w roli, dlatego widać, że jest ona ustawiona za pomocą
instance_raw_config_args
.
Możesz używać różnych boxów bezpośrednio z Vagrant lub załadować je z linku.
W przypadku takich zmian proszę zajrzeć do dokumentacji Molecule.
Jeśli spojrzysz na Playbook.yml
, zauważysz, że jest podobny do zwykłego
wywołania roli, ale z nazwą. Pełny przykład można zobaczyć poniżej w przykładzie playbooka.
Playbook.yml
---
- name: Konwergencja
hosts: all
roles:
- role: inoxio.ispconfig3
***
***
Molecule
Ta sekcja będzie zawierać podsumowanie na temat Molecule, ponieważ to był pierwszy zestaw jej konfiguracji.
Pierwsze uruchomienie z Molecule odbyło się z Dockerem jako sterownikiem. Z tą metodą szybko napotkano przeszkody. Z powodu specyfiki Dockera i złożoności tej roli. Zaczęło się od usług, które nie są załadowane wewnątrz kontenera i przeszło do różnic w PID. Dlatego doszliśmy do wniosku, że nie jest przyjemnie dostosowywać swój kod do swojego frameworka testowego.
To pozostawiło wybór użycia Vagranta jako sterownika. To pomoże nam rozwiązać problem braku pełnego środowiska wirtualnego i zapewnienia płynnego działania.
To ustawienie przebiegło bez większych problemów i przetestowano wszystkie pożądane kluczowe punkty.
Jeśli chcesz włączyć Molecule do swojej roli, proszę postępuj zgodnie z tą krótką listą:
- Upewnij się, że zaczynasz od pustej przestrzeni i tworzysz swoją rolę w Molecule, abyś mogł ją testować od czasu do czasu.
- Jeśli chcesz używać Dockera, upewnij się, że twoja rola nie jest zbyt złożona i nie musisz dostosowywać swojej roli do Dockera.
Installs and customizes ISPConfig 3 on Ubuntu Bionic
ansible-galaxy install inoxio.ispconfig3