Azerothcore WOW server metadata for Fleet management.
Project description
Welcome to acore_server_metadata Documentation
背景
AzerothCore (acore) 是一个开源的魔兽世界模拟器, 其代码质量以及文档是目前 (2023 年) 我看来所有的开源魔兽世界模拟器中最好的. 根据魔兽世界官服服务器的架构, 每一个 realm (大区下的某个服务器, 例如国服著名的山丘之王, 洛萨等) 一般都对应着一个单体虚拟机和一个单体数据库. 一个大区下有很多这种服务器, 而在生产环境和测试开发环境下又分别有很多这种服务器. 所以我需要开发一个工具对于这些服务器进行管理, 健康检查等.
我假设游戏服务器虚拟机和数据库都是在 AWS 上用 EC2 和 RDS 部署的. 所以这个项目只能用于 AWS 环境下的服务器管理.
关于本项目
本项目是一个简单的 Python 包, 提供了对一个 realm 服务器的抽象.
基础用例, 获取服务器状态
# 获取服务器的状态
>>> import boto3
>>> from acore_server_metadata.api import Server
>>> server_id = "prod"
>>> server = Server.get_server(server_id, ec2_client, rds_client)
>>> server
Server(
id='prod-1',
ec2_inst=Ec2Instance(
id='i-1a2b3c4d',
status='running',
...
tags={'realm': 'prod'},
data=...
),
rds_inst=RDSDBInstance(
id='db-inst-1',
status='available',
tags={'realm': 'prod'},
data=...
),
)
# 检查服务器的状态
>>> server.is_exists()
>>> server.is_running()
>>> server.is_ec2_exists()
>>> server.is_ec2_running()
>>> server.is_rds_exists()
>>> server.is_rds_running()
# 重新获取服务器的状态
>>> server.refresh()
# 批量获取服务器的状态, 进行了一些优化, 以减少 API 调用次数
>>> server_mapper = Server.batch_get_server(
... ids=["prod-1", "prod-2", "dev-1", "dev-2"],
... ec2_client=ec2_client,
... rds_client=rds_client,
... )
>>> server_mapper
{
"prod-1": <Server id="prod-1">,
"prod-2": <Server id="prod-2">,
"dev-1": <Server id="dev-1">,
"dev-2": <Server id="dev-2">,
}
对服务器进行操作
# 创建新的 EC2
>>> server.run_ec2(ec2_client, ami_id, instance_type, ...)
# 创建新的 DB Instance
>>> server.run_rds(rds_client, db_snapshot_identifier, db_instance_class, ...)
# 启动 EC2
>>> server.start_ec2(ec2_client)
# 启动 RDS
>>> server.start_rds(rds_client)
# 停止 EC2
>>> server.stop_ec2(ec2_client)
# 停止 RDS
>>> server.stop_rds(rds_client)
# 删除 EC2
>>> server.delete_ec2(ec2_client)
# 删除 RDS
>>> server.delete_rds(rds_client)
# 更新 DB 的 master password
>>> server.update_db_master_password(rds_client, master_password)
# 关联 EIP 地址
>>> server.associate_eip_address(...)
# 创建数据库备份
>>> server.create_db_snapshot(...)
# 清理数据库备份
>>> server.cleanup_db_snapshot(...)
Install
acore_server_metadata is released on PyPI, so all you need is to:
$ pip install acore-server-metadata
To upgrade to latest version:
$ pip install --upgrade acore-server-metadata
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for acore_server_metadata-0.4.4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f000611cd9f456cd5a965880798be60ceb10c5c60f4103787c97e7ca6b74ac90 |
|
MD5 | 5dc50d620fa93aaf149205425b12efc6 |
|
BLAKE2b-256 | e5e0ff527bbb423ab2bc6497c23b217f1e4a02fe34ae861f1cc2bbe947488eeb |
Close
Hashes for acore_server_metadata-0.4.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 846b41ff351e221771f0afd62e434f01634474ef38efaa4ce4293362f51b63a3 |
|
MD5 | 6229100d52d77963c4c43baf2033863c |
|
BLAKE2b-256 | b971e25da69e89033b825b27a9c53c47b72b4078cd1ff778635627fe548e543e |