mirror of
https://github.com/dragonlock2/matthewtran.com.git
synced 2026-06-28 01:58:34 +00:00
migrate to coreos
This commit is contained in:
Executable
+100
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import json
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
SOURCE_DIR = "/var/source"
|
||||
|
||||
IMAGES = {
|
||||
"web": [
|
||||
"website",
|
||||
"gitea",
|
||||
],
|
||||
"monero": [
|
||||
"monerod",
|
||||
"p2pool",
|
||||
],
|
||||
"game": [
|
||||
"minecraft",
|
||||
"minecraft_bedrock",
|
||||
"terraria",
|
||||
],
|
||||
"nas": [
|
||||
"nas",
|
||||
],
|
||||
}
|
||||
|
||||
def generate(cfg):
|
||||
# website
|
||||
with open("website/sendgrid.key", "w") as f:
|
||||
f.write(cfg["website"]["sendgrid_key"])
|
||||
|
||||
# minecraft
|
||||
shutil.copy("minecraft/server.default", "minecraft/server.properties")
|
||||
with open("minecraft/server.properties", "a") as f:
|
||||
f.write(f"level-name=/data/{cfg["minecraft"]["world"]}\n")
|
||||
|
||||
# minecraft_bedrock
|
||||
shutil.copy("minecraft_bedrock/server.default", "minecraft_bedrock/server.properties")
|
||||
with open("minecraft_bedrock/server.properties", "a") as f:
|
||||
f.write(f"level-name={cfg["minecraft_bedrock"]["world"]}\n")
|
||||
|
||||
# terraria
|
||||
shutil.copy("terraria/config.default", "terraria/config.txt")
|
||||
with open("terraria/config.txt", "a") as f:
|
||||
f.write(f"world=/data/worlds/{cfg["terraria"]["world"]}.wld\n")
|
||||
f.write(f"autocreate={cfg["terraria"]["autogen"]["size"]}\n") # 1=small, 2=medium, 3=large
|
||||
f.write(f"difficulty={cfg["terraria"]["autogen"]["difficulty"]}\n") # 0=normal, 1=expert, 2=master, 3=journey
|
||||
with open("terraria/password.txt", "w") as f:
|
||||
f.write(cfg["terraria"]["password"])
|
||||
|
||||
# nas
|
||||
shutil.copy("nas/Dockerfile.template", "nas/Dockerfile")
|
||||
shutil.copy("nas/smb.conf.template", "nas/smb.conf")
|
||||
with open("nas/Dockerfile", "a") as f:
|
||||
for user in cfg["nas"]["users"]:
|
||||
p = cfg["nas"]["users"][user]
|
||||
f.write(f"RUN useradd -M -s /bin/false {user}\n")
|
||||
f.write(f"RUN echo \"{p}\\n{p}\\n\" | pdbedit -s smb.conf -a {user}\n")
|
||||
with open("nas/smb.conf", "a") as f:
|
||||
for mnt in cfg["nas"]["mounts"]:
|
||||
f.write(f"[{mnt}]\n")
|
||||
f.write(f"path = /mnt/{mnt}\n\n")
|
||||
|
||||
def run(cmds, user="core"):
|
||||
try:
|
||||
subprocess.check_output(["ssh", f"{user}@{cfg["core"]["hostname"]}.local", ";".join(cmds)], stderr=subprocess.STDOUT)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print("\033[31m", end="")
|
||||
print(e.output.decode())
|
||||
print("\033[0m", end="")
|
||||
exit(1)
|
||||
|
||||
if __name__ == "__main__":
|
||||
cfg = json.load(open("config/server.json"))
|
||||
|
||||
# generate helper files
|
||||
generate(cfg)
|
||||
|
||||
# copy files
|
||||
for user in IMAGES:
|
||||
for img in IMAGES[user]:
|
||||
subprocess.run(["scp", "-r", img, f"{user}@{cfg["core"]["hostname"]}.local:{SOURCE_DIR}"], check=True)
|
||||
run([f"chmod 770 {SOURCE_DIR}/{img}"], user=user)
|
||||
|
||||
# run builds
|
||||
for user in IMAGES:
|
||||
print(f"building images for {user}...")
|
||||
run([f"cd {SOURCE_DIR}"] + [
|
||||
f"sudo -u {user} podman build --tag {i} {SOURCE_DIR}/{i}"
|
||||
for i in IMAGES[user]
|
||||
])
|
||||
|
||||
# restart pods
|
||||
for user in IMAGES:
|
||||
print(f"restarting pod for {user}...")
|
||||
run([
|
||||
f"cd {SOURCE_DIR}",
|
||||
f"sudo systemctl --machine={user}@.host --user restart {user}-pod " + " ".join(IMAGES[user]),
|
||||
])
|
||||
Reference in New Issue
Block a user