Silver Lining Terminology

Silver Lining Terminology

This terminology is not yet implemented, but with a refactoring it will be:

Provider:

This is a provider like Rackspace, EC2, etc. This is generally defined in ~/.silverlining.conf. This generally includes account information in addition to the actual provider, so if you are working with multiple accounts you will have multiple providers.

Node:

This is a virtual server that has been setup. It has a name, which is also the domain name it can be accessed by. The name doesn’t have to be in DNS (/etc/hosts is setup for this). Hostnames can be substituted for node names in all cases (but a node that has just been created has no hostnames because no sites have been deployed to it). Node names and hostnames can overlap.

Location (FIXME: not a great name):

This is a hostname, and optionally a path where an application will live. For example, blog.example.com/about/. Multiple locations can be mapped to a single application.

Hostname:

The host part of a location.

Application Package:

This is a codebase that can be run. It has an app.ini file, and a runner for the application.

Application:

This is an application package, ready to deploy. It also has an application name. Application Packages specify a default name, but application names are unique on a node; so if a deployment uses a particular application name then it is the identical application and will replace the old application. If, for instance, you want to install two distinct versions of the same application package – e.g., two versions of a blog product – then you must give them two separate application names.

Deployment:

This is a specific deployment of an application. It is named based on the application name and a timestamp and unique integer. The name is referred to as instance_name.

Site:

This is an arrangement of applications and their locations, and potentially an arrangment of servers to support those applications (if the entire site is not deployed on a single server).

Services:

These are persistent services that the application will use.

deb Package:

This is unsurprisingly a deb package, installed with apt-get. Generally these will be Ubuntu packages, but you can use other repositories and install packages by other providers.

app_dir:

This is the directory where Application files have been uploaded on a server, generally /var/www/APP_NAME.TIMESTAMP.

instance_name:

This is the name of the deployment, e.g., APP_NAME.TIMESTAMP.

hostname:

This is a host that can be ssh’d to.

app_name:

This is the name of the app on the server (APP_NAME).

node:

There are a limited number of times when node is distinct from hostname:

first, if you provide –node then that overrides the hostname for ssh, etc. This can be useful when there is a load balancer in front of the server, or many servers provide the same hostname (e.g., many load-balanced app servers).

second, if the hostname is not mapped to anything (it has not been created, it is not in /etc/hosts), then this lets the hostname be mapped to a specific node/server.

In other cases, hostname and node are equivalent, and if a command includes the hostname it doesn’t require an explicit node.