Skip to content

Commit 4d698ae

Browse files
authored
Merge pull request #123 from shaneknapp/fixing-aws-deploy
fixing up auth section for aws
2 parents 8b2f81b + 91bc71c commit 4d698ae

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

hubploy/auth.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,21 +136,31 @@ def _auth_aws(deployment, service_key=None, role_arn=None, role_session_name=Non
136136
assert role_session_name, "always pass role_session_name along with role_arn"
137137

138138
try:
139+
original_access_key_id = os.environ.get("AWS_ACCESS_KEY_ID", None)
140+
original_secret_access_key = os.environ.get("AWS_SECRET_ACCESS_KEY", None)
141+
original_session_token = os.environ.get("AWS_SESSION_TOKEN", None)
139142
if service_key:
140143
original_credential_file_loc = os.environ.get(
141144
"AWS_SHARED_CREDENTIALS_FILE", None
142145
)
143146

144147
# Get path to service_key and validate its around
145-
service_key_path = os.path.join(
148+
encrypted_service_key_path = os.path.join(
146149
"deployments", deployment, "secrets", service_key
147150
)
148-
if not os.path.isfile(service_key_path):
151+
if not os.path.isfile(encrypted_service_key_path):
149152
raise FileNotFoundError(
150-
f"The service_key file {service_key_path} does not exist"
153+
f"The service_key file {encrypted_service_key_path} does not exist"
151154
)
152155

153-
os.environ["AWS_SHARED_CREDENTIALS_FILE"] = service_key_path
156+
logger.info(f"Decrypting service key {encrypted_service_key_path}")
157+
with decrypt_file(encrypted_service_key_path) as decrypted_service_key_path:
158+
auth = yaml.load(open(decrypted_service_key_path))
159+
os.environ["AWS_ACCESS_KEY_ID"] = auth["creds"]["aws_access_key_id"]
160+
os.environ["AWS_SECRET_ACCESS_KEY"] = auth["creds"][
161+
"aws_secret_access_key"
162+
]
163+
logger.info("Set AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY")
154164

155165
elif role_arn:
156166
original_access_key_id = os.environ.get("AWS_ACCESS_KEY_ID", None)
@@ -173,15 +183,16 @@ def _auth_aws(deployment, service_key=None, role_arn=None, role_session_name=Non
173183
finally:
174184
if service_key:
175185
unset_env_var("AWS_SHARED_CREDENTIALS_FILE", original_credential_file_loc)
186+
unset_env_var("AWS_ACCESS_KEY_ID", original_access_key_id)
187+
unset_env_var("AWS_SECRET_ACCESS_KEY", original_secret_access_key)
188+
unset_env_var("AWS_SESSION_TOKEN", original_session_token)
176189
elif role_arn:
177190
unset_env_var("AWS_ACCESS_KEY_ID", original_access_key_id)
178191
unset_env_var("AWS_SECRET_ACCESS_KEY", original_secret_access_key)
179192
unset_env_var("AWS_SESSION_TOKEN", original_session_token)
180193

181194

182-
def cluster_auth_aws(
183-
deployment, account_id, cluster, region, service_key=None, role_arn=None
184-
):
195+
def cluster_auth_aws(deployment, cluster, region, service_key=None, role_arn=None):
185196
"""
186197
Setup AWS authentication with service_key or with a role
187198
@@ -298,6 +309,13 @@ def decrypt_file(encrypted_path):
298309
except json.JSONDecodeError:
299310
yield encrypted_path
300311
return
312+
elif ext == ".cfg":
313+
try:
314+
with open(encrypted_path) as f:
315+
encrypted_data = f.read()
316+
except Exception:
317+
yield encrypted_path
318+
return
301319

302320
if "sops" not in encrypted_data:
303321
logger.info("File is not sops encrypted, returning path")

hubploy/config.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -107,20 +107,5 @@ def get_config(deployment, debug=False, verbose=False):
107107

108108
config["images"]["images"] = [RemoteImage(**i) for i in images]
109109

110-
# Backwards compatibility checker for cluster block
111-
if (
112-
config["cluster"]["provider"] == "aws"
113-
and "project" in config["cluster"]["aws"]
114-
):
115-
config["cluster"]["aws"]["account_id"] = config["cluster"]["aws"]["project"]
116-
del config["cluster"]["aws"]["project"]
117-
118-
if (
119-
config["cluster"]["provider"] == "aws"
120-
and "zone" in config["cluster"]["aws"]
121-
):
122-
config["cluster"]["aws"]["region"] = config["cluster"]["aws"]["zone"]
123-
del config["cluster"]["aws"]["zone"]
124-
125110
logger.debug(f"Config loaded and parsed: {config}")
126111
return config

0 commit comments

Comments
 (0)