Added docs readme file

This commit is contained in:
Marc Aymerich 2016-02-16 10:13:55 +00:00
parent 374729f6eb
commit 6c665295be
1 changed files with 99 additions and 93 deletions

View File

@ -4,27 +4,35 @@
1. [PIP-only, Fast deployment setup (demo)](README.md#fast-deployment-setup)
2. [Docker container (development)](INSTALLDEV.md)
3. [Install on current system (production)](INSTALL.md)
1. Copy orchestra SSH key to the servers to be managed (you can use <span title="`orchestra@panel:~ ssh-copy-id root@server.address`">`ssh-copy-id`</span>: ), then Add the servers to be managed by orchestra into the servers section `/admin/orchestration/servers`, then copy orchestra's SSH pubkey to them
2. Now configure service by service (domains, databases, webapps, websites...):
1. Add the route through `/admin/orchestration/route/`
2. Check and configure related settings on `/admin/settings/setting/`
3. Configure related resources if needed `/resources/resource/`, like Account Disc limit and traffic.
3. Test that everything works by creating and deleting services
1. Copy orchestra SSH key to the servers to be managed, you can use `ssh-copy-id`:
```bash
orchestra@panel:~ ssh-copy-id root@server.address
```
Then add the servers to orchestra using the web interface `/admin/orchestration/servers`, check that the SSH connection is working and Orchestra can report the uptime of the servers.
2. Now configure service by service (domains, databases, webapps, websites, ...):
1. Add the route via `/admin/orchestration/route/`
2. Configure related settings on `/admin/settings/setting/`
3. If required, configure related resources like Account disc limit, VPS traffic, etc `/resources/resource/`
3. Test that everything works as expected by creating and deleting service instances
4. Do the same for the other services
3. Configure billing by adding services `/admin/services/service/add/` and plans `/admin/plans/plan/`
1. Once a service is created hit the *Update orders* button
3. Configure billing by adding services `/admin/services/service/add/` and plans `/admin/plans/plan/`. Once a service is created hit the *Update orders* button to create the orders for the existing service instances.
### Architecture
Orchestration
Orders
Resources
### Creating new services
1. Think about if the service can fit into one of the existing models like: SaaS or WebApps, refere to the related documentation if that is the case.
2. Create a new django app using startapp management command. For ilustrational purposes we will create a crontab services that will allow orchestra to manage user-based crontabs.
`python3 manage.py startapp crontabs`
1. Think about if the service can fit into one of the existing service models like: SaaS or WebApps, refere to the related documentation if that is the case.
2. Create a new django app using `startapp` management command. For ilustrational purposes we will create a crontab services that will allow orchestra to manage user-based crontabs.
```bash
python3 manage.py startapp crontabs
```
3. Add the new *crontabs* app to the `INSTALLED_APPS` in your project's `settings.py`
3. Create a `models.py` file with the data your service needs to keep in order to be managed by orchestra
```python
@ -58,7 +66,7 @@ class Crontab(models.Model):
return (self.description or self.command)[:32]
```
4. Create a `admin.py` to enable the admin interface
4. Create a `admin.py` to enable the admin interface, refere to [Django Admin documentation](https://docs.djangoproject.com/en/1.9/ref/contrib/admin/) for further customization.
```python
from django.contrib import admin
from .models import CrontabSchedule, Crontab
@ -71,10 +79,11 @@ class Crontab(models.Model):
admin.site.register(CrontabSchedule, CrontabScheduleAdmin)
admin.site.register(Crontab, CrontabAdmin)
```
5. Create a `api.py` to enable the REST API.
6. Create a `backends.py` fiel with the needed backends for service orchestration and monitoring
6. Create a `backends.py` fiel with the needed backends for service orchestration and monitoring.
```python
import os
import textwrap
@ -103,11 +112,8 @@ class Crontab(models.Model):
for account in self.accounts:
crontab = None
self.append("echo '' > %(crontab_path)s" % context)
chown
for crontab in account.crontabs.all():
self.append("
# if crontab is None:
# self.append("rm -f %(crontab_path)s" % context)
```
7. Configure the routing