name: inverse layout: true class: center, middle, inverse
# Galaxy Installation with Ansible
.footnote[Tip: press `P` to view the presenter notes] ??? Presenter notes contain extra information which might be useful if you intend to use these slides for teaching. Press `P` again to switch presenter notes off Press `C` to create a new window where the same presentation will be displayed. This window is linked to the main window. Changing slides on one will cause the slide to change on the other. Useful when presenting. --- ### <i class="far fa-question-circle" aria-hidden="true"></i><span class="visually-hidden">question</span> Questions - How does it all connect? - What steps will we go through? --- ### <i class="fas fa-bullseye" aria-hidden="true"></i><span class="visually-hidden">objectives</span> Objectives - Get a high-level overview of a Galaxy server setup --- ## Install PostgreSQL & Galaxy extensions ![Graph showing a Postgres DB](../../images/ansible-galaxy-intro-0.png) ??? - The first step of a Galaxy deployment is the database. - This is the foundation of everything. --- ## Install Galaxy & Attach Storage ![Galaxy is now attached to the DB. uWSGI, storage, and compute are attached to Galaxy](../../images/ansible-galaxy-intro-1.png) ??? - Galaxy is deployed, and attached to the database. - Next, UWSGI is setup to run the Galaxy app. - Storage is attached to Galaxy for storing data. - And lastly compute is attached to Galaxy and the storage. --- ## Configure NGINX ![NGINX is added to proxy uWSGI](../../images/ansible-galaxy-intro-2.png) ??? - Next, nginx is attached to UWSGI to proxy connections and speed up access. --- ## Configure Job Handlers ![Job Handlers are added, between Galaxy and the Compute](../../images/ansible-galaxy-intro-3.png) ??? - Job handlers are configured and deployed with the app. - These connect to the compute and manage jobs. --- ## Install & Configure Slurm ![Slurm is attached to the handlers](../../images/ansible-galaxy-intro-4.png) ??? - Slurm is a much more intelligent resource manager than Galaxy. - The job handlers are configured to connect to Slurm. - Slurm deployment is explained in a separate tutorial. --- ## Connect CVMFS & Reference Data ![CVMFS is attached to storage + compute + galaxy](../../images/ansible-galaxy-intro-5.png) ??? - CVMFS is deployed. - Galaxy is configured to read data from CVMFS. - Compute is configured to access it as well for jobs that need reference data. --- ## Setup Remote Compute ![Remote compute site, with Pulsar and compute is attached to the job handlers](../../images/ansible-galaxy-intro-6.png) ??? - Lastly, we can scale Galaxy further with remote compute. - Pulsar connected at a remote site will handle this. --- ## Major Initial Decisions * Where to install Galaxy * Where to store Galaxy datasets * Database location ??? - These are the major initial decisions you will face. - Where to install Galaxy, what servers or VMs do you have available? - Where to store the data? - Do you have enough space for your users? - Where to reliably store the database? --- ## Where to install Galaxy * Must be at same path on cluster - more on this in cluster sessions ??? - Galaxy should be installed somewhere that is available across the cluster. - We'll cover this in detail in the lesson. --- ## Where to store Galaxy datasets * Must be at same path on cluster * Consider future scalability ??? - Where should data be stored? - Do you have network-attached storage available? - It must be available to the entire cluster where compute happens. --- ## Database location * Fast local, reliable storage * Consider future scalability ??? - The database server should be very reliable. - It does not need so much disk space, but consider future scalability. --- ## Basic best practices * Run as an **unprivileged user** * When possible, separate *code* from *data* and *configs* * Write protect code and configs .left[All of these practices are supported in the [galaxyproject.galaxy][galaxy-role] Ansible role and covered in the [Galaxy Installation with Ansible][ansible-galaxy-tutorial] tutorial!] [galaxy-role]: https://galaxy.ansible.com/galaxyproject/galaxy [ansible-galaxy-tutorial]: /archive/2021-06-01/topics/admin/tutorials/ansible-galaxy/tutorial.html ??? - Here are the basic best practices. - Run without privileges so if someone gains access they are limited in what they can do. - Ensure the code and configuration are separate. - If someone manages to act as the galaxy user, this will prevent them from changing galaxy's behaviour. - All of these best practices are built into the ansible role. --- ### <i class="fas fa-key" aria-hidden="true"></i><span class="visually-hidden">keypoints</span> Key points - Everything can be accomplished with Ansible roles from Galaxy - You can easily deploy a base Galaxy, or one with more features. --- ## Thank you! This material is the result of a collaborative work. Thanks to the [Galaxy Training Network](https://wiki.galaxyproject.org/Teach/GTN) and all the contributors!
This material is licensed under the
Creative Commons Attribution 4.0 International License