V2 Deployment Checklist

V2Master | V2Deployment

Introduction

DNS Name Configuration

Configure DNS Names

  1. Configure new DNS names in the Puppet server mgt.vh01.softxs.ch.
    • ssh -p 10104 root@loki
      cd /etc/puppet/modules/bind9/files
      
      # -- Edit the following two files
      
      vi master/zones/all/{domain_name}.
      # Update the 'Serial' with today's date and the sequence number, normally '01'.
      :x
      
      vi master/generic/all/{domain_name}.
      # Add CNAME record for the sub-domain pointing to the host server
      :x

Test DNS Names

  1. Make sure the new DNS name is defined on the all following DNS server:
    1. zg-1.softxs.ch - Public server
    2. zg-3.softxs.ch - Public server
    3. loki.softxs.ch - LU DMZ
    4. odin.softxs.ch - LU DMZ
    5. modi.softxs.ch - LU Internal network

Setup Virtual Machine & Virtual Host

  1. Define VM Vagrantfile generation
  2. Define VM configuration
  3. Define Virtual Host configuration
  4. Start new VM
  5. Log into VM and perform initial OS update and Puppet agent run
  6. Setup SSH login certificate

Configuration for Vagrantfile Generation

  1. Configure the Vagrant generation in the Puppet server mgt.vh01.softxs.ch.
    • ssh -p 10104 root@loki
      cd /etc/puppet/modules/manifests
      vi nodes.pp
      
      # Find the node definition for the host server (zg-1, loki, odin, etc.)
      # Add a v2:server::vm definition, similar to the following:
      
      node "zg-3.softxs.ch" { # host VM
        ...
        create_resources( v2_server::vm, { # VM definition
            ...
            'v0402' => {
                vm_hostname   => 'v0402',
                vm_fqdn       => 'v0402.vh03.softxs.ch',
                vm_box        => 'precise64_rails',
                vm_memory     => 3072,
                vm_ip         => '172.16.4.2',
                vm_netmask    => '255.240.0.0',
                vm_ssh_port   => 20402,
                vm_synched_folders => {
                  'vagrant'  => { vm_dir => "/vagrant",       host_dir => "." },
                  'data'     => { vm_dir => "/data", host_dir => "/v01/data/v0402",
                                  owner => "www-data", group => "v2", mount_options => ["dmode=775", "fmode=764"],
                  },
                  'backup'   => { vm_dir => "/backup", host_dir => "/v01/backup/local/v0402",
                                  owner => "www-data", group => "v2", mount_options => ["dmode=775", "fmode=764"],
                  },
                },
            },
        ...
  2. The critical parameters are: (See V2VirtualServers for example configurations and the setup conventions)

    1. Hostname
    2. Fully qualified domain name (fqdn)
    3. Virtual bas box
    4. Memory
    5. IP address
    6. Port number
    7. Paths for the /data & /backup directories

  3. Wait for puppet agent to run on the host machine to generate the new Vagrantfile.

    1. Or run it by hand:
      • puppet agent --onetime --no-daemonize --verbose
    2. This will also create a new VM directory on the host machine:
      • /home/vagrant/vms/{name}

        Where name is the VM new host name

  4. Register the new VM in the Wiki page: V2VirtualServers

Define a Puppet Node for the VM

  1. Define a new puppet node for the vm, named with the VM's fully qualified domain name:

    • node "v0402.vh03.softxs.ch" { # VM FQDN
        class { 'puppet_agent': period => 10 }
        class { 'postfix_satellite': node_name => $name, mailname => 'softxs.ch', relayhost => 'smtp.softxs.ch' }
        include apache
        include www
        include mysql
        include passenger
        class { 'rails_user': user => 'v2' }
      
        # ..place for vhost definition (see next section)..
      }

Define a Virtual Host on the VM

  1. Add an apache::vhost definition to the VM node:

    • node "v0402.vh03.softxs.ch" { # VM node
        ...
        apache::vhost {'trial.softxs.ch':
          template => 'apache/vhost-v2.conf.erb',
          docroot => '/home/v2/rails/trial.softxs.ch',
          priority => 25,
          servername => 'trial.softxs.ch',
          options => '-Indexes',
          subvhosts => {
            'trial1' => { },
            'trial2' => { },
        },
        ...
      }
  2. The subvhosts are used to define the relative paths for the individual applications

Start Virtual Machine

  1. As user vagrant on the host machine start the VM:

    • cd /home/vagrant/vms/{name} # Where 'name' is the new VM host name
      vagrant up # Starts the VM
  2. Log into the VM
    • vagrant ssh
  3. Perform an initial software update on the VM
    • su -
      apt-get update
  4. Perform an initial puppet agent run on the VM

    • puppet agent --onetime --no-daemonize --verbose
    • This should create a vhost, including
      1. Apache configuration files

Setup V2 User SSH Certificate

  1. In order to allow automatic login for application deployment, planc a
    • ssh -p {port} v2@{host}
    • Where
      • port is the SSH pot number defined in the VM's Vagrantfile

      • host is the base servers domain name

  2. Create a .ssh directory. As user v2 on the VM:

    • cd ~
      mkdir .ssh
      

Configure Reverse Proxy

Setup Data Partition

Setup V2 Deployment Instance

deploy.rb

settings.local.yml

database.yml

Email Secret Key

Home Page Setup

Deploy Initial V2 System

Capistrano Deployment

Test Local Login

Test Invitation & MAPS Login

Start Delayed Job Task

Register Application in MAPS

Test Outgoing Email

Configure & Test Incoming Email

Install V2 Configuration

Import Configuration

Import Data & Documents

End-to-End Test

Setup Backups

Setup Monitoring

Copyright 2008-2014, SoftXS GmbH, Switzerland