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。 以下将说明如何设置一切并运行测试。
- 安装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并运行:
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.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的内容,因为这是它的第一次设置。
使用Docker作为驱动程序的第一次运行具有Molecule。使用此方法时,很快遇到了障碍。 因为Docker的特性和此角色的复杂性。 从服务在容器内未加载开始,进行到PID不同。 因此,我们得出的结论是,适应您的代码以满足测试框架并不理想。
这留下了使用Vagrant作为驱动程序的选择。这将帮助我们解决没有完整虚拟环境的问题,并使一切顺利运行。
这个设置顺利进行,没有遇到任何重大问题,并测试了所有所需的关键点。
如果您希望将Molecule包含在您的角色中,请遵循这份简要清单:
- 确保从头开始,创建Molecule中的角色,以便您可以不时进行测试。
- 如果您想使用Docker,请确保您的角色不是太复杂,并且无需将角色适应Docker环境。
Installs and customizes ISPConfig 3 on Ubuntu Bionic
ansible-galaxy install inoxio.ispconfig3