#!/usr/bin/env python3 import argparse import sys import re import subprocess import os def main(): parser = argparse.ArgumentParser( prog=sys.argv[0], description="Add a VLAN to the core" ) parser.add_argument( "--key", metavar="", help="Clear text TACACS+ key", required=True ) parser.add_argument( "--username", "-u", metavar="", help="Username to use to connect to the N9Ks", required=True, ) parser.add_argument( "--site", "-s", metavar="", help="Name of site to which to add N9Ks (default: all sites)", ) args = parser.parse_args() os.environ["ANSIBLE_FORCE_COLOR"] = "True" os.environ["ANSIBLE_HOST_KEY_CHECKING"] = "False" os.environ["ANSIBLE_PERSISTENT_COMMAND_TIMEOUT"] = "300" command = [ "ansible-playbook", "-i", "inventory/hosts", "-u", args.username, "-k", "-e", "tacacs_key={}".format(args.key), "-e", "ansible_python_interpreter={}".format(sys.executable), "add-aaa-playbook.yml", ] if args.site: command += ["--limit", args.site] p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for c in iter(lambda: p.stdout.read(1), b""): sys.stdout.write(c.decode("utf-8")) sys.stdout.flush() if __name__ == "__main__": main()