add_aaa.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #!/usr/bin/env python3
  2. import argparse
  3. import sys
  4. import re
  5. import subprocess
  6. import os
  7. def main():
  8. parser = argparse.ArgumentParser(
  9. prog=sys.argv[0], description='Add a VLAN to the core')
  10. parser.add_argument('--key', metavar='<TACACS_KEY>',
  11. help='Clear text TACACS+ key', required=True)
  12. parser.add_argument('--username', '-u', metavar='<USERNAME>',
  13. help='Username to use to connect to the N9Ks', required=True)
  14. parser.add_argument('--site', '-s', metavar='<SITE NAME>',
  15. help='Name of site to which to add N9Ks (default: all sites)')
  16. args = parser.parse_args()
  17. os.environ['ANSIBLE_FORCE_COLOR'] = 'True'
  18. os.environ['ANSIBLE_HOST_KEY_CHECKING'] = 'False'
  19. os.environ['ANSIBLE_PERSISTENT_COMMAND_TIMEOUT'] = '300'
  20. command = ['ansible-playbook', '-i', 'inventory/hosts',
  21. '-u', args.username, '-k', '-e',
  22. 'tacacs_key={}'.format(args.key), '-e', 'ansible_python_interpreter={}'.format(sys.executable),
  23. 'add-aaa-playbook.yml']
  24. if args.site:
  25. command += ['--limit', args.site]
  26. p = subprocess.Popen(command, stdout=subprocess.PIPE,
  27. stderr=subprocess.STDOUT)
  28. for c in iter(lambda: p.stdout.read(1), b''):
  29. sys.stdout.write(c.decode('utf-8'))
  30. sys.stdout.flush()
  31. if __name__ == '__main__':
  32. main()