jcloud/backbone/setup.py
2025-04-12 17:39:38 +08:00

58 lines
1.4 KiB
Python

import sys
from backbone.hypervisor import Shell
shell = Shell()
def apt_install(packages):
shell.execute(
f"sudo apt install --yes --no-install-suggests --no-install-recommends {packages}"
)
def main(args):
prepare()
setup_vagrant()
setup_kvm()
setup_libvirt()
setup_packer()
def prepare():
shell.execute("sudo apt update")
apt_install("build-essential")
def setup_vagrant():
VAGRANT_SERVER = "https://releases.hashicorp.com/vagrant/2.2.10"
VAGRANT_PACKAGE = "vagrant_2.2.10_x86_64.deb"
shell.execute(f"wget {VAGRANT_SERVER}/{VAGRANT_PACKAGE} -O {VAGRANT_PACKAGE}")
shell.execute(f"sudo dpkg -i {VAGRANT_PACKAGE}")
def setup_packer():
PACKER_KEY = "https://apt.releases.hashicorp.com/gpg"
PACKER_REPO = (
'"deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"'
)
shell.execute(f"curl -fsSL {PACKER_KEY} | sudo apt-key add -")
shell.execute(f"sudo apt-add-repository {PACKER_REPO}")
apt_install("packer cloud-utils")
def setup_kvm():
apt_install("qemu-kvm")
shell.execute("sudo usermod -aG kvm $USER")
def setup_libvirt():
apt_install("libvirt-dev libvirt-daemon-system qemu-utils dnsmasq-base")
shell.execute("sudo usermod -aG libvirt $USER")
shell.execute("vagrant plugin install vagrant-libvirt")
shell.execute("vagrant plugin install vagrant-hostmanager")
if __name__ == "__main__":
sys.exit(main(sys.argv))