Dropcat - the configuration files
In a series of blog posts I am going to present our new tool for doing drupal deploys. It is developed internally in the ops-team in Wunderkraut Sweden , and we did that because of when we started doing Drupal 8 deploys we tried to rethink how we mostly have done Drupal deploys before, because we had some issues what we already had. This is part 2.
The idea with dropcat is that you use it with options, or/and with configuration files. I would recommend to use it with config files, and with minor settings as options.
You could use just use a default settings file, that should be dropcat.yml, or as in most cases you have one config file for each environment you have – dev, stage, prod etc.
You could use an environment variable to set which environment to use, this variable is called DROPCAT_ENV. To use prod environment you could set that variable in the terminal to prod with:export DROPCAT_ENV=prod
Normally we set this environment variable in our jenkins build, but you could also set it as an parameter with dropcat like:dropcat backup --env=prod
That will use the dropcat.prod.yml file
By default dropcat uses dropcat.yml if youi don't set an environment.
Thing will be more in the next blog posts, but first we now look into a minimal config file, in our root dir we could hav a dropcat.yml file with this config:
app_name: mysite
local:
environment:
tmp_path: /tmp
seperator: _
drush_folder: /home/myuser/.drush
remote:
environment:
server: mytarget.server.com
ssh_user: myuser
ssh_port: 22
identity_file: /home/myuser/.ssh/id_rsa
web_root: /var/www/webroot
temp_folder: /tmp
alias: mysite_latest_stage
site:
environment:
drush_alias: mysitestage
backup_path: /backup
original_path: /srv/www/shared/mysite_stage/files
symlink: /srv/www/mysite_latest_stage/web/sites/default/files
url: http://mysite.com
name: mysitestage
mysql:
environment:
host: mymysql.host.com
database: my_db
user: my_db_user
password: my_db_password
port: 3306
The settings is grouped in a way that should explain what they are used for – local.environment is from where we deploy, remote.environment is to where we deploy. site.environment is for drush and symlinks (we use for the files folder), mysql.environment, is for… yeah you guessed correctly – mysql/mariadb.
appname
This is the application name, used for creating a tar-file with that name (with some more information, like build date and build number).
local
These are the settings from where we deploy, it could be localy, it could be a build server as jenkins.
tmp_path
Where we temporary store stuff.
Seperator
Used for i name of foler to deploy as seperator like myapp_DATE
drush_folder
Where drush-settings from you deploy from, normaly in your home folder (for jenkins normaly: /var/lib/jenkins/.drush), and this is also to which path the drush alias is saved on dropcat prepare.
Remoteserver
The server you deploy you code too.
ssh_user
User to use with ssh to your remote server
ssh_port
Port used to use ssh to your server
identity_file
Which private ssh-key to use to login to your remote server
web_root
Path to which your site is going to be deployed to.
temp_folder
Temp folder on remote server, used for unpacking tar file.
alias
Symlink alias for you site
Sitedrush_alias
Name of you drush alias, used from 'local' server. Drush alias is created as a part of dropcat prepare.
backup_path
Backup path on ”local” server. Used by dropcat backup
original_path
Existing path to point a symlink to – we use for the files folder
symlink
Symlink path that points to original_path
url
URL for you site, used in drush alias
name
Name of site in drush alias.
Mysqlhost
name of db host
database
Database to use
user
Database user
password
password for db user to host
port
Port to use with mysql
We are still on a very abstract level, next time we will go through that is needed in an normal jenkins-build.