def generate_script(self, data: Data) -> str: """transforms a Data into a shell script segment""" interfaces = util.render_template(__file__, "routed_separate_ips", data) heredoc = util.wrap_as_heredoc(interfaces, "/etc/network/interfaces") return util.render_template(__file__, "routed_wrapper", {"heredoc": heredoc})
def generate_script(self, data: Data) -> str: """transforms a Data into a shell script segment""" fstab_line = f"//{data.server}/backup /mnt/storage cifs _netdev,username={data.username},password=$STORAGE_BOX_PASSWORD,uid=101001,gid=101001 0 0" # pylint: disable=line-too-long return util.render_template(__file__, "template", { "fstab_line": fstab_line, "password": data.password })
def generate_script(self, data: Data) -> str: """transforms a Data into a shell script segment""" return util.render_template( __file__, "template", { "destination": data.destination, "schedule_backups": data.schedule_backups, }, )
def generate_script(self, data: Data) -> str: """transforms a Data into a shell script segment""" def render_snippet(snippet): snippet["content"] = util.render_template( __file__, snippet["filename"], {"shared_globals": util.shared_globals}) return snippet return util.render_template( __file__, "template", Data(snippets=[render_snippet(s) for s in data.snippets]))
def run(): """Main entrypoint""" configurators = [network, tls, storage_box, snippets, wireguard, backup] if not os.environ.get("LC_ALL"): os.environ["LC_ALL"] = "C" locale.setlocale(locale.LC_ALL, "") util.dialog.msgbox( "This script will help configure your Network, Wireguard VPN, Security, " "TLS keys, DNS and Storage on your Hetzner based Proxmox Host Node.\n\n" "It will not make any changes to your system.\n\n" "It outputs a single script file with no dependencies you can " "inspect and then run manually. " "You can then add this script file to source control.", title="Welcome!", colors=True, ) code, chosen = util.dialog.checklist( "Please choose which components you would like to configure.", choices=map(lambda x: [x.Config().description, "", 1], configurators), ) if code != "ok": return None chosen_configurators = filter(lambda x: x.Config().description in chosen, configurators) script = util.build_script(chosen_configurators) if "pytest" not in sys.modules: bootstrap_file = "bootstrap.sh" text_file = open(bootstrap_file, "w") text_file.write(script) text_file.close() os.chmod(bootstrap_file, 0o744) os.system("clear") next_steps = util.render_template( __file__, "next-steps", { "bootstrap_file": bootstrap_file, "hetzner_ip": util.shared_globals.get("hetzner_ip") }, ) print(next_steps)
def generate_script(self, data: Data) -> str: """transforms a Data into a shell script segment""" return util.render_template(__file__, "template", data)
def render_snippet(snippet): snippet["content"] = util.render_template( __file__, snippet["filename"], {"shared_globals": util.shared_globals}) return snippet