solution/automation/account-factory/extension/kms_secret.py (38 lines of code) (raw):

import sys import json import logging import warnings from alibaba_cloud_secretsmanager_client.secret_manager_cache_client_builder import SecretManagerCacheClientBuilder warnings.filterwarnings("ignore") def get_secret(secret_name): secret_manager_client_builder = SecretManagerCacheClientBuilder() client_logger = logging.Logger("secret_manager_client", level="ERROR") secret_cache_client = secret_manager_client_builder.with_logger(logger=client_logger).new_client() secret_info_resp = secret_cache_client.get_secret_info(secret_name) return json.loads(secret_info_resp.__dict__['secret_value']) def get_all_secret(ali_secret_name, az_secret_name): alicloud_secret = get_secret(ali_secret_name) alicloud_secret['access_key'] = alicloud_secret['AccessKeyId'] alicloud_secret['secret_key'] = alicloud_secret['AccessKeySecret'] del alicloud_secret['AccessKeyId'] del alicloud_secret['AccessKeySecret'] azure_secret = get_secret(az_secret_name) all_secret = dict(alicloud_secret, **azure_secret) return all_secret def write_secret_env_2_file(secret, path): export_str = '\nexport ALICLOUD_ACCESS_KEY=' + secret['access_key'] + \ '\nexport ALICLOUD_SECRET_KEY=' + secret['secret_key'] + \ '\nexport ARM_SUBSCRIPTION_ID=' + secret['arm_subscription_id'] + \ '\nexport ARM_TENANT_ID=' + secret['arm_tenant_id'] + \ '\nexport ARM_CLIENT_ID=' + secret['arm_client_id'] + \ '\nexport ARM_CLIENT_SECRET=' + secret['arm_client_secret'] with open(path, 'a+') as f: f.write(export_str) # python kms_secret.py acs/ram/user/admin_poc terraform-ak-azure if __name__ == '__main__': alicloud_secret_name = sys.argv[1] azure_secret_name = sys.argv[2] env_file_path = '.bashrc' if len(sys.argv) >= 4: env_file_path = sys.argv[3] secret_dict = get_all_secret(alicloud_secret_name, azure_secret_name) write_secret_env_2_file(secret_dict, env_file_path)