Deletions are marked like this. | Additions are marked like this. |
Line 37: | Line 37: |
== Capistrano Deployment Variable == || '''Capistrano Variable Name''' || '''Typical Value''' || '''Description''' || ||<-3> '''Source Control Checkout''' || || scm_user || alan || User for git checkout on git server || || scm || git || Source control system || || repository || `alan@git.softxs.ch`:/home/git/gitroot/v2p0.git || Git repository || || branch || master || Branch to install || ||<-3> '''Target Machine''' || || deploy_to || /v01/local/www/rails/v2p0-app || Deploy path on target server || || rails_env || production || Rails environment. Typically only ''production'' || || user || v2 || User on target server || || group || www || Group on target server || || current_path || /v01/local/www/rails/v2p0-app/current || Current path on target server || || release_path || /v01/local/www/rails/v2p0-app/releases/20130717103024 || Release path on target server || || current_release || /v01/local/www/rails/v2p0-app/releases/20130613060901 || Currently running release (before installation) || ||<-3> '''Vagrant Target Machine''' Applicable only if ''app=vagrant'', and ''site=v2'' || || user || vagrant || Vagrant user on virtual host server || || vh_fqdn || vh01.softxs.ch || Virtual host fully-qualified hostname || || vh_home || /home/vms/vm0409 || Path to VM on virtual host server || || vm_box || lucid64_v2base2 || Name of virtual box (instance) to install || || vm_name || vm0409 || Virtual machine name || ||<-3> '''Vagrant Generic Parameters''' Applicable only if ''instance=generic'' || || vh_name || vh01 || Virtual host hostname || || vh_fqdn || vh01.softxs.ch || Virtual host fully-qualified hostname || || vm_ip || 192,168.4.9 || Internal IP address of VM || || vm_ssh_port || 4009 || Port number for SSH acces || || vm_name || vm0409 || VM hostname || || vm_int_name || vm0409.vh01 || VM internal hostname || || vm_int_fqdn || vm0409.vh01.softxs.ch || VM fully qualified internal hostname || || vm_ext_name || vm0409vh01 || VM public hostname || || vm_ext_fqdn || vm0409vh01.softxs.ch || VM fully-qualified public hostname || |
Capistrano Deployment
Introduction
This page describes how Capistrano is used for:
- The V2 deployment git tree used to store and manage V2 and MAPS deployment configurations
- Capistrano customization
- VM setup and provisioning
- Application deployment
- Example deployments
V2 Deployment Git Tree
Capistrano Customization
Capistrano Custom Command Line Parameters
Parameter Name
Example Value
Description
app
maps
MAPS application
v2p0
V2 application
vagrant
Virtual machine setup/provisioning
site
proto
Prototype instance of V2 and MAPS
v2
V2 virtual machine for vagrant provision
instance
zg-3.softxs.ch
Example MAPS instance: v2.softxs.ch/maps
zg-3.softxs.ch
Example v2p0 instance: v2.softxs.ch/v2p0
zg-3.softxs.ch-tn
Example v2p0 instance: v2.softxs.ch/v2p0-tn
vor.softxs.ch-4010
Example v2p0 instance: localhost:4010 on AH laptop
generic
Generic instance, must set vh and vm
vh
1
Virtual host specified
vm
192.168.4.9
Internal IP address of virtual host
Capistrano Deployment Variable
Capistrano Variable Name
Typical Value
Description
Source Control Checkout
scm_user
alan
User for git checkout on git server
scm
git
Source control system
repository
alan@git.softxs.ch:/home/git/gitroot/v2p0.git
Git repository
branch
master
Branch to install
Target Machine
deploy_to
/v01/local/www/rails/v2p0-app
Deploy path on target server
rails_env
production
Rails environment. Typically only production
user
v2
User on target server
group
www
Group on target server
current_path
/v01/local/www/rails/v2p0-app/current
Current path on target server
release_path
/v01/local/www/rails/v2p0-app/releases/20130717103024
Release path on target server
current_release
/v01/local/www/rails/v2p0-app/releases/20130613060901
Currently running release (before installation)
Vagrant Target Machine Applicable only if app=vagrant, and site=v2
user
vagrant
Vagrant user on virtual host server
vh_fqdn
vh01.softxs.ch
Virtual host fully-qualified hostname
vh_home
/home/vms/vm0409
Path to VM on virtual host server
vm_box
lucid64_v2base2
Name of virtual box (instance) to install
vm_name
vm0409
Virtual machine name
Vagrant Generic Parameters Applicable only if instance=generic
vh_name
vh01
Virtual host hostname
vh_fqdn
vh01.softxs.ch
Virtual host fully-qualified hostname
vm_ip
192,168.4.9
Internal IP address of VM
vm_ssh_port
4009
Port number for SSH acces
vm_name
vm0409
VM hostname
vm_int_name
vm0409.vh01
VM internal hostname
vm_int_fqdn
vm0409.vh01.softxs.ch
VM fully qualified internal hostname
vm_ext_name
vm0409vh01
VM public hostname
vm_ext_fqdn
vm0409vh01.softxs.ch
VM fully-qualified public hostname
Capistrano Custom Tasks
Task Name
Description
Top-Level Tasks
setup_env
Setup the application, site and instance settings for the installation
show_env
Display installation settings
setup_app_symlink
Setup application symlink, automatically called after deploy:setup
upload_database_yml
Install database.yml file
Deployment Tasks
deploy:populate
Pupulate application database (rake db:populate)
deploy:provision
Provision VM for application.
deploy:restart
Restart application (by touching tmp/restart.txt)
deploy:seed_fu
Seed the application database (rake db:seed_fu)
deploy:seed_fu_without_access_control
Seed V2 application database (rake db:seed_fu_without_access_control...
VM Provisioning Tasks
vagrant:setup
Setup Vagrant VM (create VM home dir and install Vagrant file)
vagrant:start
Start Vagrant VM (vagrant up)
vagrant:status
Display status of Vagrant VM
vagrant:stop
Stop Vagrant VM (vagrant halt)
VM Setup and Provisioning
to be completed
Application Deployment
Specific Instance Deployment
Generic Instance Deployment
Example Deployments
Example: Specific Development Instance
- Install git tree by hand
- Using webbrick as web server
- Capistrano to install site/instance specific files
- Can optionally run bundle and rake tasks
Example: Specific Production Instance
- Install git tree by hand
- Using pre-configured APache virtual host as web server
- Capistrano to install everything
- Setup of target environment: Mix of hand and automated steps
- Local git checkout and installation on server
- RRun bindle and rake tasks
Example Command Lines
- Install MAPS on zg-3.softxs.ch server:
cap -s app=maps -s site=proto -s instance=zg-3.softxs.ch \ deploy:setup deploy deploy:migrate deploy:start
- Install V2 on zg-3.softxs.ch server:
cap -s app=v2p0 -s site=proto -s instance=zg-3.softxs.ch \ deploy:setup deploy deploy:migrate deploy:seed_fu_without_access_control deploy:start
Example: Generic Production Instance
- Creating VM on virtual host
- Provisioning VM on virtual host
- Including creation of Apache virtual host
- Application installation
Note that DMS (re-)configuration is not included, this must be prepared separately, typically using Puppet. See:
Example Command Lines
- Setup a new VM and install V2 on it
- The virtual host for the MV is vh01.softxs.ch
- The new VM will have an internal IP address of 192.168.4.9
- The virtual hostname for accessing the application will be vm0401vh01.softxs.ch, which must be defined in advance in DNS
cap -v -s app=vagrant -s site=v2 -s instance=generic -s vh=1 -s vm=192.168.4.9 vagrant:setup vagrant:start cap -v -s app=v2p0 -s site=proto -s instance=generic -s vh=1 -s vm=192.168.4.9 deploy:provision cap -v -s app=v2p0 -s site=proto -s instance=generic -s vh=1 -s vm=192.168.4.9 \ deploy:setup deploy bundle:install deploy:migrate deploy:populate deploy:start