galaxyproject / training-material

A collection of Galaxy-related training material
https://training.galaxyproject.org
MIT License
294 stars 846 forks source link

GAT-next Improvements #2583

Closed hexylena closed 1 year ago

hexylena commented 2 years ago

These require nginx package changes:

Re-record next time

everything, tbh.

natefoo commented 2 years ago

Regarding the job conf, yes, we have converted it to a (standalone) YAML file on .org, this works now. For the admin training, putting it directly in galaxy.yml may be preferable as it's fewer steps.

I tested dependency resolvers and container resolvers as standalone YAMLs and added support for those in the galaxy role.

Dependencies are also supported under dependency_resolvers or dependency_resolution.resolvers in galaxy.yml. Pulsar supports dependency_resolvers.resolvers as well (I dropped support for the standalone file in the pulsar role since you can just specify it directly in the app YAML), although we don't use it in the training.

hexylena commented 2 years ago

awesome!!

natefoo commented 2 years ago

Couple more things:

natefoo commented 2 years ago

Maybe move job_conf.xml and job_metrics_conf.xml to their own "adding additional configs" tutorial that gets run right after ansible-galaxy?

hexylena commented 2 years ago

Should we create galaxy_user_name and galaxy_db_name vars to avoid duplication in postrgresqlobjects* and database_connection?

it's so early in the training, later it makes sense, but I worry about defining a variable in step like 1, and students thinking they have to define variables for everything (even if that's often best practice.)

hexylena commented 2 years ago

Maybe move job_conf.xml and job_metrics_conf.xml to their own "adding additional configs" tutorial that gets run right after ansible-galaxy?

I especially support that if we also mention tool data tables since I forgot that and needed to load a private genome and it took a while to re-figure out.

Maybe user_prefs too, that's pretty key these days.

natefoo commented 2 years ago

I worry about defining a variable in step like 1, and students thinking they have to define variables for everything (even if that's often best practice.)

There's definitely a balance. This mostly came up because I was recording the new video and realized how many times I pointed out having one canonical source of truth for everything, and then we don't do it in that case, heh.

hexylena commented 2 years ago

@natefoo and I discussed, we should aggressively cut down on the slide decks, at least on day 1. Some of them are just... not necessary, all the important/good information is in the tutorials after all.

slides action comments
DB cut we don't need to discuss sqlite or connection string formats, we have a table for that in the tutorial (or if we don't, we can), same with tuning parameters, this is documentation which isn't necessary for understanding "galaxy connects to a DB." and since we started including the good defaults, it's even less relevant. Install DB we mention and never touch again, not great.
systemd merge we should merge this into a tip box.
uwsgi cut :(
ephemeris keep they're good
cvmfs keep same
users groups quotes keep idk, it's on thin ice.
cluster computing merge
DB querying meh these are now basically gxadmin advertising. I don't find them very useful, and it could be covered in a tuto. That said they're already an auto-video, so, meh, keep?
monitoring idk there is so little information there, it's basically a showcase. Is that useful? Is that the best format to talk about monitoring?
natefoo commented 2 years ago

Because the + and - prefixes are hidden in diffs, they might be impossible to read for people with red/green colorblindness. In addition, at least one non-r/g-colorblind student mentioned difficulty seeing the color difference on their display. Can we add a switchable style for higher contrast and forchanging the diff colors entirely?

hexylena commented 2 years ago

Update job conf/pulsar tutorial for this amazing PR from @jmchilton that will save so many admins so much random pain. https://github.com/galaxyproject/galaxy/pull/12258

looks like we just need <tool class="local" destination="local" /> and then figure out what's needed for requires_galaxy

hexylena commented 2 years ago

We should add tusd, that's def going to be an improvement

hexylena commented 2 years ago

Do we want to teach admins to use git this year @natefoo @Slugger70 @martenson? \

natefoo commented 2 years ago

:+1: to git, also wow that git log -p magic, I was not even aware of. Seems worth setting up?

Slugger70 commented 2 years ago

I think that's a great idea. Especially the vault merging stuff which is always confusing..😁

On Tue, 30 Nov 2021, 04:43 Nate Coraor, @.***> wrote:

👍 to git, also wow that git log -p magic, I was not even aware of. Seems worth setting up?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/galaxyproject/training-material/issues/2583#issuecomment-981865199, or unsubscribe https://github.com/notifications/unsubscribe-auth/AANI3XUC3I5WHIMZBK4SSLDUOO3UBANCNFSM457AQARA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

hexylena commented 2 years ago

ok, time for a super quick git lesson then, that's a good improvement/addition for sure.

hexylena commented 2 years ago

More TUS: https://github.com/galaxyproject/galaxy/pull/13313

mvdbeek commented 2 years ago

Is it too late to switch to Gunicorn for web serving ? The mile-high view for the changes is in https://docs.galaxyproject.org/en/latest/admin/migrating_to_gunicorn.html#how-do-i-upgrade-my-instance-to-use-gunicorn. The individual documentation PRs are collected in https://github.com/galaxyproject/galaxy/issues/12257.

It shouldn't be a large change for production setups, you'd likely only need to change the actual python entry point for the web process and replace uwsgi_pass with proxy_pass.

hexylena commented 2 years ago

I'll start by saying I would love that! It would be really fantastic.

However. Given that:

I'm going to say it's too late :disappointed:

However: If you are willing to make a PR for it? I will absolutely consider re-recording that video. That's a lower bandwidth activity for me that might be possible.

It's great that the updates are easy from the Galaxy side, but it looks like ansible-galaxy is not updated at all, I still see references to mules and uwsgi which needs to be fixed first I guess. (here for example and in the tasks)

mvdbeek commented 2 years ago

That's fair, and I totally understand that you're strapped for time and energy. I'll think about it and check with @natefoo if it's realistic to get this done in the short term.

hexylena commented 2 years ago

Update miniconda role with galaxy one

hexylena commented 2 years ago

To summarise for others passing through: testing.xml, my_rules.py and map_resources.py all have to go under files/galaxy/... rather than templates/galaxy/...

hexylena commented 2 years ago

Track minimum ansible version, note it in metadata of tutorials. Currently ansible-galaxy says >=2.7 which is hilariously outdated.

natefoo commented 2 years ago

I wish the linter could determine the minimum ansible version, because I always think of it as I'm updating the role and then forget by the time I go to update the meta.

hexylena commented 2 years ago

from @fubar2

With cvmfs reference data, doesn't singularity need /cvmfs added as a path in job_conf.xml.j2 ? :

<param id="singularity_volumes">$defaults,/cvmfs:ro</param>

It works then, but before I added that, mappers always failed - unable to access the /cvmfs reference data It may be that I've broken something in removing lots of extra stuff - or nobody got around to testing with cvmfs reference data?

A more generic issue about singularity and cvmfs is noted at https://cvmfs.readthedocs.io/en/stable/cpt-configure.html#remounting-and-namespaces-containers, suggesting that -p is recommended for singularity so I also added:

<param id="singularity_run_extra_arguments"> -p </param>

Dunno if it makes any difference but...doesn't seem to be harmful.

Currently this is a bit of a sequencing issue, we cover singularity, then later cvmfs. I think that means cvmfs should come before singularity? maybe?

hexylena commented 2 years ago

from gtn feedback from

it would be useful if the hands-on gxadmin commands were in a copyable code block like they are in other tutorials – it really helps to be able to copy them with the single click. Also, the 'admin favourites' section could include the arguments for the functions listed, e.g. , for a bit more clarity

and

There is an "error" in the example code for the Galaxy/FTP portion of galaxyservers.yml. if you intend to use separate upload directories (with email addresses as the folder name) for each user - as the tutorial indicates will happen - then the current code (below) will result in the uploads going into the parent directory "/uploads" instead of "uploads/user_email" . # FTP ftp_upload_dir: /data/uploads ftp_upload_site: "{{ inventory_hostname }}" Instead the code should be (add a "/"): # FTP ftp_upload_dir: /data/uploads/ ftp_upload_site: "{{ inventory_hostname }}" Took me a while to work out why it was going into the wrong directory. Also - it should be stated that there may be a newer version of the playbook that could solve errors/conflicts with newer operating system versions than those used in the tutorial. Also suggest highlighting parts in the code examples which should be customized to your server environment if you are using this as a guide to setup your own installation (primarily directories where stuff is located).

lldelisle commented 2 years ago

I don't understand this ftp error. On my instance, I set it up without / (https://github.com/lldelisle/galaxyduboule-infrastructure/blob/17378097331db5cb6275ac906b47ac10c28bcccd/group_vars/galaxyservers.yml#L97-L98) (I am using release_21.01) and

$ ls -d /data/galaxy/uploads*/
/data/galaxy/uploads/
$ lsb_release -d
Description:    Ubuntu 20.04.3 LTS

Do you still have access to VMs from GAT so I can check how it is on one of them? However, if I remember corrrectly we already had an issue on this no? So maybe it is my instance which is weird.

hexylena commented 2 years ago

I haven't checked it in detail, just copied from the feedback. I vaguely remember a similar ftp complaint that we determined was a non-issue, but I didn't have time to dig out that issue. I'll look into it eventually :)

hexylena commented 2 years ago

https://github.com/galaxyproject/galaxy/issues/13687#issuecomment-1093020466 cover changing object store by user/group info in the mapping jobs to destinations (doesn't have to be a worked example, a tip box would be sufficient.)

hexylena commented 1 year ago

@Slugger70 @natefoo and I had a short discussion ahead of GCC planning

mvdbeek commented 1 year ago
  • No, we still can't do fall through dependency resolution 😭

What's that about ? Do we have an issue for that ?

hexylena commented 1 year ago

@natefoo can provide some more details there but in general it seems everyone using singularity is manually choosing which tools/versions are going to a singularity destination

And for most smaller galaxies we need something more like "run in the right container, if available, and if not run in the default container and pull in the conda dependencies"

mvdbeek commented 1 year ago

And that's not how it works ? I had it configured that way back when I was admin for a small instance and I switched to singularity (lot's of resolver related things changed since then, so it may not work anymore ...).

The order should be

If a container is resolved it'll take over, else conda is getting used.

mvdbeek commented 1 year ago

Oh, default container + conda dependencies, not just conda. I wasn't aware that's a thing. Is that going to build an image every time you run a tool, or is that mounting an existing conda env on disk and resolving dependencies in the image ?

hexylena commented 1 year ago

Sorry @mvdbeek I feel like we have this conversation once a year and every year I'm confused.

That sounds great if it's something we can use, that's going to work for local admins with their custom tools that may not have pre-mulled dependencies.

Or if it falls back to conda properly (even without the container) that's probably fine too. but I think in @natefoo and my discussion mounting was mentioned.

natefoo commented 1 year ago

It wouldn't build every time. I have an image I use for this here: https://github.com/natefoo/usegalaxy.org-legacy-environment

I believe what would be ideal is something like:

  1. Resolve a matching container and run it in that if available
  2. Resolve it in conda and run in a default container with conda mounted in if the deps are already installed in conda
  3. Build/mull an image if the deps are available in conda but not already installed
hexylena commented 1 year ago

I am sufficiently emotionally done with this issue so, we're closing it. If we really want any of the open items in the OP, we can reopen.