Deployment server

From Wikitech

Deployment servers are servers used for deployment of software using Scap and scap3.

Service

As of April 2024 the deployment servers are:

There is also a service alias deployment.eqiad.wmnet which always points to the currently active deployment (Yes, this shortcut does the right thing, despite having "eqiad" in its name).

Runbooks

How to setup a deployment server in a cloud VPS project

  • create a new cloud VPS instance of size m1.small (or m1.medium if you will be deploying many scap3 projects)
  • in Horizon apply the puppet 'role::deployment_server' on the instance
  • Create and attach an extra storage volume on /srv to hold the software you are going to deploy
  • in the operations/puppet repo in ./hieradata/labs/yourproject/common.yaml or in Horizon add Hiera key/value pairs:
has_lvs: false
has_tls: false
mcrouter::has_ssl: false
mcrouter::port: 11213
mcrouter::shards:
  wancache:
    eqiad:
      shard01:
        host: deployment-memc04
        port: 11211
      shard02:
        host: deployment-memc05
        port: 11211
      shard03:
        host: deployment-memc08
        port: 11211
profile::kubernetes::deployment_server::git_group: wikidev
profile::kubernetes::deployment_server::git_owner: trebuchet
profile::mediawiki::apc_shm_size: 128M
profile::mediawiki::deployment::server::rsync_host: deploy1001.devtools.eqiad1.wikimedia.cloud
profile::mediawiki::php::enable_fpm: true
profile::mediawiki::php::php_version: '7.2'
profile::rsyslog::kafka_shipper::kafka_brokers: []
profile::services_proxy::ensure: absent
profile::services_proxy::services:
  dummy:
    hostname: dummy.example.net
    localport: 9999
    port: 9999
    scheme: https
    timeout: 600
redis::shards:
  sessions:
    eqiad:
      shard01:
        host: 172.16.5.76
        port: 6379
      shard02:
        host: 172.16.5.17
        port: 6379
      shard03:
        host: 172.16.5.12
        port: 6379
      shard04:
        host: 172.16.5.2
        port: 6379
scap::dsh::groups:
  librenms:
    hosts:
    - deployment-netbox.deployment-prep.eqiad1.wikimedia.cloud
  mediawiki-api-canaries:
    hosts: []
  mediawiki-appserver-canaries:
    hosts:
    - deployment-mediawiki-07.deployment-prep.eqiad1.wikimedia.cloud
  mediawiki-installation:
    hosts:
    - deployment-jobrunner03.deployment-prep.eqiad1.wikimedia.cloud
    - deployment-mediawiki-09.deployment-prep.eqiad1.wikimedia.cloud
    - deployment-mediawiki-07.deployment-prep.eqiad1.wikimedia.cloud
    - deployment-snapshot01.deployment-prep.eqiad1.wikimedia.cloud
    - deployment-deploy01.deployment-prep.eqiad1.wikimedia.cloud
    - deployment-deploy02.deployment-prep.eqiad1.wikimedia.cloud
    - deployment-mwmaint01.deployment-prep.eqiad1.wikimedia.cloud
    - deployment-mediawiki-parsoid10.deployment-prep.eqiad1.wikimedia.cloud
  restbase-betacluster:
    hosts:
    - deployment-restbase01.deployment-prep.eqiad1.wikimedia.cloud
    - deployment-restbase02.deployment-prep.eqiad1.wikimedia.cloud
  webperf:
    hosts:
    - deployment-webperf11.deployment-prep.eqiad1.wikimedia.cloud
scap::sources:
  gerrit/gerrit:
    repository: operations/software/gerrit
  gervert/deploy:
    repository: operations/software/gerrit/tools/gervert/deploy
  phabricator/deployment:
    repository: phabricator/deployment
  • adjust the deployment::server::rsync_host value to a host in your project
  • adjust scap::sources to contain the scap3 projects you will be deploying
  • run puppet (a couple times)
  • run sudo -u trebuchet /usr/bin/scap deploy --init inside each of the repos under /srv/deployment/, so for example in /srv/deployment/gerrit/gerrit and so on but NOT in /srv/deployment/ directly.
  • run git init in /srv/deployment
  • run puppet again

See also