_ _ __ _ _ | | | | / _(_) | | __| | ___ _ __ | | ___ _ _| |_ _ ___| |__ / _` |/ _ \ '_ \| |/ _ \| | | | _| / __| '_ \ | (_| | __/ |_) | | (_) | |_| | | | \__ \ | | | \__,_|\___| .__/|_|\___/ \__, |_| |_|___/_| |_| | | __/ | |_| |___/
deployfish has commands for managing the whole lifecycle of your application:
Safely and easily create, update, destroy and restart ECS services
Safely and easily create, update, run, schedule and unschedule ECS tasks
Extensive support for ECS related services like load balancing, application autoscaling and service discovery
Easily scale the number of containers in your service, optionally scaling its associated autoscaling group at the same time
Manage multiple environments for your service (test, qa, prod, etc.) in multiple AWS accounts.
Uses AWS Parameter Store for secrets for your containers
View the configuration and status of running ECS services
Run a one-off command related to your service
Easily exec through your VPC bastion host into your running containers, or ssh into a ECS container machine in your cluster.
Setup SSH tunnels to the private AWS resources in VPC that your service uses so that you can connect to them from your work machine.
Extensible! Add additional functionality through custom deployfish modules.
Works great in CodeBuild steps in a CodePipeline based CI/CD system!
deployfish integrates with
terraform state files so that you can use the
values of terraform outputs directly in your
deployto start managing your service
deployfish.yml looks like this:
services: - name: my-service environment: prod cluster: my-cluster count: 2 load_balancer: service_role_arn: arn:aws:iam::123142123547:role/ecsServiceRole load_balancer_name: my-service-elb container_name: my-service container_port: 80 family: my-service network_mode: bridge task_role_arn: arn:aws:iam::123142123547:role/myTaskRole containers: - name: my-service image: 123142123547.dkr.ecr.us-west-2.amazonaws.com/my-service:0.0.1 cpu: 128 memory: 256 memoryReservation: 128 ports: - "80" environment: - ENVIRONMENT=prod - ANOTHER_ENV_VAR=value - THIRD_ENV_VAR=value
examples/ folder in this repository for example
deployfish.readthedocs.io is the full
reference for deployfish, including a full
deployfish.yml reference and
deployfish is a pure python package. As such, it can be installed in the usual python ways. For the following instructions, either install it into your global python install, or use a python virtual environment to install it without polluting your global python environment.
pip install deployfish
Download a release from Github, then:
unzip deployfish-deployfish-1.3.10.zip cd deployfish-deployfish-1.3.10 python setup.py install
git clone https://github.com/caltechads/deployfish.git cd deployfish python setup.py install
pyenv-virtualenv and set up your environment for the