Skip to content

mirelaminkova/galaxy-fox-new

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

127 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Galaxy on FOX

PostgreSQL backup disable

Comment the backup of he DB in galaxyproject.postgresql/tasks/main.yml

		#- include_tasks: backup.yml
		#  when: postgresql_backup_dir is defined

OpenIdc

Place the backend (.py file) here:

	/galaxy/srv/galaxy/venv/lib/python3.6/site-packages/social_core/backends

The necessary changes to the authnz files (the files managing the authentication procedure) :

	/galaxy/srv/galaxy/server/lib/galaxy/authnz : psa_authnz.py
	/galaxy/srv/galaxy/server/lib/galaxy/authnz: managers.py

are made in the role lifeportal.customized in tasks/main.yml. These changes add the icons of the endpoints and add backends and backends names

Slurm (for submit host)

  • copy all the fox-slurm rpms from /cluster/staff/slurm/20.11.8 or latest/

  • install them : yum localinstall fox-slurm-*

  • copy all the *.conf files from /var/spool/slurmd/conf-cache from any fox login host to /etc/slurm/ on the galaxy server

  • edit the value of ControlMachine in the file /etc/slurm/slurm.conf like this : ControlMachine=los.fox.ad.fp.educloud.no

  • install munge with yum

  • copy the munge.key file from any fox login node to /etc/munge/

  • add slurm user to /etc/passwd - copy the line from any fox login node

  • copy the controll machine ip to /etc/hosts - los

      10.110.0.2	los los.fox
      10.111.0.2	los-mgmt los-mgmt.fox
      10.112.0.2	los-ib los-ib.fox
    
  • comment the line in

Mounting of directories

  • The directory /galaxy is a mounted directory from ESS aspasia.ad.fp.educloud.no:/fp/fox01/galaxy /galaxy nfs rw,bg,hard,intr,tcp,nfsvers=3
  • The directory /clusteris a mounted directory from FOX aspasia.ad.fp.educloud.no:/fp/fox01 /cluster nfs ro,bg,hard,intr,tcp,nfsvers=3

Real user setup

(https://docs.galaxyproject.org/en/master/admin/cluster.html?highlight=drmaa_external_killer#submitting-jobs-as-the-real-user)

Copy the python scripts which ec-galaxy runs as root

	external_chown_script.py
	drmaa_external_runner.py
	drmaa_external_killer.py

to

	{{ galaxy_server_dir}}/scripts/

Edit the file ec-galaxy

Manually create the file 'ec-galaxy' with the following content and put into /etc/sudoers.d/. The file will be inluded by the includedir statement in sudoers file

```
Defaults:ec-galaxy    !requiretty
ec-galaxy  ALL = (root) NOPASSWD: SETENV:  /cluster/galaxy-data-prod/scripts/drmaa_external_runner.py
ec-galaxy  ALL = (root) NOPASSWD: SETENV:  /cluster/galaxy-data-prod/scripts/drmaa_external_killer.py
ec-galaxy  ALL = (root) NOPASSWD: SETENV:  /cluster/galaxy-data-prod/scripts/external_chown_script.py
ec-galaxy  ALL = (root) NOPASSWD: SETENV:  /cluster/galaxy-data-prod/scripts/list_cluster_directories.py
ec-galaxy  ALL = (root) NOPASSWD: SETENV:  /usr/bin/ls
```

Edit the file

group_vars/galaxy01_educloud.yml
  1. add block (inside galaxy_config.galaxy)

    #-- Run jobs as real user setup ----------------------------------------
    outputs_to_working_directory: true
    real_system_username: username
    drmaa_external_runjob_script: "sudo -E DRMAA_LIBRARY_PATH=/drmaa/lib/libdrmaa.so.1   {{ galaxy_scripts_dir }}/drmaa_external_runner.py --assign_all_groups"
    drmaa_external_killjob_script: "sudo -E DRMAA_LIBRARY_PATH=/drmaa/lib/libdrmaa.so.1   {{ galaxy_scripts_dir }}/drmaa_external_killer.py -- assign_all_groups"
    external_chown_script: "sudo -E DRMAA_LIBRARY_PATH=/drmaa/lib/libdrmaa.so.1   {{ galaxy_scripts_dir }}/external_chown_script.py --assign_all_groups"
    
  2. add the paths to the files

    # Paths to real user setup files
    galaxy_scripts_dir: "{{ galaxy_server_dir }}/scripts"
    galaxy_scripts_src_dir: files/galaxy/scripts
    
  3. define the files to be copied

    #-- REAL USER setup files ----------------------------------------
    # in lifeportal_customized.galaxy/tasks/main.yml?
    galaxy_scripts_files:
    	- src: "{{ galaxy_scripts_src_dir}}/drmaa_external_killer.py"
    	  dest: "{{ galaxy_scripts_dir }}/drmaa_external_killer.py"
    	- src: "{{ galaxy_scripts_src_dir }}/drmaa_external_runner.py"
    	  dest: "{{ galaxy_scripts_dir }}/drmaa_external_runner.py"
    	- src: "{{ galaxy_scripts_src_dir }}/external_chown_script.py"
    	  dest: "{{ galaxy_scripts_dir }}/external_chown_script.py"
    

Manage the task copying the file

  1. Add the task to main

    ## Task copying the scripts for the real user setup
    - name: Include copy chown customized scripts
      include_tasks: copy_chown_customized_scripts.yml
      when: galaxy_manage_static_setup
      tags: galaxy_manage_static_setup
    
  2. Create (copy) the file copy_chown_customized_scripts.yml

    This task copies the scripts defined in {{ galaxy_scripts_files }} here above and creates the necessary directories with the appropriate permissions and ownership

    ---
    
    # Create "slurm", "compiled_templates" and "tmp" directories (when "job_working_directory" and "files" directories are created, these three are usually not by the galaxy role)
    # Copy scripts for real user job submission which change ownership of job working dir to real user (ran by sudo)
    
    - name: Create the directory scripts for real user support if it does not exist
      ansible.builtin.file:
    	     path: /cluster/galaxy-data-prod/scripts
    	     state: directory
    	     mode: '0730'
    	     group: "{{ galaxy_group_id }}"
    
    - name: Install modified scripts for real user job submission
      copy:
          src: "{{ item.src }}"
          dest: "{{ item.dest }}"
      with_items: "{{ galaxy_scripts_files }}"
    
    
    # SLURM DIR
    - name: Check directory slurm
      stat: path=/cluster/galaxy-data-prod/slurm
      register: directory_slurm
    
    - debug: var=directory_slurm.stat.path
    
    - name: Create slurm directory if it doesn't already exist
      ansible.builtin.file:
    	      path: /cluster/galaxy-data-prod/slurm
    	      state: directory
    	      mode: '0730'
    	      group: "{{ galaxy_group_id }}"
      when: not directory_slurm.stat.exists
    
    # TMP DIR
    - name: Check directory tmp
      stat: path=/cluster/galaxy-data-prod/tmp
      register: directory_tmp
    
    - debug: var=directory_tmp.stat.path
    
    - name: Create tmp directory if it doesn't already exist
      ansible.builtin.file:
    	     path: /cluster/galaxy-data-prod/tmp
    	     state: directory
    	     mode: '0730'
    	     group: "{{ galaxy_group_id }}"
      when: not directory_tmp.stat.exists
    
    # COMPILED TEMPLATES DIR
    - name: Check directory compiled_templates
      stat: path=/cluster/galaxy-data-prod/compiled_templates
      register: directory_compiled_templates
    
    - debug: var=directory_compiled_templates.stat.path
    
    - name: Create compiled_templates directory if it doesn't already exist
      ansible.builtin.file:
    	    path: /cluster/galaxy-data-prod/compiled_templates
    	    state: directory
    	    mode: '0730'
    	    group: "{{ galaxy_group_id }}"
      when: not directory_compiled_templates.stat.exists
    
    

Edit the main playbook file - add post-tasks

  post_tasks:

    - name: Change data folder ownership
      become: true
      become_user: root
      command: "{{ item }} chdir=/cluster/galaxy-data-prod"
      with_items:
      - chown -R ec-galaxy:ec01-galaxy-group compiled_templates
      - chown -R ec-galaxy:ec01-galaxy-group files
      - chown -R ec-galaxy:ec01-galaxy-group jobs_directory
      - chown -R ec-galaxy:ec01-galaxy-group tmp
      - chown -R ec-galaxy:ec01-galaxy-group tools
      - chown ec-galaxy:ec01-galaxy-group scripts
      changed_when: false

    - name: Change data folder mode
      become: true
      become_user: root
      command: "{{ item }} chdir=/cluster/galaxy-data-prod"
      with_items:
      - chmod -R 750 compiled_templates
      - chmod -R 730 files
      - chmod -R 730 jobs_directory
      - chmod -R 777 tmp
      - chmod -R g+s tmp
      - chmod -R 750 tools
      - chmod -R 500 scripts
      changed_when: false

    - name: Change ownership to scripts folder
      become: true
      become_user: root
      command: "{{ item }} chdir=/cluster/galaxy-data-prod/scripts/"
      with_items:
      - chown root:ec01-galaxy-group drmaa_external_runner.py
      - chown root:ec01-galaxy-group drmaa_external_killer.py
      - chown root:ec01-galaxy-group external_chown_script.py
      changed_when: false

    - name: Set 500 to the permission escalating scripts used for real user setup
      become: true
      become_user: root
      command: "{{ item }} chdir=/cluster/galaxy-data-prod/scripts/"
      with_items:
      - chmod 500 drmaa_external_runner.py
      - chmod 500 drmaa_external_killer.py
      - chmod 500 external_chown_script.py
      changed_when: false

Monitoring and reports

The program gxadmin allows the admin (as galaxy user) to query the framework for various parameteres. It is installed as a separate role galaxyproject.gxadmin which is set in the requirements.yml. To use it set the PGDATABASE variable in .bashrcfor galaxy user.

	export PGDATABASE=galaxy

Then run the commands like

	gxadmin query latest-users
	gxadmin query job-info

etc.

For more info see: https://training.galaxyproject.org/training-material/topics/admin/tutorials/gxadmin/tutorial.html

Mounts

Partitions and access:

| ess-fp-proto01 /fp/fox01 # ls -ld galaxy*
| drwxr-s---  2 ec-galaxy ec01-galaxy-group 4096 Nov  2 10:23 galaxy
| drwxrws--x  2 ec-galaxy ec01-galaxy-group 4096 Nov  2 10:28 galaxy-data-prod
| drwxrws--x 10 ec-galaxy ec01-galaxy-group 4096 Nov  2 10:21 galaxy-data-test
| drwxr-x---  3 ec-galaxy ec01-galaxy-group 4096 Sep  7 15:01 galaxy-test

Exports : RO/RW and (NO_)ROOT_SQUASH:

| Path                            Clients                        Access_Type  Protocols  Transports  Squash          SecType
| ------------------------------  -----------------------------  -----------  ---------  ----------  --------------  -------
| /fp/fox01/galaxy                galaxy01.educloud.no           RW           3          TCP         ROOT_SQUASH     SYS
| /fp/fox01/galaxy-data-prod      galaxy01.educloud.no           RW           3          TCP         NO_ROOT_SQUASH  SYS
| /fp/fox01/galaxy-data-test      galaxy01-test.educloud.no      RW           3          TCP         NO_ROOT_SQUASH  SYS
| /fp/fox01/galaxy-test           galaxy01-test.educloud.no      RW           3          TCP         ROOT_SQUASH     SYS
| /fp/homes01                     galaxy01-test.educloud.no      RO           3          TCP         ROOT_SQUASH     SYS
| /fp/homes01                     galaxy01.educloud.no           RO           3          TCP         ROOT_SQUASH     SYS
| /fp/projects01                  galaxy01-test.educloud.no      RO           3          TCP         ROOT_SQUASH     SYS
| /fp/projects01                  galaxy01.educloud.no           RO           3          TCP         ROOT_SQUASH     SYS

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published