Git Product home page Git Product logo

irida-container's Introduction

IRIDA Container and deployment

The repository contains everything needed to build a container for IRIDA and deploy to a cloud resource. Example deployments are provided in the ./deployment folder for various destinations. For production use, it is recommended to create your own deployment recipe using the terraform modules provided in ./desinations. Terraform is the deployment managment software used for all deployment destinations.

To install terraform, check that your systems package manager provides it or download it from here.

IRIDAs default username and password is admin and password1 respectively.

See the module documentation for more information on this deployments capabilities and customisability.

Run local

See deployment/docker/ for instructions.

Deploy to cloud

Several terraform destinations have been configured. Select one from the ./deployment/ folder that you wish to use.

AWS

See deployment/aws/ for instructions.

Azure

TODO

Kubernetes

All cloud deployments include a dashboard server that provides administrative control of the cluster. To access it, install kubectl and run kubectl proxy in a separate terminal. Visit here to access the dashboard.

To check the state of the cluster run kubectl describe node. To restart a deployment run kubectl rollout restart -n irida deployment <deployment name>.

Existing Kubernetes cluster

Configure the Kubernetes terraform provider and deploy the ./destinations/k8s module.

Existing Nomad cluster

Configure the Nomad terraform provider and deploy the ./destinations/nomad module.

Build container

To build the containers, ensure you have buildah, docker, terraform, and ansible-playbook installed and configured. Ensure docker can be run without root privileges.

You do not need to build the containers to deploy an instance of IRIDA. Rebuilding the container is only needed if you want to customise them. There are pre-built containers already published to docker hub that work for most use cases.

Run ./irida.playbook.yml to build the container. Run ./buildah_to_docker.sh to push the built containers to your local docker instance for testing.

Project layout

Container generation

Buildah and ansible are the tools used to generate the containers. The relevant paths are:

  • ./roles - Ansible roles applied to the container
  • ./irida.playbook.yml - Run this to begin building the container
  • ./irida - IRIDA sub repository, initialise it by running git submodule update --init
  • ./buildah_to_*.sh - Push the built container to the local docker daemon or docker hub
  • ./vars.yml - Various configuration options for the container build process. Also imported by the deployment recipes.

Deployment

Terraform is used to deploy the various resources needed to run IRIDA to the cloud provider of choice.

  • ./destinations - Terraform modules responsible for deployment into the various providers
  • ./deployment - Usage examples for the destination modules

irida-container's People

Contributors

innovate-invent avatar

Stargazers

 avatar

Watchers

 avatar  avatar

irida-container's Issues

Document automatic fetch of tool-list.yml

It will attempt to execute docker locally to download the irida container and extract its galaxy tool dependencies. If docker is not available, or this step fails in some way, you can manually provide the file by placing it in the folder you are executing terraform from. Terraform is looking for the file at "${abspath(path.root)}/tool-list.yml" where "path.root" is the folder with the root terraform module. The root module being the folder where you are executing terraform.

You will need to provide this file to the CI for every execution as the deployment will only generate it once.

To get a copy of the file run

docker run --rm --user $(id -u):$(id -g) -v $PWD:/mnt brinkmanlab/irida-app cp /etc/irida/tool-list.yml /mnt/tool-list.yml

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.