inoxio.ispconfig3

Ansible角色:在Ubuntu Bionic上安装和自定义ISPConfig 3

inoxio.ispconfig3角色将帮助您在Ubuntu 18.04机器上安装ISPConfig。 它遵循howtoforge.com的教程,并允许进行自定义,这将在接下来的部分中说明。 它还实现了Molecule作为测试环境,并提供了一些提示,供您个人使用Molecule。

要求

  • Ubuntu 18.04的机器

依赖

  • oefenweb.apt

角色变量

邮件、PHPMyAdmin和Roundcube主要设置所命名应用程序的管理员密码。 邮件本身还需要一个可以发送邮件的邮箱。

ISPConfig是最重要的部分,它包含了许多不同的变量。 它们大多数可以转换为ISPConfig的autoinstall.php。 还需要注意的是,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:(可选)根用户的密码,请选择一个安全的密码。即使您的数据库没有暴露。如果未设置密码,将生成密码并在角色执行结束时打印出来。

  • ispconfig_mysql_ispconfig_password:(可选)MySQL的登录密码。如果未设置密码,将生成密码并在角色执行结束时打印出来。

  • ispconfig_mysql_master_root_password:(可选)主数据根用户的密码。如果未设置密码,将生成密码并在角色执行结束时打印出来。

  • 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'。如果您自定义ISPConfig,可以根据需要进行设置。这也将在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:设置在ISPConfig站点后运行的HTTP服务器。

    • 默认: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:ISPConfig的邮件设置。

    • 默认:y
  • ispconfig_configure_jailkit:ISPConfig的Jailkit设置。

    • 默认:y
  • ispconfig_configure_ftp:ISPConfig的PureFTP设置。

    • 默认:y
  • ispconfig_configure_dns:ISPConfig的DNS设置。

    • 默认:y
  • ispconfig_configure_nginx:ISPConfig的NGINX设置。

    • 默认:n
  • ispconfig_configure_apache:ISPConfig的Apache设置。

    • 默认:y
  • ispconfig_configure_firewall:ISPConfig的防火墙设置。

    • 默认:y
  • ispconfig_install_ispconfig_web_interface:ISPConfig的Web界面设置。

    • 默认: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:配置Cron作业。

    • 默认:yes
  • ispconfig_configure_webserver:配置Web服务器。

  • quota_mounts:将查看配额的目录列表。

    • 默认:/

配额

defaults/main.yml中的quota_mounts列表包含所有要在fstab文件中编辑以启用配额的目录。如果该列表为空,则不会启用配额。您可以通过在playbook中添加配额变量来重写此列表(请参见“角色变量”部分)。如果您机器上的内核不包含配额模块,则必须保持列表为空。对于使用linux-aws内核的AWS机器就是这种情况。

多个PHP版本

您可以在vars/main.yml中指定要安装的多个PHP版本。

示例Playbook

这显示了配置Playbook的示例。

- role: inoxio.ispconfig3
  mail_admin_email: email@your-company.com
  mail_base_domain: your-company.com
  ispconfig_hostname: ispconfig.your-company.com
  roundcube_hostname: mail.your-company.de

在角色变量中提到的其他所有内容都可以在defaults/main.yml中找到。 ISPConfig角色的所有设置均来自Apache2设置的配置文件。 有关更多信息,请参见此链接。 您可以在ISPConfig的autoinstall.php下找到示例设置。

作为虚拟机启动并使用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并运行:

Molecule test

这将自动设置您的驱动程序(在大多数情况下是Docker或Vagrant)并运行不同的测试场景,例如幂等性测试或您自己编写的测试,这些测试可以测试各种情况。

新角色

Molecule init role -r new-role -d vagrant

这将初始化一个名为new-role的新Vagrant角色,并包含Vagrant的标准设置。作为替代,您可以将驱动程序设置为Docker或其他支持的虚拟化方法。

升级Molecule

注意:Molecule相对较新,所以会有更新,建议定期运行此命令。

pip install --upgrade Molecule

示例Molecule和Playbook

在这里,您将看到Molecule.ymlPlaybook.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的内容,因为这是它的第一次设置。

使用Docker作为驱动程序的第一次运行具有Molecule。使用此方法时,很快遇到了障碍。 因为Docker的特性和此角色的复杂性。 从服务在容器内未加载开始,进行到PID不同。 因此,我们得出的结论是,适应您的代码以满足测试框架并不理想。

这留下了使用Vagrant作为驱动程序的选择。这将帮助我们解决没有完整虚拟环境的问题,并使一切顺利运行。

这个设置顺利进行,没有遇到任何重大问题,并测试了所有所需的关键点。

如果您希望将Molecule包含在您的角色中,请遵循这份简要清单:

  • 确保从头开始,创建Molecule中的角色,以便您可以不时进行测试。
  • 如果您想使用Docker,请确保您的角色不是太复杂,并且无需将角色适应Docker环境。
安装
ansible-galaxy install inoxio.ispconfig3
许可证
apache-2.0
下载
200