Remote Bootstrap#

Bootstrap Actions 一文中我们介绍了所有的 bootstrap action 的功能, 在 Cheat Sheet 一文中我们介绍了所有要在 EC2 上运行的命令. 而本文则介绍了作为开发者, 如何在不 SSH 到 EC2 的情况下, 从开发者电脑或是 AWS EC2, Lambda 等计算平台上上远程执行 bootstrap 命令.

How it work#

远程执行的本质是用 aws_ssm_run_command 工具把 bootstrap 命令行命令发送到 EC2 上远程执行.

Example#

Remoter 类实现了远程执行的功能. 我们这里有一个脚本 debug/remote_bootstrap.py, 介绍了这个类该怎么用.

debug/remote_bootstrap.py.py
 1# -*- coding: utf-8 -*-
 2
 3"""
 4sudo /home/ubuntu/.pyenv/shims/python3.11 -c "$(curl -fsSL https://raw.githubusercontent.com/MacHu-GWU/acore_server_bootstrap-project/main/install.py)" --acore_server_bootstrap_version 1.0.1 --acore_soap_app_version 0.3.6 --acore_db_app_version 0.2.3
 5"""
 6
 7from boto_session_manager import BotoSesManager
 8from acore_server.api import Server
 9from acore_server_bootstrap.api import Remoter
10
11bsm = BotoSesManager(profile_name="bmt_app_dev_us_east_1")
12
13server = Server.get(bsm=bsm, server_id="sbx-blue")
14
15remoter = Remoter(ssm_client=bsm.ssm_client, server=server)
16
17# remoter.hello()
18# remoter.bootstrap_as_sudo()
19# remoter.bootstrap()
20# remoter.disable_ubuntu_auto_upgrade()
21# remoter.run_check_server_status_cron_job()
22# remoter.create_database()
23# remoter.create_user()
24# remoter.update_realmlist()
25# remoter.configure_db()
26# remoter.apply_authserver_conf()
27# remoter.apply_worldserver_conf()
28# remoter.apply_mod_lua_engine_conf()
29# remoter.apply_server_config()
30# remoter.run_check_server_status_cron_job()
31# remoter.stop_check_server_status_cron_job()
32# remoter.run_server()
33# remoter.list_session()
34# remoter.stop_server()
35
36# ------------------------------------------------------------------------------
37# Rerun Bootstrap on First Launch EC2
38#
39# Read
40# https://acore-server-bootstrap.readthedocs.io/en/latest/search.html?q=Rerun+Bootstrap+on+First+Launch+EC2&check_keywords=yes&area=default
41# for more details
42# ------------------------------------------------------------------------------
43# remoter.install(
44#     python_version="3.11",
45#     acore_soap_app_version="0.3.6",
46#     acore_db_app_version="0.2.3",
47#     acore_server_bootstrap_version="1.0.1",
48# )
49
50# ------------------------------------------------------------------------------
51# Restart worldserver with Updated Configuration
52#
53# 1. use `deploy_parameter.py <https://github.com/MacHu-GWU/acore_server_config-project/blob/main/config/deploy_parameters.py>`_
54#   to deploy the updated configuration to S3.
55# 2. run the following command in sequence:
56# 3. if you want, you can ``sshec2 ssh`` ssh to EC2, then run
57#   ``/home/ubuntu/git_repos/acore_server_bootstrap-project/.venv/bin/acorebs enter_worldserver``
58#  to verify
59#
60# Read
61# https://acore-server-bootstrap.readthedocs.io/en/latest/search.html?q=Restart+worldserver+with+Updated+Configuration&check_keywords=yes&area=default
62# for more details
63# ------------------------------------------------------------------------------
64# remoter.stop_server()
65# remoter.create_user()
66# remoter.update_realmlist()
67# remoter.apply_server_config()
68# remoter.run_server()
69# remoter.list_session()