Galaxy templateΒΆ

The orchetrator interprets the TOSCA template and orchestrate the Galaxy deployment on the virtual machine.

Galaxy template is located here.

Input parameters are needed for each custom type used in the template:

  • Virtual hardware parameters:

    number_cpus:
      type: integer
      description: number of cpus required for the instance
      default: 1
    memory_size:
      type: string
      description: ram memory required for the instance
      default: 1 GB
    storage_size:
      type: string
      description: storage memory required for the instance
      default: 10 GB
    
  • Galaxy input paramters:

    admin_email:
      type: string
      description: email of the admin user
      default: admin@admin.com
    admin_api_key:
      type: string
      description: key to access the API with admin role
      default: not_very_secret_api_key
    user:
      type: string
      description: username to launch the galaxy daemon
      default: galaxy
    version:
      type: string
      description: galaxy version to install
      default: master
    instance_description:
      type: string
      description: galaxy instance description
      default: "INDIGO Galaxy test"
    instance_key_pub:
      type: string
      description: galaxy instance ssh public key
      default: your_ssh_public_key
    export_dir:
      type: string
      description: path to store galaxy data
      default: /export
    
  • Storage input parameters:

    galaxy_storage_type:
      type: string
      description: Storage type (Iaas Block Storage, Onedaata, Filesystem encryption)
      default: "IaaS"
    userdata_provider:
      type: string
      description: default OneProvider
      default: "not_a_privder_url"
    userdata_token:
      type: string
      description: Access token for onedata space
      default: "not_a_token"
    userdata_space:
      type: string
      description: Onedata space
      default: "galaxy"
    
  • Galaxy flavor input parameters:

    flavor:
      type: string
      description: Galaxy flavor for tools installation
      default: "galaxy-no-tools"
    
  • Reference data input parameters, for all possible options (CernVM-FS, Onedata and download).

    reference_data:
      type: boolean
      description: Install Reference data
      default: true
    refdata_dir:
      type: string
      description: path to store galaxy reference data
      default: /refdata
    refdata_repository_name:
      type: string
      description: Onedata space name, CernVM-FS repository name or subdirectory downaload name
      default: 'elixir-italy.galaxy.refdata'
    refdata_provider_type:
      type: string
      description: Select Reference data provider type (Onedata, CernVM-FS or download)
      default: 'onedata'
    refdata_provider:
      type: string
      description: Oneprovider for reference data
      default: 'not_a_provider'
    refdata_token:
      type: string
      description: Access token for reference data
      default: 'not_a_token'
    refdata_cvmfs_server_url:
      type: string
      description: CernVM-FS server, replica or stratum-zero
      default: 'server_url'
    refdata_cvmfs_repository_name:
      type: string
      description: Reference data CernVM-FS repository name
      default: 'not_a_cvmfs_repository_name'
    refdata_cvmfs_key_file:
      type: string
      description: CernVM-FS public key
      default: 'not_a_key'
    refdata_cvmfs_proxy_url:
      type: string
      description: CernVM-FS proxy url
      default: 'DIRECT'
    refdata_cvmfs_proxy_port:
      type: integer
      description: CernVM-FS proxy port
      default: 80
    

Input parameters are passed to the corresponding ansible roles, through custom type call:

galaxy:
  type: tosca.nodes.indigo.GalaxyPortalAndStorage
  properties:
    os_storage: { get_input: galaxy_storage_type }
    token: { get_input: userdata_token }
    provider: { get_input: userdata_provider }
    space: { get_input: userdata_space }
    admin_email: { get_input: admin_email }
    admin_api_key: { get_input: admin_api_key }
    version: { get_input: version }
    instance_description: { get_input: instance_description }
    instance_key_pub: { get_input: instance_key_pub }
    export_dir: { get_input: export_dir }
  requirements:
    - lrms: local_lrms

galaxy_tools:
  type: tosca.nodes.indigo.GalaxyShedTool
  properties:
    flavor: { get_input: flavor }
    admin_api_key: { get_input: admin_api_key }
  requirements:
    - host: galaxy

galaxy_refdata:
  type: tosca.nodes.indigo.GalaxyReferenceData
  properties:
    reference_data: { get_input: reference_data }
    refdata_dir: { get_input: refdata_dir }
    flavor: { get_input: flavor }
    refdata_repository_name: { get_input: refdata_repository_name }
    refdata_provider_type: { get_input: refdata_provider_type }
    refdata_provider: { get_input: refdata_provider }
    refdata_token: { get_input: refdata_token }
    refdata_cvmfs_server_url: { get_input: refdata_cvmfs_server_url }
    refdata_cvmfs_repository_name: { get_input: refdata_cvmfs_repository_name }
    refdata_cvmfs_key_file: { get_input: refdata_cvmfs_key_file }
    refdata_cvmfs_proxy_url: { get_input: refdata_cvmfs_proxy_url }
    refdata_cvmfs_proxy_port: { get_input: refdata_cvmfs_proxy_port }
  requirements:
    - host: galaxy
    - dependency: galaxy_tools

Note

Note that Reference data custom type needs Galaxy installed to the ost host: galaxy, but depends on galaxy tools dependency: galaxy_tools since it has to check installed and missing tools.

Finally we have virtual hardware customization:

host:
 properties:
   num_cpus: { get_input: number_cpus }
   mem_size: { get_input: memory_size }

Image selection:

os:
  properties:
    type: linux
    distribution: centos
    version: 7.2
    image: indigodatacloudapps/galaxy

And Storage configuration, which takes the export_dir input for the mount point and storage_size input allowing for storage size customization.

- local_storage:
    # capability is provided by Compute Node Type
    node: my_block_storage
    capability: tosca.capabilities.Attachment
    relationship:
      type: tosca.relationships.AttachesTo
      properties:
        location: { get_input: export_dir }
        device: hdb
my_block_storage:
  type: tosca.nodes.BlockStorage
  properties:
  size: { get_input: storage_size }