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.
  • 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.
  • 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.
  • 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.
  • ispconfig_mysql_database: Baza danych, która zostanie zainicjalizowana w konfiguracji MariaDB i używana przez ISPConfig.

    • Domyślnie: dbISPConfig.
  • ispconfig_mysql_ispconfig_user: Użytkownik, który zostanie utworzony w bazie danych MySQL.

    • Domyślnie: ISPConfig.
  • ispconfig_mysql_port: Port używany przez MariaDB, używany również do inicjalizacji bazy danych.

    • Domyślnie: 3306.
  • ispconfig_mysql_charset: Zestaw znaków bazy danych.

    • Domyślnie: utf8.
  • ispconfig_http_server: Ustala serwer HTTP działający w serwisie ISPConfig.

    • Domyślnie: apache.
  • ispconfig_ispconfig_port: Port, którego będzie używała strona.

    • Domyślnie: 8080.
  • ispconfig_ispconfig_use_ssl: Użyj SSL do połączenia z ISPConfig.

    • Domyślnie: y.
  • ispconfig_join_multiserver_setup: Przyłącza do wielu serwerów.

    • Domyślnie: n.
  • ispconfig_mysql_master_hostname: Miejsce głównej bazy danych MySQL, w większości przypadków 'localhost' jest wystarczający.

    • Domyślnie: localhost.
  • ispconfig_configure_mail: Konfiguracja Mailmana dla ISPConfig.

    • Domyślnie: y.
  • ispconfig_configure_jailkit: Konfiguracja Jailkit dla ISPConfig.

    • Domyślnie: y.
  • ispconfig_configure_ftp: Konfiguracja PureFTP dla ISPConfig.

    • Domyślnie: y.
  • ispconfig_configure_dns: Konfiguracja DNS dla ISPConfig.

    • Domyślnie: y.
  • ispconfig_configure_nginx: Konfiguracja NGINX dla ISPConfig.

    • Domyślnie: n.
  • ispconfig_configure_apache: Konfiguracja Apache dla ISPConfig.

    • Domyślnie: y.
  • ispconfig_configure_firewall: Konfiguracja zapory dla ISPConfig.

    • Domyślnie: y.
  • ispconfig_install_ispconfig_web_interface: Konfiguracja interfejsu webowego dla ISPConfig.

    • Domyślnie: y.
  • ispconfig_do_backup: Konfiguracja kopii zapasowej dla ISPConfig.

    • Domyślnie: yes.
  • ispconfig_mysql_master_database: Baza danych, która zawiera informacje dla ISPConfig.

    • Domyślnie: dbISPConfig.
  • ispconfig_reconfigure_permissions_in_master_database: Ustawia potrzebne uprawnienia dla ISPConfig w bazie danych.

    • Domyślnie: no.
  • ispconfig_reconfigure_services: Ponownie konfiguruje wszystkie usługi.

    • Domyślnie: yes.
  • ispconfig_create_new_ispconfig_ssl_cert: Tworzy nowy certyfikat (nie będzie potrzebny).

    • Domyślnie: no.
  • ispconfig_reconfigure_crontab: Konfiguruje zadanie cron.

    • Domyślnie: yes.
  • ispconfig_configure_webserver: Konfiguruje serwer www.

  • quota_mounts: Lista katalogów, które będą monitorowane przez kwotę.

    • 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.

  1. 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.
  2. 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
  3. 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.
Zainstaluj
ansible-galaxy install inoxio.ispconfig3
Licencja
apache-2.0
Pobrania
200