Skip to content
Anuj Bhandar edited this page Mar 10, 2017 · 3 revisions

Apache Airavata Welcome to Airavata Courses DevOps repository Wiki

Project Submission Report

Problem Statement

DevOps for Airavata:

Come up with DevOps solutions including but not limited to Infrastructure provisioning, Continuous integration and Continuous deployment which is cloud agnostic in nature. The solution offered should suit the distributed nature of Airavata deployments enabling the open source developer to develop, test and deploy new code with ease.

Possible Solutions

DevOps for Airavata can be divided into following subcategories:

  • Cloud Provisioning:
    • This is an important part of DevOps solution, which will aid to build, manage and keep account of cloud infrastructure. As Airavata deployments span multiple cloud vendors, it was important to use an infrastructure-as-code which is cloud agnostic in nature, Hence we have compared two tools, namely, terraform and Ansible. This Blog post will provide a detailed overview of the comparison, Blog by Anuj Bhandar
    • The infrastructure-as-code, mainly terraform, is already pushed to the repository, this wiki page will describe the folder structure and instructions to run them. code isntructions
  • Issue Tracking: For every development task – bug, feature request, whatever – we create a unique issue to track it. Long-running projects have an “epic” issue that all the discrete task issues link to. Obviously all this is best practice anyway, mostly because you can use each issue’s unique ID to track the change from concept to deployment. Having a single reference point makes it easier to track the state of work. As you may have guessed, we use JIRA for this purpose.
  • Continuous Integration: Continuous integration (CI) is the process of automatically building and testing your software on a regular basis. How regularly this occurs varies, Testing the code before it goes to the main repository is an important aspect of DevOps lifecycle. Here, we initially setup CI using Travis due to its compatibility with AWS, but as the Airavata uses multiple cloud vendors for deployment, we needed a generic tool which will span all the clouds and give more fine grain control over the steps in continuous integration, hence Jenkins, we have deployed Jenkins on JetStream (OpenStack cloud), which will manage our CI needs and also help with continuous deployments. Though the server is up and running, but is still in infant stage. Will soon write a wiki or blog post describing the architecture and environment setup.
  • Continuous Deployment: Continuous delivery (CD) is the logical next step from continuous integration. If your tests are run constantly, and you trust your tests to provide a guarantee of quality, then it becomes possible to release your software at any point in time. As Airavata middleware is also a SaaS offering, CD pipeline is of paramount importance. The Initial setup used Travis CI as the hook to invoke CodeDeploy in Amazon web services, but as mentioned earlier, we must ensure that the tools used are agnostic, hence a naive implementation is made available using Jenkins workflows. The current setup is capable of building, testing and deploying code on both AWS and Jetstream, but is still in infancy, after completion, a detailed blog post will be made available.

Conclusion

It is too soon to conclude because we are still developing our solution to encopass the complete DevOps lifecycle.

Wiki for Code Instructions

refer this page for code structure and running instructions.

My Git Commits for this Project

Anuj Bhandar's Commit History : https://github.com/airavata-courses/spring17-devops/commits?author=anujbhan

My Discussions on the Apache Airavata Developer List

Anuj Bhandar's Dev list activity: