wiki:DeveloperGuidelines/DeploymentTools

Version 2 (modified by gnarula, 7 years ago) ( diff )

--

Developer Guidelines: DeploymentTools

Introduction

The coapp needs to allow users to deploy Eden on Linux Servers that may be EC2 instances (preferred). We also need to support features such as:

  • 3-tier Deployment
  • Amazon AutoScaling
  • Management Tasks (Clean Tables/Pull Eden)
  • Allow edition of configuration files

The requirements demand the need of a library which allows us to communicate with servers and install packages and issue commands remotely. We're using Ansible http://ansible.com/ for this task.

Workflow

  • Deploy the coapp using the instructions at http://eden.sahanafoundation.org/wiki/InstallationGuidelines/Amazon#InstallingDeploymentCoapponEC2
  • Access the coapp, register a user and create a new Deployment
  • User may add a signle role (all) or multiple roles (db, webserver, eden)
  • User may only associate a single instance (prod/demo) while creating the deployment. Others may be added after succesful deployment of the first one.
  • On form submit, a YML file is generated in the yaml/ directory of the application (examples https://github.com/sahana/eden_playbook/tree/master/examples and ansible is ran using the web2py scheduler.
  • The success/failure is reported once the scheduler task is completed.
  • If successful, the user may further add instances (eg. demo/test) to the same deployment or issue management tasks using tabs/buttons in the rheader

Schema

The setup_deployment table is used to store various attributes related to the deployment.

The setup_instance table is used to store the type of instances along with its URL and a FK to scheduler_id. Each time an instance is added to the deployment, a YAML file is created in the background and ansible is called using the web2py scheduler.

The setup_server table is used to store the role (all/db/webserver/eden) of a particular host in the deployment along with its IP and hostname.

Background Workflow

  • S3SQLInlineComponent/S3SQLInlineLink allows addition of entries in setup_server and setup_instance.
  • After form submission and record creation, an entry is added to the scheduler_task table to run ansible (row id of scheduler_task is stored in setup_instance table). Ansible playbook (yaml file) takes in the values of variables from the user input in the create form.
  • Success/Failure of the deployment is displayed on the "read" method of the deployment
Note: See TracWiki for help on using the wiki.