deployfish


Namedeployfish JSON
Version 1.11.14 PyPI version JSON
download
home_pagehttps://github.com/caltechads/deployfish
SummaryAWS ECS related deployment tools
upload_time2024-04-15 23:03:46
maintainerNone
docs_urlNone
authorCaltech IMSS ADS
requires_python>=3.7
licenseNone
keywords aws ecs docker devops
VCS
bugtrack_url
requirements click PyYaml requests jsondiff2 inspect2 jinja2 typer tzlocal boto3 bumpversion twine tox wheel Sphinx sphinx-autobuild sphinx-click sphinx_rtd_theme autopep8 flake8 pycodestyle mypy testfixtures mock nose ipython
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ```
      _            _              __ _     _
     | |          | |            / _(_)   | |
   __| | ___ _ __ | | ___  _   _| |_ _ ___| |__
  / _` |/ _ \ '_ \| |/ _ \| | | |  _| / __| '_ \
 | (_| |  __/ |_) | | (_) | |_| | | | \__ \ | | |
  \__,_|\___| .__/|_|\___/ \__, |_| |_|___/_| |_|
            | |             __/ |
            |_|            |___/
```

`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/15/d6/d2aed91aeb92312535ae8e0232da95b9797384434535a4540142fea1f1e4/deployfish-1.11.14.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.11.14",
    "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": "2821e3a0134a27bbea8f16c7cd9e010b2e2806bb2587f8f486ae80ceeb25ee81",
                "md5": "0fc61a45ec4209dce6747d1d17a02a88",
                "sha256": "0baf8164cb61d6e1faae3f58d158f3be92f05f3a0c7ff2542d6bde7f4efec162"
            },
            "downloads": -1,
            "filename": "deployfish-1.11.14-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0fc61a45ec4209dce6747d1d17a02a88",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=3.7",
            "size": 189949,
            "upload_time": "2024-04-15T23:03:43",
            "upload_time_iso_8601": "2024-04-15T23:03:43.327597Z",
            "url": "https://files.pythonhosted.org/packages/28/21/e3a0134a27bbea8f16c7cd9e010b2e2806bb2587f8f486ae80ceeb25ee81/deployfish-1.11.14-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "15d6d2aed91aeb92312535ae8e0232da95b9797384434535a4540142fea1f1e4",
                "md5": "46498edc40877aaa4cf25cb53166366c",
                "sha256": "29f114d4bc35d8f6ec2e0aeb59939ce03b2074f26de73545f646790025da21aa"
            },
            "downloads": -1,
            "filename": "deployfish-1.11.14.tar.gz",
            "has_sig": false,
            "md5_digest": "46498edc40877aaa4cf25cb53166366c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 143628,
            "upload_time": "2024-04-15T23:03:46",
            "upload_time_iso_8601": "2024-04-15T23:03:46.350142Z",
            "url": "https://files.pythonhosted.org/packages/15/d6/d2aed91aeb92312535ae8e0232da95b9797384434535a4540142fea1f1e4/deployfish-1.11.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-15 23:03:46",
    "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"
}
        
Elapsed time: 0.27665s