packerSsmUpdate
packerSsmUpdate.py
Description: Update SSM Params after a packer AMI build Owner: CloudOps Version: 1.0
1#!/usr/bin/env python3 2""" 3packerSsmUpdate.py 4 5Description: Update SSM Params after a packer AMI build 6Owner: CloudOps 7Version: 1.0 8 9""" 10 11import argparse 12import os 13import sys 14from utils import aws, slack 15 16REGION = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1') 17 18if __name__ == "__main__": 19 print("packerSsmUpdate.__main__(): BEGIN") 20 21 # 22 # ArgParse 23 # 24 parser = argparse.ArgumentParser(description='Update SSM Params after a successful Packer AMI build.') 25 parser.add_argument( 26 '-s', 27 '--ssmpullpath', 28 action='store', 29 type=str, 30 required=False, 31 default=os.environ.get('SSM_PULL_PATH', ''), 32 help='SSM path to pull AMI info from. defaults to env var SSM_PULL_PATH if exists') 33 34 parser.add_argument( 35 '-S', 36 '--ssmpushpath', 37 action='store', 38 type=str, 39 required=False, 40 default=os.environ.get('SSM_PUSH_PATH', None), 41 help='SSM path to push AMI info to. defaults to env var SSM_PUSH_PATH if exists, or pull path if unset.') 42 43 args = parser.parse_args() 44 45 _SSM_PULL_PATH = args.ssmpullpath 46 _SSM_PUSH_PATH = _SSM_PULL_PATH if args.ssmpushpath is None else args.ssmpushpath 47 48 print("packerSsmUpdate.__main__(): Getting SSM Param from build account.") 49 _AMI_INFO_FROM = aws.ssm_get_parameter_from_build(name=_SSM_PULL_PATH, region=REGION) 50 print(_AMI_INFO_FROM) 51 52 print("packeerSsmUpdate.__main__(): Getting SSM Param from environment aws env.") 53 _AMI_INFO_TO = aws.ssm_get_parameter(name=_SSM_PUSH_PATH, region=REGION) 54 print(_AMI_INFO_TO) 55 56 if _AMI_INFO_FROM != _AMI_INFO_TO: 57 print("packeerSsmUpdate.__main__(): AMIs are different. Syncing.") 58 aws.ssm_put_parameter(name=_SSM_PUSH_PATH, value=_AMI_INFO_FROM, region=REGION) 59 else: 60 print("packeerSsmUpdate.__main__(): AMIs are the same. Skipping sync.") 61 62 _GO_ENVIRONMENT_NAME = os.environ.get("GO_ENVIRONMENT_NAME", "unknown_env") 63 if not slack.send(message=f"Updated SSM Value for ${_SSM_PUSH_PATH} in ${_GO_ENVIRONMENT_NAME} to ${_AMI_INFO_FROM}."): 64 sys.exit(1) 65 66 sys.exit(0)