Metadata-Version: 2.1
Name: seed-farmer
Version: 0.1.2
Summary: The AWS Professional Services CLI tool SeedFarmer for GitOps support with AWS_CodeSeeder
Home-page: https://github.com/awslabs/seed-farmer
Author: AWS Professional Services
Author-email: aws-proserve-opensource@amazon.com
License: Apache License 2.0
Project-URL: Org Site, https://aws.amazon.com/professional-services/
Keywords: aws,cdk
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
License-File: VERSION
Requires-Dist: aws-codeseeder (~=0.3.2)
Requires-Dist: cookiecutter (~=2.1.0)
Requires-Dist: pyhumps (~=3.5.0)
Requires-Dist: pydantic (~=1.9.0)
Requires-Dist: executor (~=23.2)
Requires-Dist: typing-extensions (~=4.2.0)
Requires-Dist: checksumdir (~=1.2.0)
Requires-Dist: rich (~=12.4.0)
Requires-Dist: requests (==2.28.1)

# Seed-Farmer

Seed-Farmer (seedfarmer) is an opensource orchestration tool that works with AWS CodeSeeder (see [github](https://github.com/awslabs/aws-codeseeder) or [docs](https://aws-codeseeder.readthedocs.io/en/latest/)) and acts as an orchestration tool modeled after [GitOps deployments](https://www.gitops.tech/).  It has a CommandLine Interface (CLI) based in Python. 

It leverages modular code deployments ([see modules](https://seed-farmer.readthedocs.io/en/latest/usage.html#module-development)) leveraging [manifests](https://seed-farmer.readthedocs.io/en/latest/manifests.html) and [deployspecs](https://seed-farmer.readthedocs.io/en/latest/deployspec.html), keeping track of changes and applying changes as need / detected.


## Architecture
Seed-Farmer does not create its own deployments, rather it helps to deploy YOUR modules by acting as the broker between your module code and the AWS Cloud via AWS CodeSeeder.

![Seed-Farmer](docs/source/_static/SeedFarmer.png)

Steps:
1. Invoke `seedfarmer` CLI
2. `seedfarmer` reads/writes deployment metadata with AWS Systems Manager
3. `seedfarmer` invokes AWS IAM to create module-specific roles, attaching the proper least-privilege policies
4. `seedfarmer` leverages `AWS CodeSeeder` for remote deployment on AWS CodeBuild
5. `AWS CodeSeeder` prepares AWS CodeBuild 
6. AWS CodeBuild via `AWS CodeSeeder` inspects and fetches data from AWS SecretsManager (if necessary)
7. AWS CodeBuild via `AWS CodeSeeder` executes the custom `deployspec` for the module
8. AWS CodeBuild via `AWS CodeSeeder` updates AWS Systems Manager with completed module metadata
9. `seedfarmer` updates deployment metadata in AWS Systems Manager

## Getting Started
The Seed-Farmer library is available on PyPi.  Install the library in a python virtual environment.


```bash
python3 -m venv .venv
source .venv/bin/activate
pip install seed-farmer
```

A [project](https://seed-farmer.readthedocs.io/en/latest/project_structure.html) is now necessary to begin create modules.  


