Home

Torkel Ödegaard edited this page Jul 17, 2013 · 10 revisions

What is Asimov Deploy?

Asimov Deploy is a deploy tool that tries to make it easy to update applications and web sites on multiple servers through a simple web UI. Lets say you have a production environment with about 5-30 (or more) servers, each running one or more web sites or backend services and applications. Asimov will provides a dashboard that lists all applications, their version and status for each machine. Through this dashboard you will able to update individual applications, control the load balancer and execute application warm up & verify scripts.

Getting Started

See the page for quick start Getting Started.

Architecture

Asimov Deploy consists of a centralized deploy UI that aggregate information from all the deploy agents. Deploy UI actions are always delegated to a specific deploy agent that perform the actual deployment locally on the machine where the deploy agent is installed.

Deploy UI

The Deploy UI is simple node web server that hosts a single page HTML web application. The Deploy UI require minimal config and setup to install as all it does is aggregate and delegate deploy agent functionality. It does not use any persisted storage. When the Deploy UI starts it does not know any agents yet. It will register agents in memory when agent heartbeats are received.

Deploy Agent

Deploy Agents have a HTTP API that is used by the Deploy UI. The Deploy Agent also makes outgoing calls to the Deploy UI to notify state changes and other events of interest. When a user loads the deploy dashboard the Deploy UI web server will request a list of deploy units from all agents. Similarly when a user opens the select version dialog on a deploy unit a request is made to the specific agent requesting available versions for the specific deploy unit. Most of the functionality is thereby delegated to the deploy agent. To determine what can be deployed, current version, other versions that are available, how to deploy, the status of the deploy units, the deploy history, etc. is all controlled by the deploy agent.

Deploy Agent Configuration

Deploy agents require one or more json configuration files that define what applications or web sites it can deploy, where new versions can be found, and how to deploy the specific deploy unit.

Example:

{
   "NodeFrontUrl": "http://deploy.intranet.mycompany.com",
   "HeartbeatIntervalSeconds": 60,
   "ConfigVersion": 2,

   "PackageSources":  {
      "ProductionBuilds":  { "Type": "FileSystem", "Uri": "file://some-file-share/drops" }     
   },

   "Units": [
      {
         "Name":        "UserRegistration.ApplicantRegistration",
         "Type":        "WebSite",

         "PackageInfo": { "Source": "ProductionBuilds", "InternalPath":  "_PublishedWebsites/ApplicantRegistration"  },

         "SiteName":    "ProcessService.UserRegistration",
         "SiteUrl":     "http://localhost/ApplicantRegistration"
      },    

      {
         "Name":        "UserRegistration.PostProcessing.Handler",
         "Type":        "WindowsService",
         
         "PackageInfo": { "Source": "ProductionBuilds", "InternalPath":  "_PublishedApplications/UserRegistration.PostProcessing.Handler"  },
         
         "ServiceName": "UserRegistration.PostProcessing.Handler"
      }
   ]
}

Deploy Agent Updater

A optional feature is the deploy agent updater. That can be installed along side each deploy agent on each machine. The updater provides features for automatically updating the agent or just the agent config. This is very useful if you have many agents and you need to update all of them with a new agent build (that has some new feature for example) or just push out new agent config files.