Commit 297d99f8 by Feanil Patel

Use blessed AMIs if they're available.

parent 104531c4
...@@ -46,6 +46,11 @@ ...@@ -46,6 +46,11 @@
<description></description> <description></description>
<defaultValue></defaultValue> <defaultValue></defaultValue>
</hudson.model.StringParameterDefinition> </hudson.model.StringParameterDefinition>
<hudson.model.BooleanParameterDefinition>
<name>use_blessed</name>
<description></description>
<defaultValue>true</defaultValue>
</hudson.model.BooleanParameterDefinition>
</parameterDefinitions> </parameterDefinitions>
</hudson.model.ParametersDefinitionProperty> </hudson.model.ParametersDefinitionProperty>
<com.sonyericsson.rebuild.RebuildSettings plugin="rebuild@1.20"> <com.sonyericsson.rebuild.RebuildSettings plugin="rebuild@1.20">
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
# - configuration_secure - the version of the secure repo to use # - configuration_secure - the version of the secure repo to use
# - jenkins_admin_ec2_key - location of the ec2 key to pass to abbey # - jenkins_admin_ec2_key - location of the ec2 key to pass to abbey
# - jenkins_admin_configuration_secure_repo - the git repo to use for secure vars # - jenkins_admin_configuration_secure_repo - the git repo to use for secure vars
# - use_blessed - whether or not to use blessed AMIs
if [[ "$play" == "" ]]; then if [[ "$play" == "" ]]; then
echo "No Play Specified. Nothing to Do." echo "No Play Specified. Nothing to Do."
...@@ -32,6 +33,16 @@ if [[ -z $configuration_secure ]]; then ...@@ -32,6 +33,16 @@ if [[ -z $configuration_secure ]]; then
cd .. cd ..
fi fi
base_params=""
if [[ -n "$base_ami" ]]; then
base_params="-b $base_ami"
fi
blessed_params=""
if [[ "$use_blessed" == "true" ]]; then
blessed_params="--blessed"
fi
cd configuration cd configuration
pip install -r requirements.txt pip install -r requirements.txt
...@@ -43,4 +54,4 @@ cat /var/tmp/$BUILD_ID-refs.yml ...@@ -43,4 +54,4 @@ cat /var/tmp/$BUILD_ID-refs.yml
echo "$vars" > /var/tmp/$BUILD_ID-extra-vars.yml echo "$vars" > /var/tmp/$BUILD_ID-extra-vars.yml
cat /var/tmp/$BUILD_ID-extra-vars.yml cat /var/tmp/$BUILD_ID-extra-vars.yml
python -u abbey.py -p $play -t c1.medium -d $deployment -e $environment -i /edx/var/jenkins/.ssh/id_rsa -b $base_ami --vars /var/tmp/$BUILD_ID-extra-vars.yml --refs /var/tmp/$BUILD_ID-refs.yml -c $BUILD_NUMBER --configuration-version $configuration --configuration-secure-version $configuration_secure -k $jenkins_admin_ec2_key --configuration-secure-repo $jenkins_admin_configuration_secure_repo python -u abbey.py -p $play -t c1.medium -d $deployment -e $environment -i /edx/var/jenkins/.ssh/id_rsa $base_params $blessed_params --vars /var/tmp/$BUILD_ID-extra-vars.yml --refs /var/tmp/$BUILD_ID-refs.yml -c $BUILD_NUMBER --configuration-version $configuration --configuration-secure-version $configuration_secure -k $jenkins_admin_ec2_key --configuration-secure-repo $jenkins_admin_configuration_secure_repo
...@@ -71,9 +71,6 @@ def parse_args(): ...@@ -71,9 +71,6 @@ def parse_args():
help="path to extra var file", required=False) help="path to extra var file", required=False)
parser.add_argument('--refs', metavar="GIT_REFS_FILE", parser.add_argument('--refs', metavar="GIT_REFS_FILE",
help="path to a var file with app git refs", required=False) help="path to a var file with app git refs", required=False)
parser.add_argument('-a', '--application', required=False,
help="Application for subnet, defaults to admin",
default="admin")
parser.add_argument('--configuration-version', required=False, parser.add_argument('--configuration-version', required=False,
help="configuration repo branch(no hashes)", help="configuration repo branch(no hashes)",
default="master") default="master")
...@@ -85,9 +82,6 @@ def parse_args(): ...@@ -85,9 +82,6 @@ def parse_args():
help="repo to use for the secure files") help="repo to use for the secure files")
parser.add_argument('-c', '--cache-id', required=True, parser.add_argument('-c', '--cache-id', required=True,
help="unique id to use as part of cache prefix") help="unique id to use as part of cache prefix")
parser.add_argument('-b', '--base-ami', required=False,
help="ami to use as a base ami",
default="ami-0568456c")
parser.add_argument('-i', '--identity', required=False, parser.add_argument('-i', '--identity', required=False,
help="path to identity file for pulling " help="path to identity file for pulling "
"down configuration-secure", "down configuration-secure",
...@@ -108,6 +102,15 @@ def parse_args(): ...@@ -108,6 +102,15 @@ def parse_args():
default=5, default=5,
help="How long to delay message display from sqs " help="How long to delay message display from sqs "
"to ensure ordering") "to ensure ordering")
group = parser.add_mutually_exclusive_group()
group.add_argument('-b', '--base-ami', required=False,
help="ami to use as a base ami",
default="ami-0568456c")
group.add_argument('--blessed', action='store_true',
help="Look up blessed ami for env-dep-play.",
default=False)
return parser.parse_args() return parser.parse_args()
...@@ -126,6 +129,21 @@ def get_instance_sec_group(vpc_id): ...@@ -126,6 +129,21 @@ def get_instance_sec_group(vpc_id):
return grp_details[0].id return grp_details[0].id
def get_blessed_ami():
images = ec2.get_all_images(
filters={
'tag:environment': args.environment,
'tag:deployment': args.deployment,
'tag:play': args.play,
'tag:blessed': True
}
)
if len(images) != 1:
raise Exception("ERROR: Expected only one blessed ami, got {}\n".format(
len(images)))
return images[0].id
def create_instance_args(): def create_instance_args():
""" """
...@@ -292,7 +310,7 @@ rm -rf $base_dir ...@@ -292,7 +310,7 @@ rm -rf $base_dir
'security_group_ids': [security_group_id], 'security_group_ids': [security_group_id],
'subnet_id': subnet_id, 'subnet_id': subnet_id,
'key_name': args.keypair, 'key_name': args.keypair,
'image_id': args.base_ami, 'image_id': base_ami,
'instance_type': args.instance_type, 'instance_type': args.instance_type,
'instance_profile_name': args.role_name, 'instance_profile_name': args.role_name,
'user_data': user_data, 'user_data': user_data,
...@@ -597,6 +615,11 @@ if __name__ == '__main__': ...@@ -597,6 +615,11 @@ if __name__ == '__main__':
print 'You must be able to connect to sqs and ec2 to use this script' print 'You must be able to connect to sqs and ec2 to use this script'
sys.exit(1) sys.exit(1)
if args.blessed:
base_ami = get_blessed_ami()
else:
base_ami = args.base_ami
try: try:
sqs_queue = None sqs_queue = None
instance_id = None instance_id = None
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment