Separated functions of the Python script.
This commit is contained in:
1 parent
db8a3aac8a
commit
c466188c00
6 files changed
+201
-140
No files matched your search
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/python3
|
||||
import argparse
|
||||
import json
|
||||
import ssl
|
||||
import sys
|
||||
import urllib.error
|
||||
import urllib.request
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Log in to Vault with AppRole using a JSON configuration file and print the token properties.",
|
||||
)
|
||||
parser.add_argument("config", help="path to the JSON configuration file of the instance")
|
||||
args = parser.parse_args()
|
||||
|
||||
with open(args.config) as file:
|
||||
config = json.load(file)
|
||||
|
||||
for name in ("vault_addr", "role_id", "secret_id"):
|
||||
if name not in config:
|
||||
sys.exit(f"{name} is not set in {args.config}")
|
||||
|
||||
context = ssl.create_default_context(cafile=config.get("vault_cacert") or None)
|
||||
request = urllib.request.Request(
|
||||
f"{config['vault_addr'].rstrip('/')}/v1/auth/approle/login",
|
||||
data=json.dumps({"role_id": config["role_id"], "secret_id": config["secret_id"]}).encode(),
|
||||
headers={"Content-Type": "application/json"},
|
||||
method="POST",
|
||||
)
|
||||
try:
|
||||
with urllib.request.urlopen(request, context=context) as response:
|
||||
auth = json.load(response)["auth"]
|
||||
except urllib.error.HTTPError as error:
|
||||
sys.exit(f"Vault returned {error.code} for auth/approle/login: {error.read().decode()}")
|
||||
|
||||
print(f"Login succeeded: token type {auth['token_type']}, policies {auth['token_policies']}, valid for {auth['lease_duration']} seconds")
|
||||
Reference in new issue
Block a user