```
_ _ __ _ _
| | | | / _(_) | |
__| | ___ _ __ | | ___ _ _| |_ _ ___| |__
/ _` |/ _ \ '_ \| |/ _ \| | | | _| / __| '_ \
| (_| | __/ |_) | | (_) | |_| | | | \__ \ | | |
\__,_|\___| .__/|_|\___/ \__, |_| |_|___/_| |_|
| | __/ |
|_| |___/
```
`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!
Additionally, `deployfish` integrates with
[terraform](https://www.terraform.io) state files so that you can use the
values of terraform outputs directly in your `deployfish` configurations.
To use `deployfish`, you
* Install `deployfish`
* Define your service in `deployfish.yml`
* Use `deploy` to start managing your service
A simple `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
See the `examples/` folder in this repository for example `deployfish.yml`
files.
## Documentation
[deployfish.readthedocs.io](http://deployfish.readthedocs.io/) is the full
reference for deployfish, including a full `deployfish.yml` reference and
tutorials.
## Installing deployfish
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](https://python-guide-pt-br.readthedocs.io/en/latest/dev/virtualenvs/) to install it
without polluting your global python environment.
### Install deployfish
pip install deployfish
### Install AWS CLI v2
deployfish requries AWS CLI v2 for some of its functionality, notably EXEC'ing into FARGATE containers. While AWS CLI
v1 was installable via `pip`, AWS CLI v2 is not, so we have to do the install manually. Here's how to set that up on a
Mac:
# Uninstall any old versions of the cli
pip uninstall awscli
# Deactivate any pyenv environment so we can be in the system-wide Python interpreter
cd ~
# Install the new AWS CLI from brew -- it's no longer pip installable
brew update
brew install awscli
# Install the Session Manager plugin
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip" -o "sessionmanager-bundle.zip"
unzip sessionmanager-bundle.zip
sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin
If later on you have issues with EXEC'ing or with the `aws` command in general, check to ensure you're getting your
global version of `aws` instead of an old one in your current virtual environment:
aws --version
If the version string shows version < 2:
pip uninstall awscli
Raw data
{
"_id": null,
"home_page": "https://github.com/caltechads/deployfish",
"name": "deployfish",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "aws, ecs, docker, devops",
"author": "Caltech IMSS ADS",
"author_email": "imss-ads-staff@caltech.edu",
"download_url": "https://files.pythonhosted.org/packages/c0/3b/07b61cba7d70c3fc553e048d2a64d55feb59f38f4023e6b1624fec214723/deployfish-1.14.9.tar.gz",
"platform": null,
"description": "```\n _ _ __ _ _\n | | | | / _(_) | |\n __| | ___ _ __ | | ___ _ _| |_ _ ___| |__\n / _` |/ _ \\ '_ \\| |/ _ \\| | | | _| / __| '_ \\\n | (_| | __/ |_) | | (_) | |_| | | | \\__ \\ | | |\n \\__,_|\\___| .__/|_|\\___/ \\__, |_| |_|___/_| |_|\n | | __/ |\n |_| |___/\n```\n\n`deployfish` has commands for managing the whole lifecycle of your application:\n\n* Safely and easily create, update, destroy and restart ECS services\n* Safely and easily create, update, run, schedule and unschedule ECS tasks\n* Extensive support for ECS related services like load balancing, application\n autoscaling and service discovery\n* Easily scale the number of containers in your service, optionally scaling its\n associated autoscaling group at the same time\n* Manage multiple environments for your service (test, qa, prod, etc.) in\n multiple AWS accounts.\n* Uses AWS Parameter Store for secrets for your containers\n* View the configuration and status of running ECS services\n* Run a one-off command related to your service\n* Easily exec through your VPC bastion host into your running containers, or\n ssh into a ECS container machine in your cluster.\n* Setup SSH tunnels to the private AWS resources in VPC that your service\n uses so that you can connect to them from your work machine.\n\n* Extensible! Add additional functionality through custom deployfish modules.\n* Works great in CodeBuild steps in a CodePipeline based CI/CD system!\n\n\nAdditionally, `deployfish` integrates with\n[terraform](https://www.terraform.io) state files so that you can use the\nvalues of terraform outputs directly in your `deployfish` configurations.\n\nTo use `deployfish`, you\n\n* Install `deployfish`\n* Define your service in `deployfish.yml`\n* Use `deploy` to start managing your service\n\nA simple `deployfish.yml` looks like this:\n\n services:\n - name: my-service\n environment: prod\n cluster: my-cluster\n count: 2\n load_balancer:\n service_role_arn: arn:aws:iam::123142123547:role/ecsServiceRole\n load_balancer_name: my-service-elb\n container_name: my-service\n container_port: 80\n family: my-service\n network_mode: bridge\n task_role_arn: arn:aws:iam::123142123547:role/myTaskRole\n containers:\n - name: my-service\n image: 123142123547.dkr.ecr.us-west-2.amazonaws.com/my-service:0.0.1\n cpu: 128\n memory: 256\n memoryReservation: 128\n ports:\n - \"80\"\n environment:\n - ENVIRONMENT=prod\n - ANOTHER_ENV_VAR=value\n - THIRD_ENV_VAR=value\n\nSee the `examples/` folder in this repository for example `deployfish.yml`\nfiles.\n\n## Documentation\n\n[deployfish.readthedocs.io](http://deployfish.readthedocs.io/) is the full\nreference for deployfish, including a full `deployfish.yml` reference and\ntutorials.\n\n\n## Installing deployfish\n\ndeployfish is a pure python package. As such, it can be installed in the\nusual python ways. For the following instructions, either install it into your\nglobal python install, or use a python [virtual environment](https://python-guide-pt-br.readthedocs.io/en/latest/dev/virtualenvs/) to install it\nwithout polluting your global python environment.\n\n### Install deployfish\n\n pip install deployfish\n\n### Install AWS CLI v2\n\ndeployfish requries AWS CLI v2 for some of its functionality, notably EXEC'ing into FARGATE containers. While AWS CLI\nv1 was installable via `pip`, AWS CLI v2 is not, so we have to do the install manually. Here's how to set that up on a\nMac:\n\n # Uninstall any old versions of the cli\n pip uninstall awscli\n\n # Deactivate any pyenv environment so we can be in the system-wide Python interpreter\n cd ~\n\n # Install the new AWS CLI from brew -- it's no longer pip installable\n brew update\n brew install awscli\n\n # Install the Session Manager plugin\n curl \"https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac/sessionmanager-bundle.zip\" -o \"sessionmanager-bundle.zip\"\n unzip sessionmanager-bundle.zip\n sudo ./sessionmanager-bundle/install -i /usr/local/sessionmanagerplugin -b /usr/local/bin/session-manager-plugin\n\n\nIf later on you have issues with EXEC'ing or with the `aws` command in general, check to ensure you're getting your\nglobal version of `aws` instead of an old one in your current virtual environment:\n\n aws --version\n\nIf the version string shows version < 2:\n\n pip uninstall awscli\n",
"bugtrack_url": null,
"license": null,
"summary": "AWS ECS related deployment tools",
"version": "1.14.9",
"project_urls": {
"Documentation": "https://deployfish.readthedocs.io/en/latest/",
"Homepage": "https://github.com/caltechads/deployfish",
"Issues": "https://github.com/caltechads/deployfish/issues",
"Source": "https://github.com/caltechads/deployfish"
},
"split_keywords": [
"aws",
" ecs",
" docker",
" devops"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2dd894bebc233b0163c50bd958a9b9b2b848e730be6b0b80e259f5f733387d49",
"md5": "6cecfac6d0dad56ac5865f07e542c5bf",
"sha256": "3022aefb064a34e80b2706c044ee83dea6a1abfce80b499a7706650d29a0b81e"
},
"downloads": -1,
"filename": "deployfish-1.14.9-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "6cecfac6d0dad56ac5865f07e542c5bf",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.7",
"size": 218743,
"upload_time": "2024-11-21T22:35:50",
"upload_time_iso_8601": "2024-11-21T22:35:50.455825Z",
"url": "https://files.pythonhosted.org/packages/2d/d8/94bebc233b0163c50bd958a9b9b2b848e730be6b0b80e259f5f733387d49/deployfish-1.14.9-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c03b07b61cba7d70c3fc553e048d2a64d55feb59f38f4023e6b1624fec214723",
"md5": "ea85a54d34ce0ffbf1286c9ea40d7f82",
"sha256": "d09720589c141ab3fe21d8349db340a4b83092935cbfb5544832f94ffc5e99bb"
},
"downloads": -1,
"filename": "deployfish-1.14.9.tar.gz",
"has_sig": false,
"md5_digest": "ea85a54d34ce0ffbf1286c9ea40d7f82",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 166444,
"upload_time": "2024-11-21T22:35:51",
"upload_time_iso_8601": "2024-11-21T22:35:51.994580Z",
"url": "https://files.pythonhosted.org/packages/c0/3b/07b61cba7d70c3fc553e048d2a64d55feb59f38f4023e6b1624fec214723/deployfish-1.14.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-21 22:35:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "caltechads",
"github_project": "deployfish",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "click",
"specs": [
[
">=",
"6.7"
]
]
},
{
"name": "PyYaml",
"specs": [
[
">=",
"5.1"
]
]
},
{
"name": "requests",
"specs": [
[
">=",
"2.18.4"
]
]
},
{
"name": "jsondiff2",
"specs": [
[
">=",
"1.2.3"
]
]
},
{
"name": "inspect2",
"specs": [
[
">=",
"0.1.2"
]
]
},
{
"name": "jinja2",
"specs": [
[
">=",
"2.11"
]
]
},
{
"name": "typer",
"specs": [
[
">=",
"0.6.1"
]
]
},
{
"name": "tzlocal",
"specs": [
[
">=",
"4.0.1"
]
]
},
{
"name": "boto3",
"specs": [
[
">=",
"1.22"
]
]
},
{
"name": "bumpversion",
"specs": [
[
"==",
"0.5.3"
]
]
},
{
"name": "twine",
"specs": []
},
{
"name": "tox",
"specs": []
},
{
"name": "wheel",
"specs": []
},
{
"name": "Sphinx",
"specs": []
},
{
"name": "sphinx-autobuild",
"specs": []
},
{
"name": "sphinx-click",
"specs": []
},
{
"name": "sphinx_rtd_theme",
"specs": []
},
{
"name": "autopep8",
"specs": []
},
{
"name": "flake8",
"specs": []
},
{
"name": "pycodestyle",
"specs": []
},
{
"name": "mypy",
"specs": []
},
{
"name": "testfixtures",
"specs": [
[
">=",
"6.10.0"
]
]
},
{
"name": "mock",
"specs": [
[
"==",
"3.0.5"
]
]
},
{
"name": "nose",
"specs": [
[
"==",
"1.3.7"
]
]
},
{
"name": "ipython",
"specs": [
[
">=",
"7.1.0"
]
]
}
],
"tox": true,
"lcname": "deployfish"
}