Skip to content

Instantly share code, notes, and snippets.

@dciangot
Last active March 3, 2021 17:41
Show Gist options
  • Save dciangot/09825c5679df53353103ee4a18dd0296 to your computer and use it in GitHub Desktop.
Save dciangot/09825c5679df53353103ee4a18dd0296 to your computer and use it in GitHub Desktop.
tosca_definitions_version: tosca_simple_yaml_1_0
metadata:
template_author: INDIGO/DEEP
template_name: indigo_custom_types
template_version: 4.0.0
description: Contains the custom types definition as defined by the INDIGO & DEEP team
data_types:
tosca.datatypes.Root:
description: The TOSCA root Data Type all other TOSCA base Data Types derive from.
tosca.datatypes.indigo.User:
derived_from: tosca.datatypes.Root
description: The Tosca User type is a complex TOSCA data Type used when describing a user account, allowing to set the user name, the user GUID (optional) and user SSH public key (optional).
properties:
os_user_name:
type: string
description: The username
required: false
os_user_guid:
type: integer
description: The optional user guid
required: false
os_user_add_to_sudoers:
type: boolean
description: Add user to sudoers
required: false
os_user_ssh_public_key:
type: string
description: The optional user ssh public key
required: false
capability_types:
tosca.capabilities.indigo.OperatingSystem:
derived_from: tosca.capabilities.OperatingSystem
properties:
gpu_driver:
type: boolean
required: no
cuda_support:
type: boolean
required: no
cuda_min_version:
type: string
required: no
cuDNN_version:
type: string
required: no
image:
type: string
required: no
credential:
type: tosca.datatypes.Credential
required: no
tosca.capabilities.indigo.Scalable:
derived_from: tosca.capabilities.Scalable
properties:
min_instances:
type: integer
default: 1
required: no
max_instances:
type: integer
default: 1
required: no
count:
type: integer
description: the number of resources
required: no
default: 1
removal_list:
type: list
description: list of IDs of the resources to be removed
required: no
entry_schema:
type: string
tosca.capabilities.indigo.Container:
derived_from: tosca.capabilities.Container
properties:
preemtible_instance:
type: boolean
required: no
instance_type:
type: string
required: no
num_gpus:
type: integer
required: false
gpu_vendor:
type: string
required: false
gpu_model:
type: string
required: false
sgx:
type: boolean
required: no
tosca.capabilities.indigo.LRMS:
derived_from: tosca.capabilities.Container
properties:
type:
type: string
required: true
constraints:
- valid_values: [ local, torque, slurm, sge, condor, mesos, kubernetes ]
tosca.capabilities.indigo.LRMS.Torque:
derived_from: tosca.capabilities.indigo.LRMS
properties:
type:
type: string
required: true
default: torque
constraints:
- equal: torque
tosca.capabilities.indigo.LRMS.Slurm:
derived_from: tosca.capabilities.indigo.LRMS
properties:
type:
type: string
required: true
default: slurm
constraints:
- equal: slurm
tosca.capabilities.indigo.LRMS.Kubernetes:
derived_from: tosca.capabilities.indigo.LRMS
properties:
type:
type: string
required: true
default: kubernetes
constraints:
- equal: kubernetes
tosca.capabilities.indigo.LRMS.Local:
derived_from: tosca.capabilities.indigo.LRMS
properties:
type:
type: string
required: true
default: local
constraints:
- equal: local
tosca.capabilities.indigo.LRMS.Mesos:
derived_from: tosca.capabilities.indigo.LRMS
properties:
type:
type: string
required: true
default: mesos
constraints:
- equal: mesos
tosca.capabilities.indigo.ClusterMaster:
derived_from: tosca.capabilities.Container
tosca.capabilities.indigo.MesosMaster:
derived_from: tosca.capabilities.indigo.ClusterMaster
tosca.capabilities.indigo.KubernetesMaster:
derived_from: tosca.capabilities.indigo.ClusterMaster
tosca.capabilities.indigo.MesosSlave:
derived_from: tosca.capabilities.Container
tosca.capabilities.indigo.Container.Docker:
derived_from: tosca.capabilities.Container.Docker
properties:
num_cpus:
type: float
required: false
constraints:
- greater_or_equal: 0.0
num_gpus:
type: integer
required: false
tosca.capabilities.indigo.Endpoint:
derived_from: tosca.capabilities.Endpoint
properties:
dns_name:
description: The optional name to register with DNS
type: string
required: false
private_ip:
description: Flag used to specify that this endpoint will require also a private IP although it is a public one.
type: boolean
required: false
default: true
ports:
type: map
description: The optional map of ports the Endpoint supports (if more than one).
required: false
constraints:
- min_length: 1
entry_schema:
type: tosca.datatypes.network.PortSpec
attributes:
credential:
type: list
entry_schema:
type: tosca.datatypes.Credential
tosca.capabilities.indigo.Container.Application.Docker.Chronos:
derived_from: tosca.capabilities.Root
artifact_types:
tosca.artifacts.Implementation.YAML:
derived_from: tosca.artifacts.Implementation
description: YAML Ansible recipe artifact
mime_type: text/yaml
file_ext: [ yaml, yml ]
tosca.artifacts.AnsibleGalaxy.role:
derived_from: tosca.artifacts.Root
description: Ansible Galaxy role to be deployed in the target node
tosca.artifacts.Deployment.Image.Container.Docker:
derived_from: tosca.artifacts.Deployment.Image
description: Docker Container Image
relationship_types:
tosca.relationships.indigo.Manages:
derived_from: tosca.relationships.Root
tosca.relationships.indigo.AttachesTo:
derived_from: tosca.relationships.AttachesTo
properties:
fs_type:
type: string
required: false
default:
node_types:
# Standard types defined in TOSCA with interfaces to install
tosca.nodes.Database.MySQL:
derived_from: tosca.nodes.Database
metadata:
icon: /images/mysql-db.png
requirements:
- host:
capability: tosca.capabilities.Container
relationship: tosca.relationships.HostedOn
node: tosca.nodes.DBMS.MySQL
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mysql/mysql_db_configure.yml
inputs:
db_password: { get_property: [ SELF, password ] }
db_name: { get_property: [ SELF, name ] }
db_user: { get_property: [ SELF, user ] }
db_root_password: ""
db_access_host: "%"
tosca.nodes.DBMS.MySQL:
derived_from: tosca.nodes.DBMS
metadata:
icon: /images/mysql-server.png
properties:
port:
type: integer
description: reflect the default MySQL server port
default: 3306
root_password:
type: string
# MySQL requires a root_password for configuration
required: true
capabilities:
# Further constrain the ‘host’ capability to only allow MySQL databases
host:
type: tosca.capabilities.Container
valid_source_types: [ tosca.nodes.Database.MySQL ]
interfaces:
Standard:
create: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mysql/mysql_install.yml
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mysql/mysql_configure.yml
inputs:
root_password: { get_property: [ SELF, root_password ] }
port: { get_property: [ SELF, port ] }
tosca.nodes.WebServer.Apache:
derived_from: tosca.nodes.WebServer
metadata:
icon: /images/apache.png
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/apache/apache_install.yml
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/apache/apache_start.yml
# INDIGO non normative types
tosca.nodes.indigo.Database.MySQL:
derived_from: tosca.nodes.Database.MySQL
metadata:
icon: /images/mysql-db-indigo.png
properties:
access_host:
type: string
required: no
default: "%"
root_password:
type: string
required: true
requirements:
- host:
capability: tosca.capabilities.Container
relationship: tosca.relationships.HostedOn
node: tosca.nodes.DBMS.MySQL
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mysql/mysql_db_configure.yml
inputs:
db_password: { get_property: [ SELF, password ] }
db_name: { get_property: [ SELF, name ] }
db_user: { get_property: [ SELF, user ] }
db_root_password: { get_property: [ SELF, root_password ] }
db_access_host: { get_property: [ SELF, access_host ] }
tosca.nodes.indigo.Compute:
derived_from: tosca.nodes.Compute
metadata:
icon: /images/compute.png
attributes:
private_address:
type: list
entry_schema:
type: string
public_address:
type: list
entry_schema:
type: string
ctxt_log:
type: string
properties:
os_users:
type: list
description: Users creation
entry_schema:
type: tosca.datatypes.indigo.User
default: []
required: false
capabilities:
scalable:
type: tosca.capabilities.indigo.Scalable
os:
type: tosca.capabilities.indigo.OperatingSystem
endpoint:
type: tosca.capabilities.indigo.Endpoint
host:
type: tosca.capabilities.indigo.Container
valid_source_types: [tosca.nodes.SoftwareComponent]
artifacts:
os_users_role:
file: indigo-dc.os_users
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/os/configure_users.yml
inputs:
os_users: { get_property: [ SELF, os_users] }
tosca.nodes.indigo.ZabbixAgent:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/zabbix.png
properties:
zabbix_server:
type: string
required: yes
zabbix_server_port:
type: tosca.datatypes.network.PortDef
required: no
default: 10051
zabbix_server_metadata:
type: string
required: yes
artifacts:
zabbix_agent_role:
file: indigo-dc.zabbix-agent,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/zabbix/zabbix_agent_install.yml
inputs:
zabbix_server: { get_property: [ SELF, zabbix_server ] }
zabbix_server_port: { get_property: [ SELF, zabbix_server_port ] }
zabbix_server_metadata: { get_property: [ SELF, zabbix_server_metadata ] }
tosca.nodes.indigo.GalaxyPortal:
derived_from: tosca.nodes.WebServer
metadata:
icon: /images/galaxy.png
properties:
admin_email:
type: string
description: email of the admin user
default: admin@admin.com
required: false
admin_api_key:
type: string
description: key to access the API with admin role
default: not_very_secret_api_key
required: false
user:
type: string
description: username to launch the galaxy daemon
default: galaxy
required: false
install_path:
type: string
description: path to install the galaxy tool
default: /home/galaxy/galaxy
required: false
export_dir:
type: string
description: path to store galaxy data
default: /export
required: false
version:
type: string
description: galaxy version to install
default: master
required: false
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
flavor:
type: string
description: name of the Galaxy flavor
required: false
default: galaxy-no-tools
reference_data:
type: boolean
description: Install Reference data
default: true
required: false
requirements:
- lrms:
capability: tosca.capabilities.indigo.LRMS
node: tosca.nodes.indigo.LRMS.FrontEnd
relationship: tosca.relationships.HostedOn
artifacts:
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
galaxy_role:
file: indigo-dc.galaxycloud,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/galaxy/galaxy_install.yml
inputs:
galaxy_install_path: { get_property: [ SELF, install_path ] }
galaxy_user: { get_property: [ SELF, user ] }
galaxy_admin: { get_property: [ SELF, admin_email ] }
galaxy_admin_api_key: { get_property: [ SELF, admin_api_key ] }
galaxy_lrms: { get_property: [ SELF, lrms, type ] }
galaxy_version: { get_property: [ SELF, version ] }
galaxy_instance_description: { get_property: [ SELF, instance_description ] }
galaxy_instance_key_pub: { get_property: [ SELF, instance_key_pub ] }
export_dir: { get_property: [ SELF, export_dir ] }
galaxy_flavor: { get_property: [ SELF, flavor ] }
get_refdata: { get_property: [ SELF, reference_data ] }
tosca.nodes.indigo.GalaxyPortalAndStorage:
derived_from: tosca.nodes.indigo.GalaxyPortal
properties:
storage_encryption:
type: boolean
description: Enable storage encryption using Vault to store secrets and LUKS to encrypt
default: false
required: true
vault_url:
type: string
description: Hashicorp Vault server url
default: vault_url
required: false
vault_wrapping_token:
type: string
description: Vault Wrapping token to write secret
default: not_a_valid_token
required: false
vault_secret_path:
type: string
description: Vault path to store secret
default: path_to_secret
required: false
vault_secret_key:
type: string
description: Vault secret key name
default: secret_key_name
required: false
wn_ips:
type: list
entry_schema:
type: string
description: List of IPs of the WNs
required: false
default: []
artifacts:
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
galaxy_os_role:
file: indigo-dc.galaxycloud-os,master
type: tosca.artifacts.AnsibleGalaxy.role
galaxy_role:
file: indigo-dc.galaxycloud,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/galaxy/galaxy_os_install.yml
inputs:
storage_encryption: { get_property: [ SELF, storage_encryption ] }
vault_url: { get_property: [ SELF, vault_url ] }
vault_wrapping_token: { get_property: [ SELF, vault_wrapping_token ] }
vault_secret_path: { get_property: [ SELF, vault_secret_path ] }
vault_secret_key: { get_property: [ SELF, vault_secret_key ] }
wn_ips: { get_property: [ SELF, wn_ips ] }
galaxy_install_path: { get_property: [ SELF, install_path ] }
galaxy_user: { get_property: [ SELF, user ] }
galaxy_admin: { get_property: [ SELF, admin_email ] }
galaxy_admin_api_key: { get_property: [ SELF, admin_api_key ] }
galaxy_lrms: { get_property: [ SELF, lrms, type ] }
galaxy_version: { get_property: [ SELF, version ] }
galaxy_instance_description: { get_property: [ SELF, instance_description ] }
galaxy_instance_key_pub: { get_property: [ SELF, instance_key_pub ] }
export_dir: { get_property: [ SELF, export_dir ] }
galaxy_flavor: { get_property: [ SELF, flavor ] }
get_refdata: { get_property: [ SELF, reference_data ] }
tosca.nodes.indigo.GalaxyPortalFastConfig:
derived_from: tosca.nodes.indigo.GalaxyPortalAndStorage
artifacts:
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
galaxy_os_role:
file: indigo-dc.galaxycloud-os,master
type: tosca.artifacts.AnsibleGalaxy.role
galaxy_role_fastconfig:
file: indigo-dc.galaxycloud-fastconfig,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/galaxy/galaxy_fastconfig.yml
inputs:
storage_encryption: { get_property: [ SELF, storage_encryption ] }
vault_url: { get_property: [ SELF, vault_url ] }
vault_wrapping_token: { get_property: [ SELF, vault_wrapping_token ] }
vault_secret_path: { get_property: [ SELF, vault_secret_path ] }
vault_secret_key: { get_property: [ SELF, vault_secret_key ] }
wn_ips: { get_property: [ SELF, wn_ips ] }
galaxy_install_path: { get_property: [ SELF, install_path ] }
galaxy_user: { get_property: [ SELF, user ] }
galaxy_admin: { get_property: [ SELF, admin_email ] }
galaxy_admin_api_key: { get_property: [ SELF, admin_api_key ] }
galaxy_lrms: { get_property: [ SELF, lrms, type ] }
galaxy_version: { get_property: [ SELF, version ] }
galaxy_instance_description: { get_property: [ SELF, instance_description ] }
galaxy_instance_key_pub: { get_property: [ SELF, instance_key_pub ] }
export_dir: { get_property: [ SELF, export_dir ] }
galaxy_flavor: { get_property: [ SELF, flavor ] }
get_refdata: { get_property: [ SELF, reference_data ] }
tosca.nodes.indigo.GalaxyWN:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/galaxy.png
properties:
front_end_ip:
type: string
description: IP of the Front-End node
required: true
export_dir:
type: string
description: path to store galaxy data
default: /export
required: true
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.Compute
relationship: tosca.relationships.HostedOn
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/galaxy/galaxy_wn_configure.yml
inputs:
galaxy_front_end_ip: { get_property: [ SELF, front_end_ip ] }
export_dir: { get_property: [ SELF, export_dir ] }
tosca.nodes.indigo.GalaxyWNCVMFS:
derived_from: tosca.nodes.indigo.GalaxyWN
properties:
storage_encryption:
type: boolean
description: Install api when storage is encrypted
default: false
reference_data:
type: boolean
description: Install Reference data
default: true
required: true
refdata_cvmfs_configuration:
type: string
description: Configure cvmfs or load preconfigured repository
default: 'cvmfs_preconfigured'
required: false
refdata_cvmfs_repository_name:
type: string
description: CernVM-FS repository name
default: 'elixir-italy.galaxy.refdata'
required: false
refdata_cvmfs_server_url:
type: string
description: CernVM-FS server, replica or stratum-zero
default: 'server_url'
required: false
refdata_cvmfs_key_file:
type: string
description: CernVM-FS public key
default: 'not_a_key'
required: false
refdata_cvmfs_proxy_url:
type: string
description: CernVM-FS proxy url
default: 'DIRECT'
required: false
refdata_cvmfs_proxy_port:
type: integer
description: CernVM-FS proxy port
default: 80
required: false
refdata_dir:
type: string
description: path to store galaxy reference data
default: /cvmfs
required: false
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.Compute
relationship: tosca.relationships.HostedOn
artifacts:
os_role:
file: indigo-dc.galaxycloud-os,master
type: tosca.artifacts.AnsibleGalaxy.role
cvmfs_role:
file: indigo-dc.cvmfs-client,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/galaxy/galaxy_wn_configure_cvmfs.yml
inputs:
galaxy_front_end_ip: { get_property: [ SELF, front_end_ip ] }
export_dir: { get_property: [ SELF, export_dir ] }
storage_encryption: { get_property: [ SELF, storage_encryption ] }
get_refdata: { get_property: [ SELF, reference_data ] }
refdata_cvmfs_configuration: { get_property: [ SELF, refdata_cvmfs_configuration ] }
refdata_cvmfs_repository_name: { get_property: [ SELF, refdata_cvmfs_repository_name ] }
refdata_cvmfs_server_url: { get_property: [ SELF, refdata_cvmfs_server_url ] }
refdata_cvmfs_key_file: { get_property: [ SELF, refdata_cvmfs_key_file ] }
refdata_cvmfs_proxy_url: { get_property: [ SELF, refdata_cvmfs_proxy_url ] }
refdata_cvmfs_proxy_port: { get_property: [ SELF, refdata_cvmfs_proxy_port ] }
refdata_dir: { get_property: [ SELF, refdata_dir ] }
tosca.nodes.indigo.GalaxyShedTool:
derived_from: tosca.nodes.WebApplication
metadata:
icon: /images/galaxy-toolshed.png
properties:
flavor:
type: string
description: name of the Galaxy flavor
required: true
default: galaxy-no-tools
admin_api_key:
type: string
description: key to access the API with admin role
default: not_very_secret_api_key
required: false
version:
type: string
description: galaxy version installed
default: master
required: false
reference_data:
type: boolean
description: Install Reference data
default: true
required: false
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.indigo.GalaxyPortal
relationship: tosca.relationships.HostedOn
artifacts:
galaxy_role:
file: indigo-dc.galaxycloud-tools,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/galaxy/galaxy_tools_configure.yml
inputs:
galaxy_flavor: { get_property: [ SELF, flavor ] }
galaxy_admin_api_key: { get_property: [ HOST, admin_api_key ] }
galaxy_version: { get_property: [ SELF, version ] }
get_refdata: { get_property: [ SELF, reference_data ] }
tosca.nodes.indigo.GalaxyReferenceData:
derived_from: tosca.nodes.WebApplication
metadata:
icon: /images/galaxydata.png
properties:
reference_data:
type: boolean
description: Install Reference data
default: true
required: true
refdata_cvmfs_configuration:
type: string
description: Configure cvmfs or load preconfigured repository
default: 'cvmfs_preconfigured'
required: false
refdata_cvmfs_repository_name:
type: string
description: CernVM-FS repository name
default: 'elixir-italy.galaxy.refdata'
required: false
refdata_cvmfs_server_url:
type: string
description: CernVM-FS server, replica or stratum-zero
default: 'server_url'
required: false
refdata_cvmfs_key_file:
type: string
description: CernVM-FS public key
default: 'not_a_key'
required: false
refdata_cvmfs_proxy_url:
type: string
description: CernVM-FS proxy url
default: 'DIRECT'
required: false
refdata_cvmfs_proxy_port:
type: integer
description: CernVM-FS proxy port
default: 80
required: false
refdata_dir:
type: string
description: path to store galaxy reference data
default: /cvmfs
required: false
flavor:
type: string
description: name of the Galaxy flavor
required: true
default: galaxy-no-tools
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.indigo.GalaxyPortal
relationship: tosca.relationships.HostedOn
artifacts:
cvmfs_role:
file: indigo-dc.cvmfs-client,master
type: tosca.artifacts.AnsibleGalaxy.role
galaxy_role:
file: indigo-dc.galaxycloud-refdata,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/galaxy/galaxy_redfata_configure.yml
inputs:
get_refdata: { get_property: [ SELF, reference_data ] }
refdata_cvmfs_configuration: { get_property: [ SELF, refdata_cvmfs_configuration ] }
refdata_cvmfs_repository_name: { get_property: [ SELF, refdata_cvmfs_repository_name ] }
refdata_cvmfs_server_url: { get_property: [ SELF, refdata_cvmfs_server_url ] }
refdata_cvmfs_key_file: { get_property: [ SELF, refdata_cvmfs_key_file ] }
refdata_cvmfs_proxy_url: { get_property: [ SELF, refdata_cvmfs_proxy_url ] }
refdata_cvmfs_proxy_port: { get_property: [ SELF, refdata_cvmfs_proxy_port ] }
refdata_dir: { get_property: [ SELF, refdata_dir ] }
galaxy_flavor: { get_property: [ SELF, flavor ] }
tosca.nodes.indigo.GalaxyPortalDocker:
derived_from: tosca.nodes.indigo.GalaxyPortalAndStorage
artifacts:
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
galaxy_os_role:
file: indigo-dc.galaxycloud-os,master
type: tosca.artifacts.AnsibleGalaxy.role
docker_role:
file: indigo-dc.docker,master
type: tosca.artifacts.AnsibleGalaxy.role
galaxy_role_docker:
file: indigo-dc.galaxycloud_docker,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/galaxy/galaxy_docker.yml
inputs:
storage_encryption: { get_property: [ SELF, storage_encryption ] }
vault_url: { get_property: [ SELF, vault_url ] }
vault_wrapping_token: { get_property: [ SELF, vault_wrapping_token ] }
vault_secret_path: { get_property: [ SELF, vault_secret_path ] }
vault_secret_key: { get_property: [ SELF, vault_secret_key ] }
galaxy_install_path: { get_property: [ SELF, install_path ] }
galaxy_user: { get_property: [ SELF, user ] }
galaxy_admin: { get_property: [ SELF, admin_email ] }
galaxy_admin_api_key: { get_property: [ SELF, admin_api_key ] }
galaxy_lrms: { get_property: [ SELF, lrms, type ] }
galaxy_version: { get_property: [ SELF, version ] }
galaxy_instance_description: { get_property: [ SELF, instance_description ] }
galaxy_instance_key_pub: { get_property: [ SELF, instance_key_pub ] }
export_dir: { get_property: [ SELF, export_dir ] }
galaxy_flavor: { get_property: [ SELF, flavor ] }
get_refdata: { get_property: [ SELF, reference_data ] }
tosca.nodes.indigo.TeskAPI:
derived_from: tosca.nodes.WebServer
properties:
auth_mode:
type: string
description: Authentication mode
default: noauth
required: false
mount_ftp:
description: Flag used to specify that the ftp has to be enabled
type: boolean
required: false
default: true
teskmaster_ftp_url:
type: string
description: ftp url
default: 'ftp://ftp_url'
required: false
teskmaster_ftp_user:
type: string
description: ftp username
default: 'user'
required: false
teskmaster_ftp_password:
type: string
description: ftp password
default: 'password'
required: false
requirements:
- lrms:
capability: tosca.capabilities.indigo.LRMS
node: tosca.nodes.indigo.LRMS.FrontEnd
relationship: tosca.relationships.HostedOn
artifacts:
galaxy_role:
file: indigo-dc.tesk,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/ga4gh_cloud_apis/tesk_install.yml
inputs:
auth_mode: { get_property: [ SELF, auth_mode ] }
mount_ftp: { get_property: [ SELF, mount_ftp ] }
teskmaster_ftp_url: { get_property: [ SELF, teskmaster_ftp_url ] }
teskmaster_ftp_user: { get_property: [ SELF, teskmaster_ftp_user ] }
teskmaster_ftp_password: { get_property: [ SELF, teskmaster_ftp_password ] }
tosca.nodes.indigo.ElasticCluster:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/ec3.png
properties:
secret_token:
type: string
description: Token to access CLUES web interface
default: not_very_secret_token
required: false
deployment_id:
type: string
description: ID of the deployment of this elastic cluster in the orchestrator
required: false
default: ''
orchestrator_url:
type: string
description: URL of the orchestrator
required: false
default: http://orchestrator01-indigo.cloud.ba.infn.it:8080/orchestrator
iam_access_token:
type: string
description: INDIGO IAM access token
required: false
default: iam_access_token
iam_clues_client_id:
type: string
description: INDIGO IAM client id to be used by CLUES
required: false
default: iam_clues_client_id
iam_clues_client_secret:
type: string
description: INDIGO IAM client secret to be used by CLUES
required: false
default: iam_clues_client_secret
marathon_credentials:
type: tosca.datatypes.Credential
description: Credentials to access the marathon endpoint from CLUES plugin
default:
protocol: http
user: admin
token: password
token_type: password
required: false
chronos_credentials:
type: tosca.datatypes.Credential
description: Credentials to access the chronos endpoint from CLUES plugin
default:
protocol: http
user: admin
token: password
token_type: password
required: false
mesos_credentials:
type: tosca.datatypes.Credential
description: Credentials to access the mesos endpoint from CLUES plugin
default:
protocol: http
user: admin
token: password
token_type: password
required: false
hybrid:
type: boolean
description: Flag to specify that this ElasticCluster will work in a hybrid environment
default: false
required: false
powermanager_plugin:
type: string
description: Plugin that will manage the VMs (indigo_orchestrator or im)
default: indigo_orchestrator
required: false
im_auth:
type: string
description: IM auth data
default: ""
required: false
artifacts:
clues_role:
file: indigo-dc.clues,master
type: tosca.artifacts.AnsibleGalaxy.role
im_role:
file: grycap.im,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/ec3/ec3_install.yml
inputs:
clues_secret_token: { get_property: [ SELF, secret_token ] }
clues_queue_system: { get_property: [ SELF, lrms, type ] }
ec3_max_instances: { get_property: [ SELF, wn, max_instances] }
ec3_deployment_id: { get_property: [ SELF, deployment_id] }
orchestrator_url: { get_property: [ SELF, orchestrator_url] }
ec3_iam_access_token: { get_property: [ SELF, iam_access_token] }
ec3_iam_clues_client_id: { get_property: [ SELF, iam_clues_client_id] }
ec3_iam_clues_client_secret: { get_property: [ SELF, iam_clues_client_secret] }
clues_marathon_credentials: { get_property: [ SELF, marathon_credentials] }
clues_chronos_credentials: { get_property: [ SELF, chronos_credentials] }
clues_mesos_credentials: { get_property: [ SELF, mesos_credentials] }
clues_powermanager_plugin: { get_property: [ SELF, powermanager_plugin] }
im_auth_data: { get_property: [ SELF, im_auth] }
requirements:
- wn:
capability: tosca.capabilities.Scalable
node: tosca.nodes.indigo.LRMS.WorkerNode
relationship: tosca.relationships.indigo.Manages
- lrms:
capability: tosca.capabilities.indigo.LRMS
node: tosca.nodes.indigo.LRMS.FrontEnd
relationship: tosca.relationships.HostedOn
tosca.nodes.indigo.LRMS.WorkerNode:
derived_from: tosca.nodes.SoftwareComponent
properties:
front_end_ip:
type: string
description: IP of the Front-End node
required: true
hybrid:
type: boolean
description: Flag to specify that this WorkerNode will work in a hybrid environment
default: false
required: false
public_front_end_ip:
type: string
description: Public IP of the Front-End node
required: false
default: ''
capabilities:
wn:
type: tosca.capabilities.Scalable
valid_source_types: [tosca.nodes.indigo.ElasticCluster]
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.Compute
relationship: tosca.relationships.HostedOn
tosca.nodes.indigo.LRMS.WorkerNode.Torque:
derived_from: tosca.nodes.indigo.LRMS.WorkerNode
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/lrms/torque/torque_wn_install.yml
inputs:
torque_front_end_ip: { get_property: [ SELF, front_end_ip ] }
wn_hybrid_cluster: { get_property: [ SELF, hybrid] }
tosca.nodes.indigo.LRMS.WorkerNode.Slurm:
derived_from: tosca.nodes.indigo.LRMS.WorkerNode
metadata:
icon: /images/slurm.png
artifacts:
slurm_role:
file: indigo-dc.slurm,master
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/lrms/slurm/slurm_wn_install.yml
inputs:
slurm_front_end_ip: { get_property: [ SELF, front_end_ip ] }
wn_hybrid_cluster: { get_property: [ SELF, hybrid] }
slurm_public_front_end_ip: { get_property: [ SELF, public_front_end_ip ] }
tosca.nodes.indigo.LRMS.WorkerNode.SlurmGalaxy:
derived_from: tosca.nodes.indigo.LRMS.WorkerNode.Slurm
artifacts:
slurm_role:
file: indigo-dc.slurm,cons_res
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/lrms/slurm/slurm_wn_install.yml
inputs:
slurm_front_end_ip: { get_property: [ SELF, front_end_ip ] }
wn_hybrid_cluster: { get_property: [ SELF, hybrid] }
slurm_public_front_end_ip: { get_property: [ SELF, public_front_end_ip ] }
tosca.nodes.indigo.LRMS.FrontEnd:
derived_from: tosca.nodes.SoftwareComponent
properties:
wn_ips:
type: list
entry_schema:
type: string
description: List of IPs of the WNs
required: false
default: []
hybrid:
type: boolean
description: Flag to specify that this FrontEnd will work in a hybrid environment
default: false
required: false
capabilities:
lrms:
type: tosca.capabilities.indigo.LRMS
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.Compute
relationship: tosca.relationships.HostedOn
tosca.nodes.indigo.LRMS.FrontEnd.Torque:
derived_from: tosca.nodes.indigo.LRMS.FrontEnd
capabilities:
lrms:
type: tosca.capabilities.indigo.LRMS.Torque
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/lrms/torque/torque_fe_install.yml
inputs:
torque_wn_ips: { get_property: [ SELF, wn_ips ] }
fe_hybrid_cluster: { get_property: [ SELF, hybrid] }
tosca.nodes.indigo.LRMS.FrontEnd.Slurm:
derived_from: tosca.nodes.indigo.LRMS.FrontEnd
metadata:
icon: /images/slurm.png
properties:
wn_num:
type: integer
description: Number of WNs
required: false
default: -1
artifacts:
slurm_role:
file: indigo-dc.slurm,master
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
capabilities:
lrms:
type: tosca.capabilities.indigo.LRMS.Slurm
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/lrms/slurm/slurm_fe_install.yml
inputs:
wn_num: { get_property: [ SELF, wn_num ] }
wn_ips: { get_property: [ SELF, wn_ips ] }
front_end_ip: { get_attribute: [ HOST, private_address, 0 ] }
fe_hybrid_cluster: { get_property: [ SELF, hybrid] }
tosca.nodes.indigo.LRMS.FrontEnd.SlurmGalaxy:
derived_from: tosca.nodes.indigo.LRMS.FrontEnd.Slurm
artifacts:
slurm_role:
file: indigo-dc.slurm,cons_res
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
capabilities:
lrms:
type: tosca.capabilities.indigo.LRMS.Slurm
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/lrms/slurm/slurm_fe_install.yml
inputs:
wn_num: { get_property: [ SELF, wn_num ] }
wn_ips: { get_property: [ SELF, wn_ips ] }
front_end_ip: { get_attribute: [ HOST, private_address, 0 ] }
fe_hybrid_cluster: { get_property: [ SELF, hybrid] }
tosca.nodes.indigo.LRMS.FrontEnd.Local:
derived_from: tosca.nodes.indigo.LRMS.FrontEnd
capabilities:
lrms:
type: tosca.capabilities.indigo.LRMS.Local
tosca.nodes.indigo.Container.Runtime.Docker:
derived_from: tosca.nodes.Root
metadata:
icon: /images/docker.png
capabilities:
host:
type: tosca.capabilities.indigo.Container.Docker
scalable:
type: tosca.capabilities.Scalable
tosca.nodes.indigo.Container.Application.Docker:
derived_from: tosca.nodes.Container.Application.Docker
properties:
command:
required: no
type: string
uris:
required: no
type: list
entry_schema:
type: string
environment_variables:
required: no
type: map
entry_schema:
type: string
constraints:
required: no
type: list
entry_schema:
type: list
entry_schema:
type: string
secrets:
required: no
type: map
entry_schema:
type: string
constraints:
required: no
type: list
entry_schema:
type: list
entry_schema:
type: string
labels:
required: no
type: map
entry_schema:
type: string
privileged:
required: no
type: boolean
default: false
force_pull_image:
required: no
type: boolean
default: false
tosca.nodes.indigo.Container.Application.Docker.Chronos:
derived_from: tosca.nodes.indigo.Container.Application.Docker
metadata:
icon: /images/chronos.jpg
properties:
schedule:
required: no
type: string
command:
required: yes
type: string
description:
required: no
type: string
retries:
required: no
type: integer
epsilon:
required: no
type: string
default: PT10S
privileged:
required: no
type: boolean
default: true
force_pull_image:
required: no
type: boolean
default: true
capabilities:
parent_job:
type: tosca.capabilities.indigo.Container.Application.Docker.Chronos
valid_source_types: [tosca.nodes.indigo.Container.Application.Docker.Chronos]
occurrences: [0, UNBOUNDED]
requirements:
- parent_job:
capability: tosca.capabilities.indigo.Container.Application.Docker.Chronos
node: tosca.nodes.indigo.Container.Application.Docker.Chronos
relationship: tosca.relationships.DependsOn
occurrences: [0, 1]
tosca.nodes.indigo.DariahRepository:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/dariah.png
properties:
marathon_password:
type: string
required: yes
cache_cpus:
type: float
required: no
default: 1.0
cache_mem:
type: integer
required: no
default: 1024
cache_image:
type: string
required: no
default: 'redis'
db_cpus:
type: float
required: no
default: 1.0
db_mem:
type: integer
required: no
default: 1024
db_image:
type: string
required: no
default: 'postgres'
es_cpus:
type: float
required: no
default: 1.0
es_mem:
type: integer
required: no
default: 1024
es_image:
type: string
required: no
default: 'indigodatacloudapps/dariah-repository:elasticsearch'
mq_cpus:
type: float
required: no
default: 1.0
mq_mem:
type: integer
required: no
default: 1024
mq_image:
type: string
required: no
default: 'rabbitmq:3-management'
statsd_cpus:
type: float
required: no
default: 1.0
statsd_mem:
type: integer
required: no
default: 1024
statsd_image:
type: string
required: no
default: 'indigodatacloudapps/dariah-repository:statsd'
web_cpus:
type: float
required: no
default: 1.0
web_mem:
type: integer
required: no
default: 1024
web_image:
type: string
required: no
default: 'indigodatacloudapps/dariah-repository:web'
worker_cpus:
type: float
required: no
default: 1.0
worker_mem:
type: integer
required: no
default: 1024
worker_image:
type: string
required: no
default: 'indigodatacloudapps/dariah-repository:web'
artifacts:
dariahrepo_role:
file: indigo-dc.dariahrepo,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/dariahrepo-setup.yml
inputs:
marathon_password: { get_property: [ SELF, marathon_password ] }
dariahrepo_app_cache_cpus: { get_property: [ SELF, cache_cpus ] }
dariahrepo_app_cache_mem: { get_property: [ SELF, cache_mem ] }
dariahrepo_app_cache_image: { get_property: [ SELF, cache_image ] }
dariahrepo_app_db_cpus: { get_property: [ SELF, db_cpus ] }
dariahrepo_app_db_mem: { get_property: [ SELF, db_mem ] }
dariahrepo_app_db_image: { get_property: [ SELF, db_image ] }
dariahrepo_app_es_cpus: { get_property: [ SELF, es_cpus ] }
dariahrepo_app_es_mem: { get_property: [ SELF, es_mem ] }
dariahrepo_app_es_image: { get_property: [ SELF, es_image ] }
dariahrepo_app_mq_cpus: { get_property: [ SELF, mq_cpus ] }
dariahrepo_app_mq_mem: { get_property: [ SELF, mq_mem ] }
dariahrepo_app_mq_image: { get_property: [ SELF, mq_image ] }
dariahrepo_app_statsd_cpus: { get_property: [ SELF, statsd_cpus ] }
dariahrepo_app_statsd_mem: { get_property: [ SELF, statsd_mem ] }
dariahrepo_app_statsd_image: { get_property: [ SELF, statsd_image ] }
dariahrepo_app_web_cpus: { get_property: [ SELF, web_cpus ] }
dariahrepo_app_web_mem: { get_property: [ SELF, web_mem ] }
dariahrepo_app_web_image: { get_property: [ SELF, web_image ] }
dariahrepo_app_worker_cpus: { get_property: [ SELF, worker_cpus ] }
dariahrepo_app_worker_mem: { get_property: [ SELF, worker_mem ] }
dariahrepo_app_worker_image: { get_property: [ SELF, worker_image ] }
requirements:
- host:
capability: tosca.capabilities.indigo.MesosMaster
relationship: tosca.relationships.HostedOn
node: tosca.nodes.SoftwareComponent
occurrences: [1, 1]
tosca.nodes.indigo.TensorflowOnMesos:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/tensorflow.png
properties:
marathon_password:
type: string
required: yes
marathon_username:
type: string
default: admin
required: no
marathon_protocol:
type: string
required: no
default: https
marathon_host:
type: string
required: no
default: localhost
marathon_port:
required: no
type: integer
default: 8443
tensorflow_image:
required: no
type: string
default: 'tensorflow/tensorflow:latest-gpu'
tensorflow_cpus:
type: float
required: no
default: 1.0
tensorflow_gpus:
type: integer
required: no
default: 1
tensorflow_mem:
type: integer
required: no
default: 1024
tensorflow_port:
type: integer
required: no
default: 10001
tensorflow_password:
type: string
required: yes
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/start_tensorflow.yml
inputs:
marathon_username: { get_property: [ SELF, marathon_username ] }
marathon_password: { get_property: [ SELF, marathon_password ] }
marathon_protocol: { get_property: [ SELF, marathon_protocol ] }
marathon_host: { get_property: [ SELF, marathon_host ] }
marathon_port: { get_property: [ SELF, marathon_port ] }
marathon_tensorflow_image: { get_property: [ SELF, tensorflow_image ] }
marathon_tensorflow_cpus: { get_property: [ SELF, tensorflow_cpus ] }
marathon_tensorflow_gpus: { get_property: [ SELF, tensorflow_gpus ] }
marathon_tensorflow_mem: { get_property: [ SELF, tensorflow_mem ] }
marathon_tensorflow_password: { get_property: [ SELF, tensorflow_password ] }
marathon_tensorflow_port: { get_property: [ SELF, tensorflow_port ] }
tosca.nodes.indigo.Container.Application.Docker.Marathon:
derived_from: tosca.nodes.indigo.Container.Application.Docker
metadata:
icon: /images/marathon.png
attributes:
load_balancer_ips:
type: list
entry_schema: string
properties:
force_pull_image:
required: no
type: boolean
default: true
enable_https:
required: no
type: boolean
default: false
artifacts:
image:
file: ""
type: "tosca.artifacts.Deployment.Image.Container.Docker"
tosca.nodes.indigo.LRMS.FrontEnd.Mesos:
derived_from: tosca.nodes.indigo.LRMS.FrontEnd
metadata:
icon: /images/mesos.png
capabilities:
lrms:
type: tosca.capabilities.indigo.LRMS.Mesos
host:
type: tosca.capabilities.indigo.MesosMaster
properties:
# Set the current data of the mesos server
# but it can also specified in the TOSCA document
mesos_masters_list:
type: list
entry_schema:
type: string
required: no
default: ['127.0.0.1']
mesos_authenticate_http:
type: boolean
required: no
default: true
mesos_username:
type: string
required: no
default: 'admin'
mesos_password:
type: string
required: no
default: 'admin'
marathon_enable_ssl:
type: boolean
required: no
default: true
marathon_username:
type: string
required: no
default: admin
marathon_password:
type: string
required: yes
enable_chronos:
type: boolean
required: no
default: true
chronos_enable_ssl:
type: boolean
required: no
default: true
chronos_username:
type: string
required: no
default: admin
chronos_password:
type: string
required: no
default: admin
enable_consul_sd:
type: boolean
required: no
default: true
enable_nfs_share:
type: boolean
required: no
default: false
enable_gpu_support:
type: boolean
required: no
default: false
artifacts:
docker_agent_role:
file: indigo-dc.docker,2.1.2-beta
#file: git+https://github.com/indigo-dc/ansible-role-docker.git,fix/issue_13
type: tosca.artifacts.AnsibleGalaxy.role
consul_agent_role:
file: indigo-dc.consul,master
type: tosca.artifacts.AnsibleGalaxy.role
zookeeper_agent_role:
file: indigo-dc.zookeeper,master
type: tosca.artifacts.AnsibleGalaxy.role
mesos_agent_role:
file: indigo-dc.mesos,master
type: tosca.artifacts.AnsibleGalaxy.role
marathon_agent_role:
file: indigo-dc.marathon,master
type: tosca.artifacts.AnsibleGalaxy.role
chronos_agent_role:
file: indigo-dc.chronos,master
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/mesos_master_install.yml
inputs:
mesos_masters_list_ips: { get_property: [ SELF, mesos_masters_list ] }
mesos_authenticate_http: { get_property: [ SELF, mesos_authenticate_http ] }
mesos_username: { get_property: [ SELF, mesos_username ] }
mesos_password: { get_property: [ SELF, mesos_password ] }
marathon_enable_ssl: { get_property: [ SELF, marathon_enable_ssl ] }
marathon_user: { get_property: [ SELF, marathon_username ] }
marathon_pass: { get_property: [ SELF, marathon_password ] }
enable_chronos: { get_property: [ SELF, enable_chronos ] }
chronos_enable_ssl: { get_property: [ SELF, chronos_enable_ssl ] }
chronos_user: { get_property: [ SELF, chronos_username ] }
chronos_pass: { get_property: [ SELF, chronos_password ] }
enable_consul_sd: { get_property: [ SELF, enable_consul_sd ] }
enable_nfs_share: { get_property: [ SELF, enable_nfs_share ] }
marathon_enable_gpu_support: { get_property: [ SELF, enable_gpu_support ] }
mesos_enable_gpu_support: { get_property: [ SELF, enable_gpu_support ] }
chronos_enable_gpu_support: { get_property: [ SELF, enable_gpu_support ] }
wn_ips: { get_property: [ SELF, wn_ips ] }
fe_hybrid_cluster: { get_property: [ SELF, hybrid] }
tosca.nodes.indigo.MesosMaster:
derived_from: tosca.nodes.indigo.LRMS.FrontEnd.Mesos
tosca.nodes.indigo.CmsServices:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/cms.png
properties:
cms_local_site:
type: string
required: yes
cms_squid_image:
type: string
required: no
default: "spiga/frontiersquidv1"
cms_wn_image:
type: string
default: "cloudpg/dodas-cms:cern"
required: no
cms_proxycache_image:
type: string
required: no
default: "cloudpg/ttscache"
cms_input_protocol:
type: string
required: no
default: 'xrootd'
mysquid_host:
type: string
required: yes
proxycache_host:
type: string
required: yes
iam_access_token:
type: string
description: INDIGO IAM access token
required: yes
iam_client_id:
type: string
description: INDIGO IAM client id
required: yes
iam_client_secret:
type: string
description: INDIGO IAM client secret
required: yes
marathon_username:
type: string
required: no
default: 'admin'
marathon_password:
type: string
required: no
default: 'admin'
cms_proxycache_token_manager:
type: string
required: no
default: 'ZOOKEEPER'
watts_endpoint:
type: string
required: no
default: 'https://dodas-tts.cloud.cnaf.infn.it'
iam_endpoint:
type: string
required: no
default: 'https://dodas-iam.cloud.cnaf.infn.it/'
iam_credential_endpoint:
type: string
required: no
default: 'https://dodas-tts.cloud.cnaf.infn.it/api/v2/iam/credential'
audience:
type: string
required: no
default: 'https://dodas-tts.cloud.cnaf.infn.it'
oneclient_token:
type: string
required: no
default: 'dummy'
oneprovider_name:
type: string
required: no
default: 'dummy'
master_ips:
required: yes
type: list
entry_schema:
type: string
artifacts:
cms_config_role:
file: indigo-dc.cms_config,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/cms_services_start.yml
inputs:
cms_config_mysquid_host: { get_property: [ SELF, mysquid_host ] }
cms_config_proxycache_host: { get_property: [ SELF, proxycache_host ] }
cms_config_iam_token: { get_property: [ SELF, iam_access_token ] }
cms_config_iam_client_id: { get_property: [ SELF, iam_client_id ] }
cms_config_iam_client_secret: { get_property: [ SELF, iam_client_secret ] }
cms_config_cms_local_site: { get_property: [ SELF, cms_local_site ] }
cms_config_squid_image: { get_property: [ SELF, cms_squid_image ] }
cms_config_wn_image: { get_property: [ SELF, cms_wn_image ] }
cms_config_proxycache_image: { get_property: [ SELF, cms_proxycache_image ]}
cms_input_protocol: { get_property: [ SELF, cms_input_protocol ] }
marathon_user: { get_property: [ SELF, marathon_username ] }
marathon_pass: { get_property: [ SELF, marathon_password ] }
zookeeper_host_list: { get_property: [ SELF, master_ips ] }
proxy_cache_manager: { get_property: [ SELF, cms_proxycache_token_manager ] }
proxy_tts: { get_property: [ SELF, watts_endpoint ] }
proxy_iam_endpoint: { get_property: [ SELF, iam_endpoint ] }
proxy_credential_endpoint: { get_property: [ SELF, iam_credential_endpoint ] }
proxy_audience: { get_property: [ SELF, audience ] }
oneclient_token: { get_property: [ SELF, oneclient_token ] }
oneprovider_name: { get_property: [ SELF, oneprovider_name ] }
requirements:
- host:
capability: tosca.capabilities.indigo.MesosMaster
relationship: tosca.relationships.HostedOn
node: tosca.nodes.SoftwareComponent
occurrences: [1, 1]
tosca.nodes.indigo.HTCondorClient:
derived_from: tosca.nodes.SoftwareComponent
properties:
condor_host:
type: string
required: yes
default: DUMMY
schedd_name:
type: string
required: yes
default: DUMMY
iam_client_id:
type: string
required: yes
default: DUMMY
iam_client_secret:
type: string
required: yes
default: DUMMY
iam_access_token:
type: string
required: yes
default: DUMMY
admin_DN:
type: string
required: yes
default: DUMMY
artifacts:
htcondor_client_config_role:
file: cloud-pg.ansible_role_condor_client,v2.0.0-dodas-rc3
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/htcondor_client_config.yml
inputs:
condor_host: { get_property: [ SELF, condor_host ] }
schedd_name: { get_property: [ SELF, schedd_name ] }
iam_client_id: { get_property: [ SELF, iam_client_id ] }
iam_client_secret: { get_property: [ SELF, iam_client_secret ] }
iam_access_token: { get_property: [ SELF, iam_access_token ] }
admin_DN: { get_property: [ SELF, admin_DN ] }
tosca.nodes.indigo.HTCondorServices:
derived_from: tosca.nodes.SoftwareComponent
properties:
htcondor_config_condor_image:
type: string
required: no
config_mode:
type: string
required: yes
htcondor_config_condor_host:
type: string
required: no
htcondor_config_schedd_ip_pub:
type: string
required: yes
htcondor_config_schedd_ip:
type: string
required: yes
htcondor_config_ccb_ip:
type: string
required: yes
htcondor_config_ccb_address:
type: string
required: no
htcondor_config_high_port:
type: string
required: no
htcondor_config_low_port:
type: string
required: no
master_ips:
required: yes
type: list
entry_schema:
type: string
prepare_only:
type: boolean
required: yes
default: false
lb_ips:
required: yes
type: list
entry_schema:
type: string
proxycache_host:
type: string
required: yes
iam_access_token:
type: string
description: INDIGO IAM access token
required: yes
iam_client_id:
type: string
description: INDIGO IAM client id
required: yes
iam_client_secret:
type: string
description: INDIGO IAM client secret
required: yes
marathon_username:
type: string
required: no
default: 'admin'
marathon_password:
type: string
required: no
default: 'admin'
proxycache_token_manager:
type: string
required: no
default: 'ZOOKEEPER'
watts_endpoint:
type: string
required: no
default: 'https://dodas-tts.cloud.cnaf.infn.it'
iam_endpoint:
type: string
required: no
default: 'https://dodas-iam.cloud.cnaf.infn.it/'
iam_credential_endpoint:
type: string
required: no
default: 'https://dodas-tts.cloud.cnaf.infn.it/api/v2/iam/credential'
audience:
type: string
required: no
default: 'https://dodas-tts.cloud.cnaf.infn.it'
proxycache_image:
type: string
required: no
default: "dodasts/ttscache"
hostname_ccb:
type: string
required: no
default: "vnode-1.localdomain"
hostname_schedd:
type: string
required: no
default: "vnode-2.localdomain"
artifacts:
htcondor_config_role:
file: indigo-dc.htcondor_config,v2.0.0-dodas-rc9
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/htcondor_master_config.yml
inputs:
prepare_only: { get_property: [ SELF, prepare_only ] }
marathon_username: { get_property: [ SELF, marathon_username ] }
marathon_password: { get_property: [ SELF, marathon_password ] }
hostname_ccb: { get_property: [ SELF, hostname_ccb ] }
hostname_schedd: { get_property: [ SELF, hostname_schedd ] }
condor_host: { get_property: [ SELF, htcondor_config_condor_host ] }
zookeeper_peers: { get_property: [ SELF, master_ips ] }
zookeeper_host_list: { get_property: [ SELF, master_ips ] }
lb_peers: { get_property: [ SELF, lb_ips ] }
htcondor_config_schedd_ip_pub: { get_property: [ SELF, htcondor_config_schedd_ip_pub ] }
htcondor_config_schedd_ip: { get_property: [ SELF, htcondor_config_schedd_ip ] }
ccb_address: { get_property: [ SELF, htcondor_config_ccb_address ] }
high_port: { get_property: [ SELF, htcondor_config_high_port ] }
low_port: { get_property: [ SELF, htcondor_config_low_port ] }
config_mode: { get_property: [ SELF, config_mode ] }
htcondor_config_condor_image: { get_property: [ SELF, htcondor_config_condor_image ] }
htcondor_config_ccb_ip: { get_property: [ SELF, htcondor_config_ccb_ip ] }
proxycache_host: { get_property: [ SELF, proxycache_host ] }
proxy_cache_manager: { get_property: [ SELF, proxycache_token_manager ] }
proxy_tts: { get_property: [ SELF, watts_endpoint ] }
proxy_iam_endpoint: { get_property: [ SELF, iam_endpoint ] }
proxy_credential_endpoint: { get_property: [ SELF, iam_credential_endpoint ] }
proxy_audience: { get_property: [ SELF, audience ] }
config_proxycache_host: { get_property: [ SELF, proxycache_host ] }
config_iam_token: { get_property: [ SELF, iam_access_token ] }
config_iam_client_id: { get_property: [ SELF, iam_client_id ] }
config_iam_client_secret: { get_property: [ SELF, iam_client_secret ] }
config_proxycache_image: { get_property: [ SELF, proxycache_image ]}
requirements:
- host:
capability: tosca.capabilities.indigo.ClusterMaster
relationship: tosca.relationships.HostedOn
node: tosca.nodes.SoftwareComponent
tosca.nodes.DODAS.HelmInstall:
derived_from: tosca.nodes.SoftwareComponent
properties:
name:
type: string
description: name of the helm deployment
required: yes
chart:
type: string
description: chart name
required: yes
repos:
type: list
entry_schema:
type: map
entry_schema:
type: string
values_file:
type: string
description: values.yaml file content
required: no
default: ""
values_url:
type: string
description: values.yaml file url
required: no
default: ""
kubeconfig_path:
type: string
required: no
default: /etc/kubernetes/admin.conf
inline_options:
type: string
required: no
default: ""
helm_version:
type: string
required: no
default: "v2"
role_name:
type: string
required: no
default: dodas.helm
artifacts:
helm_config_role:
file: dodas.helm,v2.0.0-rc5
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
name: { get_property: [ SELF, name ] }
chart: { get_property: [ SELF, chart ] }
values_file: { get_property: [ SELF, values_file ] }
values_url: { get_property: [ SELF, values_url ] }
inline_options: { get_property: [ SELF, inline_options ] }
kubeconfig_path: { get_property: [ SELF, kubeconfig_path ] }
helm_version: { get_property: [ SELF, helm_version ] }
repos: { get_property: [ SELF, repos ] }
tosca.nodes.DODAS.KubeCreate:
derived_from: tosca.nodes.SoftwareComponent
properties:
name:
type: string
description: name of the helm deployment
required: no
default: ""
namespace:
type: string
required: no
default: default
url:
type: string
required: no
default: ""
manifest_file:
type: string
required: no
default: ""
inline_options:
type: string
required: no
default: ""
externalParams:
type: list
required: no
entry_schema:
type: string
role_name:
type: string
required: no
default: dodas.kubecreate
artifacts:
kubecreate_config_role:
file: dodas.kubecreate,v2.0.0-rc4
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
name: { get_property: [ SELF, name ] }
namespace: { get_property: [ SELF, namespace ] }
url: { get_property: [ SELF, url ] }
inline_options: { get_property: [ SELF, inline_options ] }
manifest_file: { get_property: [ SELF, manifest_file ] }
externalParams: { get_property: [ SELF, externalParams ] }
tosca.nodes.DODAS.KubeCreate.Grafana:
derived_from: tosca.nodes.DODAS.KubeCreate
properties:
admin_pwd:
type: string
description: admin password for Grafana
required: no
default: "testme"
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
name: { get_property: [ SELF, name ] }
namespace: { get_property: [ SELF, namespace ] }
url: { get_property: [ SELF, url ] }
inline_options: { get_property: [ SELF, inline_options ] }
manifest_file: { get_property: [ SELF, manifest_file ] }
externalParams: { get_property: [ SELF, externalParams ] }
admin_pwd: { get_property: [ SELF, admin_pwd ] }
# ORCHESTRATORS
############################################################
# - tosca.nodes.DODAS.k3s
# - tosca.nodes.DODAS.WorkerNode.Kubernetes
# - tosca.nodes.DODAS.FrontEnd.Kubernetes
tosca.nodes.DODAS.k3s:
derived_from: tosca.nodes.SoftwareComponent
properties:
master_ip:
type: string
required: yes
mode:
type: string
required: yes
k3s_version:
type: string
required: no
default: v1.17.0+k3s.1
node_label:
type: string
required: no
default: unlabelled=true
role_name:
type: string
required: no
default: dodas.k3s
artifacts:
k3s_config_role:
file: dodas.k3s,v2.0.0-rc2
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
master_ip: { get_property: [ SELF, master_ip ] }
mode: { get_property: [ SELF, mode ] }
node_label: { get_property: [ SELF, node_label ] }
role_name: { get_property: [ SELF, role_name ] }
k3s_version: { get_property: [ SELF, k3s_version ] }
tosca.nodes.DODAS.WorkerNode.Kubernetes:
derived_from: tosca.nodes.indigo.LRMS.WorkerNode
metadata:
icon: /images/kubernetesWN.png
properties:
admin_username:
required: no
type: string
default: kubeuser
admin_token:
required: no
type: string
default: some_insecure_token
kubelet_extra_args:
required: no
type: string
default: ""
kube_version:
required: no
type: string
default: 1.17.0
nodelabel:
type: string
required: no
default: "testme=true"
artifacts:
docker_role:
file: indigo-dc.docker,2.1.2-beta
type: tosca.artifacts.AnsibleGalaxy.role
kube_role:
file: dodas.kubernetes,v2.1.0-ingress-pre5
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.openvpn
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/kube_wn_install.yaml
inputs:
kube_front_end_ip: { get_property: [ SELF, front_end_ip ] }
wn_hybrid_cluster: { get_property: [ SELF, hybrid] }
kubelet_extra_args: { get_property: [ SELF, kubelet_extra_args] }
kube_version: { get_property: [ SELF, kube_version] }
kube_admin_username: { get_property: [ SELF, admin_username] }
kube_admin_token: { get_property: [ SELF, admin_token] }
nodelabel: { get_property: [ SELF, nodelabel] }
tosca.nodes.DODAS.FrontEnd.Kubernetes:
derived_from: tosca.nodes.indigo.LRMS.FrontEnd
metadata:
icon: /images/kubernetesFE.png
properties:
admin_username:
required: no
type: string
default: kubeuser
admin_token:
required: no
type: string
default: some_insecure_token
kube_version:
required: no
type: string
default: 1.17.0
kube_deploy_dashboard:
required: no
type: string
default: k8s
artifacts:
docker_role:
file: indigo-dc.docker,2.1.2-beta
type: tosca.artifacts.AnsibleGalaxy.role
kube_role:
file: dodas.kubernetes,v2.1.0-ingress-pre5
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.openvpn
type: tosca.artifacts.AnsibleGalaxy.role
capabilities:
lrms:
type: tosca.capabilities.indigo.LRMS.Kubernetes
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/kube_fe_install.yaml
inputs:
kube_front_end_ip: { get_attribute: [ HOST, private_address, 0 ] }
kube_api_server_public: { get_attribute: [ HOST, public_address, 0 ] }
fe_hybrid_cluster: { get_property: [ SELF, hybrid] }
kube_admin_username: { get_property: [ SELF, admin_username] }
kube_admin_token: { get_property: [ SELF, admin_token] }
kube_version: { get_property: [ SELF, kube_version] }
kube_deploy_dashboard: { get_property: [ SELF, kube_deploy_dashboard ] }
#TO IMPROVE with DIEGO
tosca.nodes.indigo.NfsClient:
derived_from: tosca.nodes.SoftwareComponent
properties:
remote_path:
type: string
required: yes
local_path:
type: string
required: yes
server_host:
type: string
required: yes
artifacts:
nfs_role:
file: indigo-dc.nfs
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/nfs_client.yml
inputs:
remote_path: { get_property: [ SELF, remote_path ] }
local_path: { get_property: [ SELF, local_path ] }
server_host: { get_property: [ SELF, server_host ] }
# TO REMOVE. TEMP WORKAROUND TO AVOID PaaS Orchestrator parser issue
tosca.nodes.DODAS.pip_manager_cygno:
derived_from: tosca.nodes.SoftwareComponent
properties:
pip_package:
type: string
required: no
default: python3-pip
role_name:
type: string
required: no
default: dodas.pip_manager_cygno
artifacts:
pip_manager_cygno_config_role:
file: dodas.pip_manager_cygno
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
pip_package: { get_property: [ SELF, pip_package ] }
tosca.nodes.DODAS.pip_manager:
derived_from: tosca.nodes.SoftwareComponent
properties:
pip_package:
type: string
required: no
default: python3-pip
packages:
type: list
required: no
entry_schema:
type: map
entry_schema:
type: string
default: []
role_name:
type: string
required: no
default: dodas.pip_manager
artifacts:
pip_manager_config_role:
file: dodas.pip_manager
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
pip_package: { get_property: [ SELF, pip_package ] }
packages: { get_property: [ SELF, packages ] }
tosca.nodes.DODAS.ml_infn:
derived_from: tosca.nodes.SoftwareComponent
properties:
ml_user:
type: string
required: no
default: cloudadm
jupyter_port:
type: string
required: no
default: 8888
jupyter_token:
type: string
required: yes
default: testme
ml_test_url:
type: string
required: no
default: ""
cvmfs_repositories:
type: list
required: no
entry_schema:
type: string
default: [cms.cern.ch]
role_name:
type: string
required: no
default: dodas.ml_infn
artifacts:
ml_infn_config_role:
file: dodas.ml_infn
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
ml_user: { get_property: [ SELF, ml_user ] }
jupyter_port: { get_property: [ SELF, jupyter_port ] }
jupyter_token: { get_property: [ SELF, jupyter_token ] }
cvmfs_repositories: { get_property: [ SELF, cvmfs_repositories ] }
tosca.nodes.DODAS.cygno:
derived_from: tosca.nodes.SoftwareComponent
properties:
cygno_user:
type: string
required: no
default: cloudadm
jupyter_port:
type: string
required: no
default: 8888
jupyter_token:
type: string
required: yes
default: testme
role_name:
type: string
required: no
default: dodas.cygno
artifacts:
cygno_config_role:
file: dodas.cygno
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
cygno_user: { get_property: [ SELF, cygno_user ] }
jupyter_port: { get_property: [ SELF, jupyter_port ] }
jupyter_token: { get_property: [ SELF, jupyter_token ] }
tosca.nodes.DODAS.root_cern:
derived_from: tosca.nodes.SoftwareComponent
properties:
centos_url:
type: string
required: no
default: https://root.cern/download/root_v6.20.04.Linux-centos7-x86_64-gcc4.8.tar.gz
role_name:
type: string
required: no
default: dodas.root_cern
artifacts:
root_cern_config_role:
file: dodas.root_cern
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
centos_url: { get_property: [ SELF, centos_url ] }
tosca.nodes.DODAS.single-node-jupyterhub:
derived_from: tosca.nodes.SoftwareComponent
properties:
use_gpu:
type: boolean
default: false
install_docker:
type: boolean
default: true
install_docker_compose:
type: boolean
default: true
monitoring:
type: boolean
default: true
iam_url:
type: string
default: "https://iam.cloud.infn.it/"
iam_groups:
type: string
default: "beta_tester"
iam_admin_groups:
type: string
default: "beta_tester"
prepare_jupyter:
type: boolean
default: true
run_jupyter:
type: boolean
default: true
jupyter_repo_url:
type: string
default: "https://github.com/dodas-ts/single-node-jupyterhub"
jupyter_images:
type: string
default: "dodasts/ml_infn:beta-v2"
cvmfs_repos:
type: string
default: ""
server_ip:
type: string
default: ""
role_name:
type: string
required: false
default: ansible-role-jupyterhub-env
artifacts:
ml_role:
file: git+https://github.com/DODAS-TS/ansible-role-jupyterhub-env
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
use_gpu: { get_property: [ SELF, use_gpu ] }
install_docker: { get_property: [ SELF, install_docker ] }
install_docker_compose: { get_property: [ SELF, install_docker_compose ] }
monitoring: { get_property: [ SELF, monitoring ] }
iam_url: { get_property: [ SELF, iam_url ] }
iam_groups: { get_property: [ SELF, iam_groups ] }
iam_admin_groups: { get_property: [ SELF, iam_admin_groups ] }
prepare_jupyter: { get_property: [ SELF, prepare_jupyter ] }
run_jupyter: { get_property: [ SELF, run_jupyter ] }
jupyter_repo_url: { get_property: [ SELF, jupyter_repo_url ] }
jupyter_images: { get_property: [ SELF, jupyter_images ] }
cvmfs_repos: { get_property: [ SELF, cvmfs_repos ] }
server_ip: { get_property: [ SELF, server_ip ] }
tosca.nodes.DODAS.JupyterVM:
derived_from: tosca.nodes.SoftwareComponent
properties:
vm_user:
type: string
required: no
default: cloudadm
jupyter_port:
type: string
required: no
default: 8888
jupyter_token:
type: string
required: no
default: testme
persistence:
type: string
description: "Choose between mount method: 's3-goofys' (suggested) and 's3-contents'"
required: no
default: ""
s3_access_id:
type: string
required: no
default: ""
s3_access_key:
type: string
required: no
default: ""
s3_bucket:
type: string
required: no
default: ""
s3_endpoint:
type: string
required: no
default: ""
s3_mount_prefix:
type: string
required: no
default: ""
role_name:
type: string
required: no
default: dodas.jupytervm
artifacts:
jupytervm_config_role:
file: dodas.jupytervm
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
vm_user: { get_property: [ SELF, vm_user ] }
jupyter_port: { get_property: [ SELF, jupyter_port ] }
jupyter_token: { get_property: [ SELF, jupyter_token ] }
persistence: { get_property: [ SELF, persistence ] }
s3_access_id: { get_property: [ SELF, s3_access_id ] }
s3_access_key: { get_property: [ SELF, s3_access_key ] }
s3_bucket: { get_property: [ SELF, s3_bucket ] }
s3_endpoint: { get_property: [ SELF, s3_endpoint ] }
s3_mount_prefix: { get_property: [ SELF, s3_mount_prefix ] }
tosca.nodes.DODAS.HelmInstall.HTCondor:
derived_from: tosca.nodes.DODAS.HelmInstall
properties:
condor_host:
type: string
required: no
default: "DUMMY"
ccb_address:
type: string
required: no
default: "DUMMY"
schedd_netinterface:
type: string
required: no
default: "DUMMY"
k8s_master_ip:
type: string
required: yes
iam_token:
type: string
required: yes
htcondor_docker_image:
type: string
required: yes
nfs_master_ip:
type: string
required: no
default: ""
nfs_path:
type: string
required: no
default: ""
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
name: { get_property: [ SELF, name ] }
chart: { get_property: [ SELF, chart ] }
values_file: { get_property: [ SELF, values_file ] }
values_url: { get_property: [ SELF, values_url ] }
inline_options: { get_property: [ SELF, inline_options ] }
kubeconfig_path: { get_property: [ SELF, kubeconfig_path ] }
repos: { get_property: [ SELF, repos ] }
condor_host: { get_property: [ SELF, condor_host ] }
ccb_address: { get_property: [ SELF, ccb_address ] }
schedd_netinterface: { get_property: [ SELF, schedd_netinterface ] }
iam_token: { get_property: [ SELF, iam_token ] }
htcondor_docker_image: { get_property: [ SELF, htcondor_docker_image ] }
k8s_master_ip: { get_property: [ SELF, k8s_master_ip ] }
nfs_master_ip: { get_property: [ SELF, nfs_master_ip ] }
nfs_path: { get_property: [ SELF, nfs_path ] }
helm_version: { get_property: [ SELF, helm_version ] }
tosca.nodes.DODAS.HelmInstall.Spark:
derived_from: tosca.nodes.DODAS.HelmInstall
properties:
externalIp:
type: string
required: no
default: ""
jupyter_token:
type: string
required: no
default: testme
s3_bucket:
type: string
required: no
default: ""
s3_endpoint:
type: string
required: no
default: ""
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
name: { get_property: [ SELF, name ] }
chart: { get_property: [ SELF, chart ] }
values_file: { get_property: [ SELF, values_file ] }
values_url: { get_property: [ SELF, values_url ] }
inline_options: { get_property: [ SELF, inline_options ] }
kubeconfig_path: { get_property: [ SELF, kubeconfig_path ] }
repos: { get_property: [ SELF, repos ] }
externalIp: { get_property: [ SELF, externalIp ] }
jupyter_token: { get_property: [ SELF, jupyter_token ] }
s3_bucket: { get_property: [ SELF, s3_bucket ] }
s3_endpoint: { get_property: [ SELF, s3_endpoint ] }
helm_version: { get_property: [ SELF, helm_version ] }
tosca.nodes.indigo.LRMS.WorkerNode.Mesos:
derived_from: tosca.nodes.indigo.LRMS.WorkerNode
metadata:
icon: /images/mesos.png
capabilities:
host:
type: tosca.capabilities.indigo.MesosSlave
properties:
# Set the current data of the mesos server
# but it can also specified in the TOSCA document
master_ips:
required: yes
type: list
entry_schema:
type: string
enable_nfs_share:
type: boolean
required: no
default: false
enable_consul_sd:
type: boolean
required: no
default: true
enable_gpu_support:
type: boolean
required: no
default: false
artifacts:
docker_agent_role:
file: indigo-dc.docker,2.1.2-beta
#file: git+https://github.com/indigo-dc/ansible-role-docker.git,fix/issue_13
type: tosca.artifacts.AnsibleGalaxy.role
consul_agent_role:
file: indigo-dc.consul,master
type: tosca.artifacts.AnsibleGalaxy.role
mesos_agent_role:
file: indigo-dc.mesos,master
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/mesos_slave_install.yml
inputs:
mesos_masters_list_ips: { get_property: [ SELF, master_ips ] }
enable_nfs_share: { get_property: [ SELF, enable_nfs_share ] }
enable_consul_sd: { get_property: [ SELF, enable_consul_sd ] }
mesos_enable_gpu_support: { get_property: [ SELF, enable_gpu_support ] }
front_end_ip: { get_property: [ SELF, front_end_ip ] }
public_front_end_ip: { get_property: [ SELF, public_front_end_ip ] }
wn_hybrid_cluster: { get_property: [ SELF, hybrid] }
tosca.nodes.indigo.MesosSlave:
derived_from: tosca.nodes.indigo.LRMS.WorkerNode.Mesos
tosca.nodes.indigo.CmsOneclient:
derived_from: tosca.nodes.SoftwareComponent
properties:
oneclient_pkg:
type: string
required: yes
artifacts:
oneclient_role:
file: indigo-dc.oneclient,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/onedata/cms_oneclient.yml
inputs:
oneclient_pkg: { get_property: [ SELF, oneclient_pkg ] }
tosca.nodes.indigo.CmsWnConfig:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/cms.png
properties:
cms_local_site:
type: string
required: yes
cms_stageoutsite:
type: string
required: yes
cms_stageoutprotocol:
type: string
required: yes
cms_phedexnode:
type: string
required: yes
cms_stageoutcommand:
type: string
required: yes
cms_fallback_phedexnode:
type: string
required: no
default: 'T2_IT_myt2'
cms_fallback_lfn_prefix:
type: string
required: no
default: 'srm://t2-srm-02.lnl.infn.it:8443/srm/managerv2?SFN=xxxxxxx'
cms_fallback_command:
type: string
required: no
default: 'gfal2'
cms_input_path:
type: string
required: no
default: 'my/oneclient/path'
cms_input_protocol:
type: string
required: no
default: 'xrootd'
mysquid_host:
type: string
required: yes
proxycache_host:
type: string
required: yes
monitordb_ip:
type: string
required: no
elasticsearch_secret:
type: string
required: no
artifacts:
cms_config_role:
file: indigo-dc.cms_config,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/cms_wn_configure.yml
inputs:
cms_config_mysquid_host: { get_property: [ SELF, mysquid_host ] }
cms_config_proxycache_host: { get_property: [ SELF, proxycache_host ] }
cms_config_cms_local_site: { get_property: [ SELF, cms_local_site ] }
cms_config_stageoutsite: { get_property: [ SELF, cms_stageoutsite ] }
cms_config_stageoutprotocol: { get_property: [ SELF, cms_stageoutprotocol ] }
cms_config_stageoutcommand: { get_property: [ SELF, cms_stageoutcommand ] }
cms_config_phedexnode: { get_property: [ SELF, cms_phedexnode ] }
cms_config_fallback_phedexnode: { get_property: [ SELF,cms_fallback_phedexnode ] }
cms_config_fallback_lfn_prefix: { get_property: [ SELF,cms_fallback_lfn_prefix ] }
cms_config_fallback_command: { get_property: [ SELF,cms_fallback_command ] }
cms_input_path: { get_property: [ SELF, cms_input_path ] }
cms_input_protocol: { get_property: [ SELF, cms_input_protocol ] }
cms_config_elastic_secret: { get_property: [ SELF, elasticsearch_secret ] }
monitordb_ip: { get_property: [ SELF, monitordb_ip ] }
requirements:
- host:
capability: tosca.capabilities.indigo.MesosSlave
relationship: tosca.relationships.HostedOn
node: tosca.nodes.SoftwareComponent
occurrences: [1, 1]
tosca.nodes.indigo.MesosLoadBalancer:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/mesos.png
properties:
master_ips:
required: yes
type: list
entry_schema:
type: string
marathon_username:
type: string
required: no
default: admin
marathon_password:
type: string
required: yes
enable_consul_sd:
type: boolean
required: false
default: true
hybrid:
type: boolean
description: Flag to specify that this ElasticCluster will work in a hybrid environment
default: false
required: false
artifacts:
docker_agent_role:
file: indigo-dc.docker,master
type: tosca.artifacts.AnsibleGalaxy.role
consul_agent_role:
file: indigo-dc.consul,master
type: tosca.artifacts.AnsibleGalaxy.role
marathon_lb_role:
file: indigo-dc.marathon-lb,master
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/mesos_lb_install.yml
inputs:
enable_consul_sd: { get_property: [ SELF, enable_consul_sd ] }
master_ips: { get_property: [ SELF, master_ips ] }
marathon_username: { get_property: [ SELF, marathon_username ] }
marathon_password: { get_property: [ SELF, marathon_password ] }
lb_hybrid_cluster: { get_property: [ SELF, hybrid ] }
requirements:
- host:
capability: tosca.capabilities.Container
node: tosca.nodes.indigo.Compute
relationship: tosca.relationships.HostedOn
tosca.nodes.indigo.SparkMesos:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/spark-mesos.png
properties:
marathon_password:
type: string
required: true
zookeeper_peers:
type: string
required: true
spark_mesos_deploy_app:
type: string
constraints:
- valid_values: [ apache-zeppelin, spark-dispatcher ]
required: false
spark_hdfs_uri:
type: string
required: false
default: ''
spark_swift_auth_url:
type: string
required: false
default: ''
spark_swift_http_port:
type: string
required: false
default: '8080'
spark_swift_region:
type: string
required: false
default: ''
spark_swift_tenant:
type: string
required: false
default: ''
spark_swift_username:
type: string
required: false
default: ''
spark_swift_password:
type: string
required: false
default: ''
spark_swift_provider:
type: string
required: false
default: 'Test'
spark_cores_max:
type: integer
required: false
default: '-1'
spark_executor_cores:
type: integer
required: false
default: '-1'
spark_executor_mem:
type: scalar-unit.size
required: false
default: '0 GB'
spark_driver_mem:
type: scalar-unit.size
required: false
default: '0 GB'
spark_driver_cores:
type: integer
required: false
default: '-1'
artifacts:
spark_mesos_role:
file: indigo-dc.spark-mesos,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/mesos/spark_mesos_setup.yml
inputs:
marathon_password: { get_property: [ SELF, marathon_password ] }
zookeeper_peers: { get_property: [ SELF, zookeeper_peers ] }
spark_mesos_deploy_app: { get_property: [ SELF, spark_mesos_deploy_app ] }
spark_hdfs_uri: { get_property: [ SELF, spark_hdfs_uri ] }
spark_swift_auth_url: { get_property: [ SELF, spark_swift_auth_url ] }
spark_mesos_swift_http_port: { get_property: [ SELF, spark_swift_http_port ] }
spark_mesos_swift_region: { get_property: [ SELF, spark_swift_region ] }
spark_mesos_swift_tenant: { get_property: [ SELF, spark_swift_tenant ] }
spark_mesos_swift_username: { get_property: [ SELF, spark_swift_username ] }
spark_mesos_swift_password: { get_property: [ SELF, spark_swift_password ] }
spark_mesos_swift_provider: { get_property: [ SELF, spark_swift_provider ] }
spark_mesos_cores_max: { get_property: [ SELF, spark_cores_max ] }
spark_mesos_executor_cores: { get_property: [ SELF, spark_executor_cores ] }
spark_mesos_executor_mem: { get_property: [ SELF, spark_executor_mem ] }
spark_mesos_driver_mem: { get_property: [ SELF, spark_driver_mem ] }
spark_mesos_driver_cores: { get_property: [ SELF, spark_driver_cores ] }
requirements:
- host:
capability: tosca.capabilities.indigo.MesosMaster
relationship: tosca.relationships.HostedOn
node: tosca.nodes.SoftwareComponent
occurrences: [1, 1]
tosca.nodes.indigo.OneDataStorage:
derived_from: tosca.nodes.BlockStorage
metadata:
icon: /images/onedata.png
properties:
size:
# to overwrite BlockStorage size property to set it as not required
type: scalar-unit.size
required: false
oneprovider_host:
type: list
entry_schema:
type: string
required: false
onezone_endpoint:
type: string
required: false
dataspace:
type: list
entry_schema:
type: string
required: false
credential:
type: tosca.datatypes.Credential
required: true
tosca.nodes.indigo.HadoopMaster:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/hadoop-master.jpg
artifacts:
hadoop_role:
file: indigo-dc.hadoop,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/hadoop/hadoop_master_install.yml
inputs:
hadoop_master_ip: { get_attribute: [ HOST, private_address, 0 ] }
tosca.nodes.indigo.HadoopSlave:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/hadoop-wn.jpg
properties:
master_ip:
required: yes
type: string
artifacts:
hadoop_role:
file: indigo-dc.hadoop,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/hadoop/hadoop_wn_install.yml
inputs:
hadoop_master_ip: { get_property: [ SELF, master_ip ] }
tosca.nodes.indigo.HaddockApp:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/Haddock.png
properties:
haddock_app_name:
type: string
description: Haddocking application
required: true
constraints:
- valid_values: [ disvis, powerfit ]
artifacts:
galaxy_role:
file: indigo-dc.disvis-powerfit,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/haddock/haddock_install.yml
inputs:
haddock_app_name: { get_property: [ SELF, haddock_app_name ] }
tosca.nodes.indigo.Disvis:
derived_from: tosca.nodes.indigo.HaddockApp
metadata:
icon: /images/disvis.png
properties:
haddock_app_name:
type: string
required: true
default: disvis
constraints:
- equal: disvis
tosca.nodes.indigo.Powerfit:
derived_from: tosca.nodes.indigo.HaddockApp
metadata:
icon: /images/powerfit.png
properties:
haddock_app_name:
type: string
required: true
default: powerfit
constraints:
- equal: powerfit
tosca.nodes.indigo.Eubiosteo:
derived_from: tosca.nodes.SoftwareComponent
artifacts:
galaxy_role:
file: indigo-dc.eubiosteo,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/eubiosteo/eubiosteo_install.yml
tosca.nodes.indigo.Ambertools:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/amber.jpg
artifacts:
galaxy_role:
file: indigo-dc.ambertools,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/ambertools/ambertools_install.yml
tosca.nodes.indigo.Kepler:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/kepler.jpeg
artifacts:
galaxy_role:
file: indigo-dc.kepler,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/kepler/kepler_install.yml
tosca.nodes.indigo.OphidiaServer:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/ophidia-server.png
properties:
io_ips:
type: list
entry_schema:
type: string
description: List of IPs of the Ophidia IO nodes
required: false
default: []
artifacts:
ophidia_role:
file: indigo-dc.ophidia-cluster,master
type: tosca.artifacts.AnsibleGalaxy.role
slurm_role:
file: indigo-dc.slurm,master
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/ophidia/ophidia_server_install.yml
inputs:
ophidia_io_ips: { get_property: [ SELF, io_ips ] }
tosca.nodes.indigo.OphidiaIO:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/ophidia-io.png
properties:
server_ip:
type: string
description: IP of the OphidiaServer node
required: true
artifacts:
ophidia_role:
file: indigo-dc.ophidia-cluster,master
type: tosca.artifacts.AnsibleGalaxy.role
slurm_role:
file: indigo-dc.slurm,master
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/ophidia/ophidia_io_install.yml
inputs:
ophidia_server_ip: { get_property: [ SELF, server_ip ] }
tosca.nodes.indigo.Batch.Job:
derived_from: tosca.nodes.Root
properties:
executable:
required: yes
type: string
description: Name of the executable file
arguments:
required: no
type: string
description: Arguments for the job executable
environment:
type: map
entry_schema:
type: string
description: A map of string representing environment settings
tosca.nodes.indigo.Qcg.Job:
derived_from: tosca.nodes.indigo.Batch.Job
properties:
directory:
required: no
type: string
description: Work directory for the Job
schema:
required: no
type: string
description: Job schema
note:
required: no
type: string
description: User's note for the Job
# https://wiki.italiangrid.it/twiki/bin/view/CREAM/JdlGuide
tosca.nodes.indigo.Grid.Job:
derived_from: tosca.nodes.indigo.Batch.Job
properties:
ce_urls:
required: yes
type: list
entry_schema:
type: string
description: A list of CREAM CE identifiers to launch the job
stdoutput:
required: no
description: Name of the file to get the standard output stream of the user application
type: string
stderror:
required: no
type: string
description: Name of the file to get the standard error stream of the user application
outputsandbox:
type: list
entry_schema:
type: string
description: A list of output sandbox files
inputsandbox:
type: list
entry_schema:
type: string
description: A list of input sandbox files (URL of files located in gridFTP servers)
virtualorganisation:
required: no
type: string
description: Specify the VO of the user
tosca.nodes.indigo.LRMS.WorkerNode.Kubernetes:
derived_from: tosca.nodes.indigo.LRMS.WorkerNode
properties:
kube_version:
required: no
type: string
default: 1.16.4
kubelet_extra_args:
required: no
type: string
default: ""
node_name:
required: no
type: string
default: "AUTO"
kube_network:
required: no
type: string
default: flannel
artifacts:
kube_role:
file: dciangot.kubernetes,v2.0.0-dodas-rc15
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.openvpn
type: tosca.artifacts.AnsibleGalaxy.role
ntp_role:
file: grycap.ntp
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/k8s/artifacts/lrms/kubernetes/kube_wn_install.yml
inputs:
node_name: { get_property: [ SELF, node_name ] }
kube_version: { get_property: [ SELF, kube_version ] }
kubelet_extra_args: { get_property: [ SELF, kubelet_extra_args ] }
kube_front_end_ip: { get_property: [ SELF, front_end_ip ] }
wn_hybrid_cluster: { get_property: [ SELF, hybrid] }
kube_network: { get_property: [ SELF, kube_network] }
tosca.nodes.indigo.LRMS.FrontEnd.Kubernetes:
derived_from: tosca.nodes.indigo.LRMS.FrontEnd
properties:
admin_username:
required: no
type: string
default: kubeuser
admin_token:
required: no
type: string
value: some_insecure_token
kube_version:
required: no
type: string
default: 1.16.4
kube_network:
required: no
type: string
default: flannel
artifacts:
kube_role:
file: dciangot.kubernetes,v2.0.0-dodas-rc15
type: tosca.artifacts.AnsibleGalaxy.role
nfs_role:
file: indigo-dc.nfs
type: tosca.artifacts.AnsibleGalaxy.role
openvpn_role:
file: indigo-dc.openvpn
type: tosca.artifacts.AnsibleGalaxy.role
ntp_role:
file: grycap.ntp
type: tosca.artifacts.AnsibleGalaxy.role
capabilities:
lrms:
type: tosca.capabilities.indigo.LRMS.Kubernetes
host:
type: tosca.capabilities.indigo.KubernetesMaster
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/k8s/artifacts/lrms/kubernetes/kube_fe_install.yml
inputs:
kube_version: { get_property: [ SELF, kube_version ] }
kube_front_end_ip: { get_attribute: [ HOST, private_address, 0 ] }
fe_hybrid_cluster: { get_property: [ SELF, hybrid] }
kube_admin_username: { get_property: [ SELF, admin_username] }
kube_admin_token: { get_property: [ SELF, admin_token] }
kube_network: { get_property: [ SELF, kube_network] }
tosca.nodes.indigo.JupyterHub:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/jupyterhub.png
properties:
spawner:
required: no
type: string
default: local
constraints:
- valid_values: [ local, kubernetes ]
authenticator:
required: no
type: string
default: local
constraints:
- valid_values: [ local, dummy ]
artifacts:
kube_role:
file: indigo-dc.jupyterhub,master
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/jupyter/jupyterhub_install.yml
inputs:
jupyterhub_spawner: { get_property: [ SELF, spawner ] }
jupyterhub_authenticator: { get_property: [ SELF, spawner ] }
tosca.nodes.indigo.OnedataSpace:
derived_from: tosca.nodes.Root
attributes:
selected_provider:
type: string
properties:
token:
required: no
type: string
space:
required: yes
type: string
oneproviders:
required: no
type: list
entry_schema:
type: string
onezone:
required: no
type: string
smartScheduling:
type: boolean
required: false
default: false
tosca.nodes.indigo.OnedataServiceSpace:
derived_from: tosca.nodes.Root
attributes:
space:
type: string
path:
type: string
selected_provider:
type: string
token:
type: string
onezone:
type: string
properties:
smartScheduling:
type: boolean
required: false
default: false
tosca.nodes.indigo.Dynafed:
derived_from: tosca.nodes.Root
properties:
files:
required: yes
type: list
entry_schema:
type: string
tosca.nodes.indigo.BlockStorage:
derived_from: tosca.nodes.BlockStorage
properties:
type:
type: string
required: false
tosca.nodes.indigo.VR.CentralPoint:
derived_from: tosca.nodes.SoftwareComponent
artifacts:
indigovr_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
capabilities:
central_point:
type: tosca.capabilities.Endpoint
valid_source_types: [tosca.nodes.indigo.VR.Client, tosca.nodes.indigo.VR.VRouter]
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/indigovr/central_point_install.yml
tosca.nodes.indigo.VR.Client:
derived_from: tosca.nodes.SoftwareComponent
artifacts:
indigovr_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
requirements:
- central_point:
capability: tosca.capabilities.Endpoint
node: tosca.nodes.indigo.VR.CentralPoint
relationship: tosca.relationships.DependsOn
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/indigovr/standalone_install.yml
inputs:
INDIGOVR_CENTRALPOINT_IP: { get_attribute: [ SELF, central_point, ip_address ] }
tosca.nodes.indigo.VR.VRouter:
derived_from: tosca.nodes.SoftwareComponent
artifacts:
indigovr_role:
file: indigo-dc.indigovr,master
type: tosca.artifacts.AnsibleGalaxy.role
requirements:
- central_point:
capability: tosca.capabilities.Endpoint
node: tosca.nodes.indigo.VR.CentralPoint
relationship: tosca.relationships.DependsOn
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/indigovr/vrouter_install.yml
inputs:
INDIGOVR_CENTRALPOINT_IP: { get_attribute: [ SELF, central_point, ip_address ] }
tosca.nodes.indigo.DEEPaaScont:
derived_from: tosca.nodes.SoftwareComponent
metadata:
icon: /images/deep.png
properties:
dockerhub_img:
type: string
description: docker image from Docker Hub to deploy
required: yes
rclone_conf:
type: string
description: rclone.conf location
required: no
default: "/srv/.rclone.conf"
rclone_url:
type: string
description: remote storage link to access via webdav
default: ""
required: no
rclone_vendor:
type: string
description: rclone vendor
required: no
default: "nextcloud"
rclone_user:
type: string
description: rclone user to access remote storage
required: no
default: ""
rclone_password:
type: string
description: rclone user password
required: no
default: ""
artifacts:
docker_role:
file: grycap.docker
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/deepaas/deepaas_cont.yml
inputs:
deepaas_dockerhub_img: { get_property: [ SELF, dockerhub_img ] }
deepaas_rclone_conf: { get_property: [ SELF, rclone_conf ] }
deepaas_rclone_type: webdav
deepaas_rclone_url: { get_property: [ SELF, rclone_url ] }
deepaas_rclone_vendor: { get_property: [ SELF, rclone_vendor ] }
deepaas_rclone_user: { get_property: [ SELF, rclone_user ] }
deepaas_rclone_pass: { get_property: [ SELF, rclone_password ] }
tosca.nodes.indigo.Elasticsearch:
derived_from: tosca.nodes.SoftwareComponent
properties:
es_version:
type: string
required: false
default: 7.9.3
bind_address:
type: string
required: false
default: 0.0.0.0
discovery_type:
type: string
required: false
default: single-node
enable_security:
type: boolean
default: true
required: false
elastic_password:
type: string
required: false
default: changeme
kibana_system_password:
type: string
required: false
default: changeme
artifacts:
es_role:
file: elastic.elasticsearch,7.9.3
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/elk/elasticsearch_install.yml
inputs:
es_version: { get_property: [ SELF, es_version ] }
bind_host: { get_property: [ SELF, bind_address ] }
discovery_type: { get_property: [ SELF, discovery_type ] }
enable_security: { get_property: [ SELF, enable_security ] }
elastic_password: { get_property: [ SELF, elastic_password ] }
kibana_system_password: { get_property: [ SELF, kibana_system_password ] }
tosca.nodes.indigo.Kibana:
derived_from: tosca.nodes.SoftwareComponent
properties:
kibana_version:
type: string
required: false
default: 7.4.1
elasticsearch_url:
type: string
required: false
default: "http://localhost:9200"
elasticsearch_username:
type: string
required: false
default: kibana
elasticsearch_password:
type: string
required: false
default: changeme
artifacts:
kibana_role:
file: maricaantonacci.kibana,7.4.1
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/elk/kibana_install.yml
inputs:
kibana_version: { get_property: [ SELF, kibana_version ] }
kibana_elasticsearch_url: { get_property: [ SELF, elasticsearch_url ] }
kibana_elasticsearch_username: { get_property: [ SELF, elasticsearch_username ] }
kibana_elasticsearch_password: { get_property: [ SELF, elasticsearch_password ] }
tosca.nodes.indigo.dockerRun:
derived_from: tosca.nodes.SoftwareComponent
properties:
role_name:
type: string
required: no
default: indigo-dc.ansible_role_docker_run
docker_appname:
type: string
required: no
default: ubuntu
docker_image:
type: string
required: no
default: ubuntu
docker_tag:
type: string
required: no
default: latest
docker_ports:
type: string
required: no
default: "80"
docker_command:
type: string
required: no
default: ""
environment_variables:
required: no
default: []
type: list
entry_schema:
type: map
entry_schema:
type: string
artifacts:
helm_config_role:
file: indigo-dc.ansible_role_docker_run
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/dodas/ansible.yaml
inputs:
role_name: { get_property: [ SELF, role_name ] }
appname: { get_property: [ SELF, docker_appname ] }
image: { get_property: [ SELF, docker_image ] }
tag: { get_property: [ SELF, docker_tag ] }
ports: { get_property: [ SELF, docker_ports ] }
command: { get_property: [ SELF, docker_command ] }
environment_variables: { get_property: [ SELF, environment_variables ] }
tosca.nodes.indigo.DockerCompose:
derived_from: tosca.nodes.SoftwareComponent
properties:
docker_compose_version:
type: version
required: no
default: 1.24.1
docker_compose_file_url:
type: string
required: yes
environment_variables:
required: no
default: []
type: list
entry_schema:
type: map
entry_schema:
type: string
project_name:
type: string
required: yes
artifacts:
docker_role:
file: indigo-dc.docker
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/docker/docker-compose_configure.yml
inputs:
project_name: { get_property: [ SELF, project_name ] }
environment_variables: { get_property: [ SELF, environment_variables ] }
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/docker/docker-compose_start.yml
inputs:
docker_compose_version: { get_property: [ SELF, docker_compose_version ] }
docker_compose_file_url: { get_property: [ SELF, docker_compose_file_url ] }
project_name: { get_property: [ SELF, project_name ] }
tosca.nodes.indigo.S3Bucket:
derived_from: tosca.nodes.SoftwareComponent
properties:
bucket_name:
type: string
aws_access_key:
type: string
aws_secret_key:
type: string
s3_url:
type: string
interfaces:
Standard:
create:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/aws/s3_bucket.yml
inputs:
bucket_name: { get_property: [ SELF, bucket_name ] }
aws_access_key: { get_property: [ SELF, aws_access_key ]}
aws_secret_key: { get_property: [ SELF, aws_secret_key ]}
s3_url: { get_property: [ SELF, s3_url ]}
tosca.nodes.indigo.DockerCompose.CloudStorageService:
derived_from: tosca.nodes.indigo.DockerCompose
properties:
owncloud_hostname:
type: string
#default: { concat: [ "oc.", get_attribute: [ HOST, public_address, 0 ], ".myip.cloud.infn.it" ] }
nagios_hostname:
type: string
#default: { concat: [ "nagios.", get_attribute: [ HOST, public_address, 0 ], ".myip.cloud.infn.it" ] }
duplicati_hostname:
type: string
#default: { concat: [ "backup.", get_attribute: [ HOST, public_address, 0 ], ".myip.cloud.infn.it" ] }
traefik_version:
type: string
default: "'2.3'"
owncloud_version:
type: string
default: "'10'"
s3_bucket:
type: string
s3_access_key:
type: string
s3_secret_key:
type: string
s3_endpoint:
type: string
artifacts:
docker_role:
file: indigo-dc.docker
type: tosca.artifacts.AnsibleGalaxy.role
interfaces:
Standard:
configure:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/docker/cloudstorage/configure.yml
inputs:
project_name: { get_property: [ SELF, project_name ] }
owncloud_hostname: { get_property: [ SELF, owncloud_hostname ] }
nagios_hostname: { get_property: [ SELF, nagios_hostname ] }
duplicati_hostname: { get_property: [ SELF, duplicati_hostname ] }
traefik_version: { get_property: [ SELF, traefik_version ] }
owncloud_version: { get_property: [ SELF, owncloud_version ] }
s3_bucket: { get_property: [ SELF, s3_bucket ] }
s3_access_key: { get_property: [ SELF, s3_access_key ] }
s3_secret_key: { get_property: [ SELF, s3_secret_key ] }
s3_endpoint: { get_property: [ SELF, s3_endpoint ] }
environment_variables: { get_property: [ SELF, environment_variables ] }
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/docker/docker-compose_start.yml
inputs:
docker_compose_version: { get_property: [ SELF, docker_compose_version ] }
docker_compose_file_url: { get_property: [ SELF, docker_compose_file_url ] }
project_name: { get_property: [ SELF, project_name ] }
tosca.nodes.indigo.FSEncrypt:
derived_from: tosca.nodes.SoftwareComponent
properties:
passphrase:
type: string
required: yes
mountpoint:
type: string
required: no
default: /export
cipher:
type: string
required: no
default: aes-xts-plain64
keysize:
type: integer
required: no
default: 256 # set key size [default: 256]
hash_algorithm:
type: string
required: no
default: 'sha256' # set hash algorithm used for key derivation
filesystem:
type: string
required: no
default: 'ext4'
device:
type: string
required: no
default: '/dev/vdb'
interfaces:
Standard:
start:
implementation: https://baltig.infn.it/infn-cloud/tosca-types/raw/master/artifacts/fsencryption/luks.yml
inputs:
passphrase: { get_property: [ SELF, passphrase ] }
mountpoint: { get_property: [ SELF, mountpoint ] }
cipher: { get_property: [ SELF, cipher ] }
keysize: { get_property: [ SELF, keysize ] }
hash_algorithm: { get_property: [ SELF, hash_algorithm ] }
filesystem: { get_property: [ SELF, filesystem ] }
device: { get_property: [ SELF, device ] }
policy_types:
tosca.policies.indigo.SlaPlacement:
derived_from: tosca.policies.Placement
properties:
sla_id:
required: true
type: string
tosca.policies.indigo.CredentialsAwareSlaPlacement:
derived_from: tosca.policies.indigo.SlaPlacement
properties:
username:
required: true
type: string
password:
required: true
type: string
subscription_id:
required: false
type: string
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment