add_to_librenms.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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(prog=sys.argv[0], description="Add our hosts to LibreNMS")
  9. parser.add_argument(
  10. "--cred-file", "-c", metavar="<CREDENTIAL_FILE_PATH>", help="Path to the credential file that has vault passwords", required=True
  11. )
  12. parser.add_argument("--limit", metavar="<LIMIT_STRING>", help="Comma-separated list of devices or groups to add")
  13. args = parser.parse_args()
  14. os.environ["ANSIBLE_FORCE_COLOR"] = "True"
  15. os.environ["ANSIBLE_HOST_KEY_CHECKING"] = "False"
  16. os.environ["ANSIBLE_PERSISTENT_COMMAND_TIMEOUT"] = "300"
  17. command = [
  18. "ansible-playbook",
  19. "-i",
  20. "inventory/hosts",
  21. "--ask-vault-pass",
  22. "-e",
  23. "@{}".format(args.cred_file),
  24. "-e",
  25. "ansible_python_interpreter={}".format(sys.executable),
  26. "add-to-librenms-playbook.yml",
  27. ]
  28. if args.limit:
  29. command += ["--limit", "{}".format(args.limit)]
  30. p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  31. for c in iter(lambda: p.stdout.read(1), b""):
  32. sys.stdout.write(c.decode("utf-8"))
  33. sys.stdout.flush()
  34. p.poll()
  35. if __name__ == "__main__":
  36. main()