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={'wserver:server_id': 'prod'},
data=...
),
rds_inst=RDSDBInstance(
id='db-inst-1',
status='available',
tags={'wserver:server_id': '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.6.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b699599aa15c664f44f02d24a54e58f104e9ef3c2c89e669ef7800a9e8228968 |
|
MD5 | 8fa076b507f03353d93b057333c1fed5 |
|
BLAKE2b-256 | 2e0b347d4ad3579b3f5af9332b07a45cd6f6639d80ef492c38bd490166a60416 |
Close
Hashes for acore_server_metadata-0.6.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6708b20f05bccd81f78f9fc06d1155a8a328f00ddda5e201d2140aef2edadc16 |
|
MD5 | fe39380d93c20cc9dc289a5b86d00d4b |
|
BLAKE2b-256 | ec14bb869f0528184a33834e4438072c9b95f82120546db8d98c505d6c57f319 |