Setting up development environment

Setting up a Yoda development environment is easy, you only need the following:

On GNU/Linux or macOS you also need:

The guide below will deploy an ‘allinone’ instance (all functional roles in one virtual machine) with the default configuration.

  1. Clone the Yoda repository and checkout the development branch:
    git clone https://github.com/UtrechtUniversity/yoda.git
    cd yoda
    git checkout development
    
  2. Configure the virtual machines for development:

If you are using VirtualBox, open the Vagrantfile in an editor and change the DEFAULT_VAGRANT_PROVIDER line near the top of the file so that it uses VirtualBox:

ENV['VAGRANT_DEFAULT_PROVIDER'] = "virtualbox"

Then use Vagrant to create the virtual machine (this applies to both VirtualBox and Libvirt):

vagrant up
  1. On a Windows host first SSH into the Ansible controller virtual machine (skip this step on GNU/Linux or macOS):
    vagrant ssh controller
    cd ~/yoda
    

    On a GNU/Linux or macOS host make sure the SSH keys have the right permissions (skip this step on Windows):

    chmod 0600 ~/yoda/vagrant/ssh/vagrant
    
  2. Deploy Yoda to the virtual machines:
    ansible-galaxy collection install -r requirements.yml
    ansible-playbook -i environments/development/allinone/ playbook.yml
    
  3. Add following hosts to /etc/hosts (GNU/Linux or macOS) or %SystemRoot%\System32\drivers\etc\hosts (Windows):
    192.168.56.10 portal.yoda.test
    192.168.56.10 data.yoda.test
    192.168.56.10 public.data.yoda.test
    192.168.56.10 public.yoda.test
    192.168.56.10 eus.yoda.test
    192.168.56.10 datacite-mock.yoda.test
    192.168.56.10 sram-mock.yoda.test
    
  4. Provision Yoda with test data:
    ansible-playbook -i environments/development/allinone/ test.yml
    
  5. [OPTIONAL] Provision Yoda with Zabbix agent and monitoring scripts:

    Configure Zabbix server in environments/development/allinone/group_vars/allinone.yml and make sure a Zabbix server is running on this address, you could use a Zabbix appliance in Virtualbox.

     zabbix_server: 192.168.56.20
    

    Run the Zabbix playbook

     ansible-playbook -i environments/development/allinone/ zabbix.yml
    

Upgrading your Yoda development environment

Upgrading the Yoda development environment to the latest version can be done by running the Ansible playbooks again.

  1. On a Windows host first SSH into the Ansible controller virtual machine (skip this step on GNU/Linux or macOS):
    vagrant ssh controller
    cd ~/yoda
    
  2. Upgrade Ansible scripts:
    git pull
    
  3. Upgrade Yoda development environment:
    ansible-playbook -i environments/development/allinone/ playbook.yml
    

Development environment test users and data

When you have set up an Yoda development environment and provisioned it with test data the following users are created:

User Role
viewer Viewer with read only access to research groups
researcher Researcher with read / write access to research groups
groupmanager Groupmanager with user management rights on research groups
datamanager Datamanager of the research groups
technicaladmin Technical administrator with rodsadmin access

Password for all test users is test.

In research group research-initial a folder testdata is created with some example data.

Surf development environment

Surf uses the following setup:

  • Portal server: runs Yoda portal, iRODS iCAT server (provider), iCAT database and EUS
  • WebDAV server: runs DavRODS and public server, as well as iRODS resource server (consumer)
  • Resource server: additional iRODS resource server

To deploy it on local VMs, add the following entries to your hosts file:

# Surf Yoda test
192.168.56.20 portal.surfyoda.test
192.168.56.21 data.surfyoda.test
192.168.56.21 public.data.surfyoda.test
192.168.56.21 public.surfyoda.test
192.168.56.20 eus.surfyoda.test
192.168.56.22 resource.surfyoda.test

And run the following commands in the root of the Yoda repository:

cp vagrant/environment/surf/Vagrantfile .
vagrant box update
vagrant up
ansible-playbook -DK -i environments/development/surf playbook.yml