totaldebug.minecraft
ansible-role-minecraft
此角色安装 Minecraft 或 Spigot,并将其配置为在 systemd 或 Supervisor 下运行。
感谢 devops-coop 创建了这个发布版本的大部分内容。
安装
ansible-galaxy install totaldebug.minecraft
特性
- 支持纯净版 Minecraft 和 Spigot
- 支持 Debian 10、Ubuntu 18.04、RHEL/CentOS 7 和 RHEL/CentOS 8
- 在 systemd 下安全地使用 stop 停止服务器
- 使用 Github Actions 和 molecule 运行集成测试
- 管理用户访问控制列表(ACL)
- 管理
server.properties
- 钩子:在执行过程中的特定阶段包含任意任务
角色变量
角色变量
以下变量默认值在 defaults/main.yml
中定义。
minecraft_server_type
选择 minecraft
或 spigot
(默认: minecraft
)
minecraft_version
要安装的 Minecraft 版本(默认: latest
)
示例:
.. code:: yaml
minecraft_version: latest
minecraft_version: 1.10
minecraft_version: 1.9.1
minecraft_version: 16w21a
minecraft_server_download_url
Minecraft 下载 URL(默认:
https://launcher.mojang.com/v1/objects
)
minecraft_server_download_checksum
Minecraft 下载 URL 校验和
minecraft_user
Minecraft 运行的系统用户(默认: minecraft
)
minecraft_group
Minecraft 运行的系统组(默认: minecraft
)
minecraft_home
安装 Minecraft 的目录(默认: /srv/minecraft
)
minecraft_max_memory
要分配的 Java 最大内存( -Xmx
)(默认: 1024M
)
minecraft_initial_memory
要分配的 Java 初始内存( -Xms
)(默认: 1024M
)
minecraft_service_name
systemd 服务名称或 Supervisor 程序名称(默认: minecraft
)
minecraft_supervisor_name
已废弃: Supervisor 程序名称(默认: {{ minecraft_service_name }}
)
minecraft_process_control
选择 systemd
或 supervisor
(默认: systemd
)。
minecraft_whitelist
白名单中的 Minecraft 用户名列表(默认: []
)
minecraft_ops
制作服务器管理员的 Minecraft 用户名列表(默认: []
)
minecraft_banned_players
禁止的 Minecraft 用户名列表(默认: []
)
minecraft_banned_ips
禁止的 IP 地址列表(默认: []
)
minecraft_server_properties
要设置的 server.properties 条目的字典(例如 server-port: 25565
)(默认: {}
)
钩子和运行阶段
ansible-minecraft 将执行组织为多个运行阶段:
setup
- 安装先决条件(例如 Java)
- 创建 Minecraft 用户和组
download
- 从启动器 API 获取最新版本
- 下载 Minecraft
install
- 将版本符号链接到
minecraft_server.jar
- 同意 EULA
acl
- 配置服务器 ACL(白名单、禁止玩家等)
configure
- 设置
server.properties
start
- (重新)启动服务器
您可以在特定阶段之前或之后执行自定义任务。只需使用相关的角色变量指定一个 task include file <https://docs.ansible.com/ansible/playbooks_roles.html#task-include-files-and-encouraging-reuse>
__:
.. code:: yaml
- hosts: minecraft
roles:
- role: devops-coop.minecraft
minecraft_hook_before_start: "{{ playbook_dir }}/download-world-from-s3.yml"
可用的钩子包括:
minecraft_hook_before_setup
在 setup
任务之前运行
minecraft_hook_after_setup
在 setup
任务之后运行
minecraft_hook_before_download
在 download
任务之前运行
minecraft_hook_after_download
在 download
任务之后运行
minecraft_hook_before_install
在 install
任务之前运行
minecraft_hook_after_install
在 install
任务之后运行
minecraft_hook_before_start
在 start
任务之前运行
minecraft_hook_after_start
在 start
任务之后运行
示例
.. code:: yaml
- hosts: minecraft
roles:
- { role: devops-coop.minecraft, minecraft_whitelist: ["jeb_", "dinnerbone"]}
贡献
欢迎提交拉取请求。除了其他功能外,该角色缺少对自定义 Minecraft 服务器的支持。
版本控制
该项目遵循语义版本控制。
在语义版本控制的上下文中,角色合同由角色变量定义。
- 破坏性更改或需要用户干预的更改将增加主要版本。这包括更改角色变量的默认值。
- 不需要用户干预但新增功能的更改将增加次要版本。
- 修复错误将增加补丁版本。
ansible-galaxy install totaldebug.minecraft