diff --git a/cstatsd/bootstrap b/cstatsd/bootstrap new file mode 100755 index 0000000..fca8bf7 --- /dev/null +++ b/cstatsd/bootstrap @@ -0,0 +1,6 @@ +#!/bin/bash +echo "Generating keypair..." +./genkey 2>/dev/null +./bootstrap-config +echo "Your public key: `cat pubkey.dat`" +echo "Server IP: `curl -s http://wtfismyip.com/text`" 2>/dev/null diff --git a/cstatsd/bootstrap-config b/cstatsd/bootstrap-config new file mode 100755 index 0000000..9e1df23 --- /dev/null +++ b/cstatsd/bootstrap-config @@ -0,0 +1,86 @@ +#!/usr/bin/env python2 + +import yaml, sys + +master_pubkey = raw_input("Public key of the master server: ") + +print "You'll now be asked to configure ports to check. If you don't want to configure any ports, just hit enter without entering any information." + +ports = {} + +while True: + port = raw_input("Port number: ") + if port.strip() == "": + break + service_name = raw_input("Service name for port %s: " % port) + ports[port] = service_name + +print "The same thing, except now for processes to check. Just hit enter without entering any information when you're done; the same goes for the argument list. As a wildcard, you can use *" + +services = {} + +while True: + service_name = raw_input("Service name: ") + + if service_name.strip() == "": + break + + process_name = raw_input("Process name: ") + + args = {} + argnum = 1 + while True: + arg = raw_input("Argument %d: " % argnum) + if arg.strip() == "": + break + args[argnum] = arg + argnum += 1 + + services[service_name] = { + "name": process_name, + "args": args + } + +print "Now enter any disk devices you wish to monitor. Leave empty and hit enter when done." + +disks = [] + +while True: + device_name = raw_input("Device name: ") + if device_name.strip() == "": + break + disks.append(device_name) + +# Write config files... + +modules = [] + +modules.append("stats-machine") +with open("config/machine.yaml.example", "r") as ef: + with open("config/machine.yaml", "w") as ff: + data = yaml.safe_load(ef.read()) + data["drives"] = disks + ff.write(yaml.dump(data)) + +if len(ports) > 0: + modules.append("stats-ports") + with open("config/ports.yaml.example", "r") as ef: + with open("config/ports.yaml", "w") as ff: + data = yaml.safe_load(ef.read()) + data["ports"] = ports + ff.write(yaml.dump(data)) + +if len(services) > 0: + modules.append("stats-processes") + with open("config/processes.yaml.example", "r") as ef: + with open("config/processes.yaml", "w") as ff: + data = yaml.safe_load(ef.read()) + data["processes"] = services + ff.write(yaml.dump(data)) + +with open("config/cstatsd.yaml.example", "r") as ef: + with open("config/cstatsd.yaml", "w") as ff: + data = yaml.safe_load(ef.read()) + data["pubkey"] = master_pubkey + data["autostart"] = modules + ff.write(yaml.dump(data))