AWS Greengrass file-based setup tool based on greengo by d
Project description
Boilerplate for AWS IoT Greengrass
Greengo: a starter project to bring up (and clean-up!) AWS Greengrass setup for play and profit. If you followed the GreenGrass Getting Started Guide, here you find it automated, as code.
Work In Progress !
Describe your Greengrass group in group.yaml, write Lambda functions and device clients, provision Greengrass Core in Vagrant VM, deploy, and clean up.
Inspired by aws-iot-elf (Extremely Low Friction) and aws-greengrass-group-setup.
Pre-requisits
- A computer with Linux/MacOS, Python, git (dah!)
- Vagrant with VirtualBox
- AWS CLI installed and configured. Consider using named profiles.
Set it Up
Install greengo from PyPI:
$ pip install greengo
Manually [*] download GreenGrassCore binary and place it in the ./downloads directory.
Sign in to the AWS Management Console, navigate to the AWS IoT console,
and download the AWS Greengrass
Core Software from [Software section](https://us-west-2.console.aws.amazon.com/iotv2/home?region=us-west-2#/
software/greengrass).
Yeah, manual sucks... I will automate it later. Or, submit your PR!
Play
-
Create GreenGrass Group definition in AWS
Fancy yourself with the group definitions in
group.yaml, and rungreengo:$ greengo createWhen runs with no errors, it creates all greengrass group artefacts on AWS and places certificates and
config.jsonfor GreenGrass Core in./certsand./configfor Vagrant to use in provisioning on next step. -
Provision VM with GreenGrass Core with Vagrant
$ vagrant up -
Deploy Greengrass Group to the Core on the VM.
$ greengo deploy -
Check that everything works - see the "Check" section below.
-
Profit !
-
Work on it: create, change or remove Lambda functions, subscriptions, resources, and then update Greengrass.
$ greengo update
Apply your changes by deploying it again:
```
$ greengo deploy
```
-
Clean-up when done playing.
Remove the group definitions on AWS:
$ greengo removeDitch the Vagrant VM:
$ vagrant destroy
NOTE: If you want to create a new group but keep the Greengrass Core in the same Vagrant VM, you must update it with newly generated certificates and
config.jsonfile before deploying the group, and also reset deployment by getting thedeployments/group/group.jsonback to virgin.To do it: login to the Greengrass Vagrant VM and run
/vagrant/scripts/update_ggc.shon the Vagrant VM.
Details
Check the deployment
How to be sure everything something works? Follow this:
- Create greengrass group in AWS IoT:
greengo create. - Prepare GGC on the VM: update certificates, reset
group.json, restart thegreengrassd. - Deploy with
greengo deploy. Check:- Check the deployment status, should be 'Success'
- Explore Greengrass Core on your vagrant VM.
- Login to Vagrant VM. You should nkow Vagrant but for the off case:
vagrant ssh. - Check the GGC logs
runtime.logandpython_runtime.logunder/greengrass/ggc/var/log/system. Runtime log should have a line about starting your lambda, or an error why the funtion is not started. In many cases (like not enough memory for Lambda), the deployment is 'Success' but the function fails to start. The errors can only be seen in theruntime.log. If the function starts successfully,runtime.logwill contain a message like
[2018-03-31T08:48:40.57Z][INFO]-Starting worker arn:aws:lambda:us-west-2:0000000000:function:GreengrassHelloWorld:12- Find and check your own Lambda log under
/greengrass/ggc/var/log/system. - Check the greengrassd process:
ps aux | grep greengrassd. Depending on deployment you might have several processes.
- Login to Vagrant VM. You should nkow Vagrant but for the off case:
- In AWS console, check the MQTT topic with IoT MQTT Test page:
Subscribe to the topic (e.g.,REGION=`aws configure get region`; open https://$REGION.console.aws.amazon.com/iot/home?region=$REGION#/testhello/world), see the messages sent by the Greengrass Lambda function.
When something goes wrong
At this time greengo is just a prototype, a work-in-progress. Therefore it's not if but when somethings throws out, leaving the setup in half-deployed,
and you gotta pick up the pieces. Remember:
- You are still not worse off doing this manually: you at least have all the
ARNandIdof all resources to clean-up. - DON'T DELETE
.gg/gg_state.jsonfile: it contains references to everything you need to delete. Copy it somewhere and use theIdandArnof created resources to clean up the pieces. - Do what it takes to roll forward - if you're close to successful deployment, or roll-back - to clean things up and start from scratch.
Please pay forward: PR a patch to whatever broke for you to prevent it from happening again.
Development
Clone the project, set up your environment, install dependencies and setup greengo CLI in dev mode:
$ git clone https://github.com/dzimine/greengo.git
$ cd greengo
# For python2:
$ virtualenv venv
$ . venv/bin/activate
# For python3
$ python3 -m venv .venv3
$ . .venv3/bin/activate
$ pip install -r requirements.txt
# Install greengo into the virtualenv
$ pip install -e .
Run the unit tests:
pytest -s tests/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gud-2.0.18.tar.gz.
File metadata
- Download URL: gud-2.0.18.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f25293f5a9a674fb23bb3bf6ed6178deebaae9064d97438820df588b5eb5ba78
|
|
| MD5 |
cf5fd336130fa13244dcf5291f317120
|
|
| BLAKE2b-256 |
6bcec36e254b78394cb5a6c26e047a95b1ef37d3513947ed5ea78078c0c84990
|
File details
Details for the file gud-2.0.18-py3-none-any.whl.
File metadata
- Download URL: gud-2.0.18-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7f57942a8333a26d9343a19268f16645e6aab66367a996b63850a4b0e71930a
|
|
| MD5 |
f16f5659116c7108d64f470580561909
|
|
| BLAKE2b-256 |
e5021472c2c91dc13f1a9a23da253ebe6d9f8f5c58c501ae7bc06d554482a22d
|