Skip to content

burningmantech/ranger-deploy

Repository files navigation

ranger-deploy

Build Status

Code Coverage

Deployment tools for Ranger services.

Deploying to Amazon Web Services Elastic Container Registry

Images may be deployed to AWS ECR via the deploy_aws_ecr command.

deploy_aws_ecr has the following subcommands:

push

Updates the staging environment to use a new Docker image.

For usage information, run:

deploy_aws_ecs <subcommand> --help

deploy_aws_ecr can alternatively be invoked as python -m deploy.aws.ecr.

Deploying to Amazon Web Services Elastic Container Service

Services may be deployed to AWS ECS via the deploy_aws_ecs command. deploy_aws_ecs has only been tested with services using Fargate.

deploy_aws_ecs has the following subcommands:

staging

Updates the staging environment to use a new Docker image.

rollback

Updates the staging environment to use the prior Docker image by updating the service to use task definition used prior to the current one. Running this twice will not continue to roll back; it will switch between two definitions.

compare

Compares the staging environment with the production environment.

production

Updates the production environment to use the same Docker images as currently used in the staging environment. This does not modify other attributes, including environment variables.

environment

Views or updates the environment variables in the specified cluster and service.

For usage information, run:

deploy_aws_ecs <subcommand> --help

The following environment variables are used if the corresponding command line options are omitted:

AWS_ECS_CLUSTER_STAGING

--staging-cluster or --cluster

AWS_ECS_SERVICE_STAGING

--staging-service or --service

AWS_ECS_CLUSTER_PRODUCTION

--production-cluster

AWS_ECS_SERVICE_PRODUCTION

--production-service

deploy_aws_ecs can alternatively be invoked as python -m deploy.aws.ecs.

Sending Email Notifications

An email notification can be sent after a deployment by running deploy_notify_smtp.

deploy_notify_smtp has the following subcommands:

staging

Sends a notification for a deployment to the staging environment.

For usage information, run:

deploy_notify_smtp <subcommand> --help

The following environment variables are used if the corresponding command line options are omitted:

PROJECT_NAME

--project-name

REPOSITORY_ID

--repository-id

BUILD_NUMBER

--build-number

BUILD_URL

--build-url

COMMIT_ID

--commit-id

COMMIT_MESSAGE

--commit-message

NOTIFY_SMTP_HOST

--smtp-host

NOTIFY_SMTP_PORT

--smtp-port

NOTIFY_SMTP_USER

--smtp-user

NOTIFY_SMTP_PASSWORD

--smtp-password

NOTIFY_EMAIL_SENDER

--sender

NOTIFY_EMAIL_RECIPIENT

--recipient

deploy_notify_smtp can alternatively be invoked as python -m deploy.notify.smtp.

Configuration

A configuration file ~/.ranger-deploy.ini may be used to specify defaults for any of the above arguments. This file uses a simple INI format in which configuration keys correspond to command line options, with each sections named after a configuration profile. For configuration keys, remove leading hyphens and replace hyphens with underbars. For example:

[rangers]

github_org = burningmantech

staging_cluster    = rangers
production_cluster = rangers

smtp_host     = smtp.example.com
smtp_port     = 465
smtp_user     = some_user
smtp_password = C70D9FB9-53BC-489A-A08D-567D281583D9
sender        = sender@example.com
recipient     = recipient@example.com


[clubhouse-api]

repository_id = ${rangers:github_org}/ranger-clubhouse-api

staging_cluster    = ${rangers:staging_cluster}
production_cluster = ${rangers:production_cluster}
staging_service    = ranger-clubhouse-api-staging-fg
production_service = ranger-clubhouse-api-production-fg

smtp_host     = ${rangers:smtp_host}
smtp_port     = ${rangers:smtp_port}
smtp_user     = ${rangers:smtp_user}
smtp_password = ${rangers:smtp_password}
sender        = ${rangers:sender}
recipient     = ${rangers:recipient}


[clubhouse-web]

repository_id = ${rangers:github_org}/ranger-clubhouse-web

staging_cluster    = ${rangers:staging_cluster}
production_cluster = ${rangers:production_cluster}
staging_service    = ranger-clubhouse-web-staging-fg
production_service = ranger-clubhouse-web-production-fg

smtp_host     = ${rangers:smtp_host}
smtp_port     = ${rangers:smtp_port}
smtp_user     = ${rangers:smtp_user}
smtp_password = ${rangers:smtp_password}
sender        = ${rangers:sender}
recipient     = ${rangers:recipient}


[clubhouse-classic]

repository_id = ${rangers:github_org}/ranger-secret-clubhouse

staging_cluster    = ${rangers:staging_cluster}
production_cluster = ${rangers:production_cluster}
staging_service    = ranger-secret-clubhouse-staging-fg
production_service = ranger-secret-clubhouse-production-fg

smtp_host     = ${rangers:smtp_host}
smtp_port     = ${rangers:smtp_port}
smtp_user     = ${rangers:smtp_user}
smtp_password = ${rangers:smtp_password}
sender        = ${rangers:sender}
recipient     = ${rangers:recipient}


[ims]

repository_id = ${rangers:github_org}/ranger-ims-server

staging_cluster    = ${rangers:staging_cluster}
production_cluster = ${rangers:production_cluster}
staging_service    = ranger-ims-staging-fg
production_service = ranger-ims-production-fg

smtp_host     = ${rangers:smtp_host}
smtp_port     = ${rangers:smtp_port}
smtp_user     = ${rangers:smtp_user}
smtp_password = ${rangers:smtp_password}
sender        = ${rangers:sender}
recipient     = ${rangers:recipient}

About

Deployment tools for Ranger services.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages