EcsDeployer
Description
Deploy Docker container on AWS ECS..
Installation
Add this line to your application's Gemfile:
gem 'ecs_deployer'
And then execute:
$ bundle
Or install it yourself as:
$ gem install ecs_deployer
Task definition
Write task definition in YAML format. For available parameters see Task Definition Parameters.
container_definitions:
- name: wordpress
links:
- mysql
image: wordpress
essential: true
port_mappings:
- container_port: 80
hostPort: 80
memory: 512
cpu: 10
- environment:
- name: MYSQL_ROOT_PASSWORD
value: password
name: mysql
image: mysql
cpu: 10
memory: 512
essential: true
family: hello_world
Encrypt of environment variables
environment parameter supports KMS encrypted values.
Encrypted values must be enclosed in ${XXX}.
- environment:
- name: MYSQL_ROOT_PASSWORD
value: ${fiSAIfIFxd...}
Values are decrypted when task is created.
Usage
API
This sample file is in spec/fixtures/task.yml.
deployer = EcsDeployer::Client.new
deployer.register_task('development.yml')
deployer.update_service('cluster', 'development')
{{xxx}} parameter is construed variable.
container_definitions:
- name: wordpress
image: wordpress:{{tag}}
deployer.register_task('development.yml', tag: 'latest')
CLI
Register new task
$ bundle exec ecs_deployer task-register --path=spec/fixtures/task.yml --replace-variables=tag:latest
Registered task: arn:aws:ecs:ap-northeast-1:xxx:task-definition/hello_world:53
Encrypt environment value
$ bundle exec ecs_deployer encrypt --master-key=master --value='test'
Encrypted value: ${xxx}
Decrypt environment value
$ bundle exec ecs_deployer decrypt --value='${xxx}'
Decrypted value: xxx
Update service
$ bundle exec ecs_deployer update-service --cluster=xxx --service=xxx --wait --timeout=600
Start deploying...
Deploying... [0/1] (20 seconds elapsed)
New task: arn:aws:ecs:ap-northeast-1:xxxx:task-definition/sandbox-development:68
------------------------------------------------------------------------------------------------
arn:aws:ecs:ap-northeast-1:xxxx:task-definition/sandbox-development:67 [RUNNING]
------------------------------------------------------------------------------------------------
You can stop process with Ctrl+C. Deployment will continue.
Deploying... [1/2] (40 seconds elapsed)
New task: arn:aws:ecs:ap-northeast-1:xxxx:task-definition/sandbox-development:68
------------------------------------------------------------------------------------------------
arn:aws:ecs:ap-northeast-1:xxxx:task-definition/sandbox-development:68 [RUNNING]
arn:aws:ecs:ap-northeast-1:xxxx:task-definition/sandbox-development:67 [RUNNING]
------------------------------------------------------------------------------------------------
You can stop process with Ctrl+C. Deployment will continue.
Service update succeeded. [1/1]
New task definition: arn:aws:ecs:ap-northeast-1:xxxx:task-definition/sandbox-development:68
Update service: arn:aws:ecs:ap-northeast-1:xxxx:service/development