Keep database synced between computers in Trellis/Bedrock/Sage setup

Yup, that works great, thanks!
My updated triggers look like this now:

vault_file = File.join(ANSIBLE_PATH, 'group_vars', 'development', 'vault.yml')
vault_sites = YAML.load_file(vault_file)['vault_wordpress_sites']

# Vagrant Triggers
#
# If the vagrant-triggers plugin is installed, we can run various scripts on Vagrant
# state changes like `vagrant up`, `vagrant halt`, `vagrant suspend`, and `vagrant destroy`
#
# These scripts are run on the host machine, so we use `vagrant ssh` to tunnel back
# into the VM and execute things.
#
if Vagrant.has_plugin? 'vagrant-triggers'    
  wordpress_sites.each do |(name, site)|
    #
    # Get database credentials
    #
    site['env'].merge!(vault_sites[name]['env'])
    db_name  = site['env']['db_name']
    db_user  = site['env']['db_user']
    db_pass  = site['env']['db_password']
    #
    # Importing database
    #
    config.trigger.after [:up, :resume, :reload], :force => true do
      info "Importing databases"
      run_remote "mysql -u #{db_user} -p#{db_pass} #{db_name} < /srv/database/backups/#{db_name}.sql"
    end
    #
    # Exporting database
    #
    config.trigger.before [:halt, :suspend, :destroy], :force => true do
      info "Dumping databases"
      run_remote "mysqldump -u #{db_user} -p#{db_pass} #{db_name} > /srv/database/backups/#{db_name}.sql"
    end
  end
else
  puts 'vagrant-triggers missing, please install the plugin:'
  puts 'vagrant plugin install vagrant-triggers'
end
4 Likes