getavalon / core

The safe post-production pipeline - https://getavalon.github.io/2.0
MIT License
218 stars 48 forks source link

Embedded demo install #397

Open mottosso opened 5 years ago

mottosso commented 5 years ago

Goal

Improve adoption by simplifying the getting-started procedure.

Motivation

An example project is critical to getting started with Avalon. The current installation guide works well, except for when you get to uploading the "Batman" example project to Mongo.

Because it's a database and not your typical file hierarchy it requires dedicated tools that you typically don't have on your system unless you follow the guide to the letter and install a temporary MongoDB instance on your machine. To make matter worse. you can't leverage Docker for your Mongo instance, because the guide requires access to one of Mongo's command-line utilities for uploading the project.

Implementation

So I had a thought; why not wrap that process in a Python script that ships with the Avalon install?

# Example
$ pip install avalon
$ avalon --upload batman.json

Bam, all done. Furthermore, with this process within our control, we could easily fetch demo projects straight from GitHub, and download things on-demand as opposed to having everything pre-downloaded as it is at the moment.

$ avalon --demo batman
# Downloading Batman example project..
# Installing Batman..
# Success
tokejepsen commented 5 years ago

Is the entry to Avalon not what https://github.com/getavalon/docker is trying to solve?

mottosso commented 5 years ago

Hey @tokejepsen, this would apply there too I think; as you'd still need some way of uploading the example project.

I also realised the above example wasn't clear enough. In the current guide, you call avalon --import batman which in turn calls on the mongodump executable for its upload into the database. What this issue would do instead is use the pymongo Python library to do that, such that you don't need the MongoDB executables. (pymongo already being part of Avalon core)

I'd also like to get rid of Mongo for the initial learning curve; @davidlatwe wrote a mongo emulator I'd like to try here. If we can get to the point where you can just pip install avalon that would be great for adoption. Then there can be advanced options for installing and maintaining a Mongo instance for performance and scale etc.

tokejepsen commented 5 years ago

In the current guide, you call avalon --import batman which in turn calls on the mongodump executable for its upload into the database.

I thought the batman example was using pymongo: https://github.com/getavalon/examples/blob/cb733dbbf7c7adc96c8d7a898a6973c25b3a8da3/import.py#L38 ?

If we can get to the point where you can just pip install avalon that would be great for adoption.

Totally agree. The entry to Avalon is too steep atm.

mottosso commented 5 years ago

Oh no, yes it is! The guide is referencing the setup repo, which references an older version of this.

Maybe it's only a matter of updating setup?

tokejepsen commented 5 years ago

Maybe it's only a matter of updating setup?

Quite possibly. I personally would like to see avalon-docker being used, as I see it as an easier environment to manage. We are currently using avalon-docker in production for the database. Have even got a scheduled backup of the avalon database through avalon --backup.