DevOps for Apache Airavata

Problem Statement

In previous work, IDE Integration of Docker and Vagrant tools were explored. In the final report, there are three ways of Local Provisioning for development & Testing suggested -

For these three approaches, new tools like Vagrant and Docker are heavily used. Explore and suggest best practices of Vagrant and Docker Development in IDE. And explore and suggest best practices of Debugging deployed code base in Vagrant box and Docker container.

Possible Solutions

For Vagrant development in IDE following tool is considered -

Feature Options
Eclipse IDE Eclipse Vagrant Tooling
IntelliJ Idea IDE Jetbrains Vagrant Plugin

For Docker Development in IDE following tool is considered -

Feature Options
Eclipse IDE Eclipse Docker Tooling
IntelliJ Idea IDE Jetbrains Docker Integration

For debugging deployed code base in Vagrant box following approaches are considered -

For debugging deployed code base in Docker Container following approaches are considered -

Solution Evaluations

For Vagrant development in IDE

Eclipse Plugin - Eclipse Vagrant Tooling

Eclipse Vagrant Tooling

Source Image: marketplace.eclipse.org/…/eclipse-vagrant-tooling

IntelliJ Idea Plugin - Jetbrains Vagrant Plugin

Eclipse Vagrant Tooling

Source Image: plugins.jetbrains.com/plugin/7379-vagrant

For Docker Development in IDE

Eclipse Plugin - Eclipse Docker Tooling

Eclipse Vagrant Tooling

Source Image: marketplace.eclipse.org/…/eclipse-docker-tooling

IntelliJ Idea Plugin - Jetbrains Docker Integration

Eclipse Vagrant Tooling

Source Image: plugins.jetbrains.com/plugin/7724-docker-integration

For debugging deployed code base in Vagrant box

Remote debug configuration in an IDE

Image Source: confluence.jetbrains.com/…/Configuring+a+Vagrant+VM+for+Debugging

For debugging deployed code base in Docker Container

Conclusion

In short term, we recommend Ansible Playbooks on top of Vagrant Box, and for this the Vagrant IDE plugin and shared directory based debugging practices suits best. This is a minimal effort solution, fits well in the current development life cycle of Airavata and easier to set up.

In long term, if Airavata is to be built ground up using Docker containers, we recommend Dockerizing Airavata Microservices, and for this Docker IDE plugin and one of five different ways of debugging options are available depending on how production architecture of logging mechanism is setup. This is a good solution, with larger long term benefits in terms of saving resource consumption and time, but this will need some initial time investment in order to dockerize/ containerize all Airavata microservices.

Associated Discussion(s)

Associated Issue(s) on GitHub

Associated Code(s) on GitHub

For evaluating the Vagrant and Docker tool integration with IDE and Debugging locally deployed Airavata code base, I am considering already in-progress features by fellow classmates of Spring17-Airavata-Courses -

References used for study

[For Vagrant development in IDE]

[For Docker Development in IDE]

[For debugging deployed code base in Vagrant box]

[For debugging deployed code base in Docker Container]