summaryrefslogtreecommitdiff
path: root/contractor
diff options
context:
space:
mode:
Diffstat (limited to 'contractor')
-rwxr-xr-xcontractor26
1 files changed, 25 insertions, 1 deletions
diff --git a/contractor b/contractor
index 5847485..e45bfb7 100755
--- a/contractor
+++ b/contractor
@@ -10,7 +10,6 @@ import sys
import time
import subprocess
from subprocess import PIPE, STDOUT
-
import yaml
@@ -549,6 +548,28 @@ def cmd_dump(args):
sys.stdout.write("{}\n".format(json.dumps(bs.as_dict(), indent=4)))
+def cmd_provision(args):
+ ssh_opts = [
+ "ControlMaster=auto",
+ "ControlPersist=60s",
+ "StrictHostKeyChecking=accept-new",
+ "UserKnownHostsFile=/dev/null",
+ ]
+
+ env = dict(os.environ)
+ env["ANSIBLE_SSH_ARGS"] = " ".join(f"-o{opt}" for opt in ssh_opts)
+
+ argv = [
+ "ansible-playbook",
+ "-i",
+ "hosts",
+ "manager.yml",
+ f"-eansible_ssh_host={args.manager_address}",
+ f"-eansible_ssh_port={args.manager_port}",
+ ]
+ subprocess.check_call(argv, env=env)
+
+
def cmd_status(args):
dest, port = manager_destination(args)
verbose(args, "manager VM is {}:{}".format(dest, port))
@@ -701,6 +722,9 @@ def main():
dump.add_argument("spec")
dump.set_defaults(func=cmd_dump)
+ provision = sub.add_parser("provision", help="provision manager VM")
+ provision.set_defaults(func=cmd_provision, **manager_defaults)
+
status = sub.add_parser("status", help="check status of manager VM")
status.add_argument("-m", "--manager-address", help="address of manager VM")
status.add_argument("-p", "--manager-port", help="SSH port of manager VM")