tosca_definitions_version: tosca_simple_yaml_1_0 description: >- TOSCA simple profile with a nodejs web server hosting a PayPal sample application which connects to a mongodb database. metadata: template_name: webserver-dbms-2 template_author: TOSCA Simple Profile in YAML template_version: '1.0' imports: - custom_types/paypalpizzastore_nodejs_app.yaml dsl_definitions: ubuntu_node: &ubuntu_node disk_size: 10 GB num_cpus: { get_input: my_cpus } mem_size: 4096 MB os_capabilities: &os_capabilities architecture: x86_64 type: Linux distribution: Ubuntu version: 14.04 topology_template: inputs: my_cpus: type: integer description: Number of CPUs for the server. constraints: - valid_values: [ 1, 2, 4, 8 ] default: 1 github_url: type: string description: The URL to download nodejs. default: https://github.com/sample.git node_templates: paypal_pizzastore: type: tosca.nodes.WebApplication.PayPalPizzaStore properties: github_url: { get_input: github_url } requirements: - host: nodejs - database_connection: mongo_db interfaces: Standard: configure: implementation: scripts/nodejs/configure.sh inputs: github_url: { get_property: [ SELF, github_url ] } mongodb_ip: { get_attribute: [ mongo_server, private_address ] } start: scripts/nodejs/start.sh nodejs: type: tosca.nodes.WebServer.Nodejs requirements: - host: app_server interfaces: Standard: create: scripts/nodejs/create.sh mongo_db: type: tosca.nodes.Database properties: name: 'pizzastore' # ARIA NOTE: missing in spec requirements: - host: mongo_dbms interfaces: Standard: create: create_database.sh mongo_dbms: type: tosca.nodes.DBMS requirements: - host: mongo_server properties: port: 27017 interfaces: Standard: # ARIA NOTE: mistaken in spec create: mongodb/create.sh configure: implementation: mongodb/config.sh inputs: mongodb_ip: { get_attribute: [ mongo_server, private_address ] } start: mongodb/start.sh mongo_server: type: tosca.nodes.Compute capabilities: os: properties: *os_capabilities host: properties: *ubuntu_node app_server: type: tosca.nodes.Compute capabilities: os: properties: *os_capabilities host: properties: *ubuntu_node outputs: nodejs_url: description: URL for the nodejs server, http://:3000 value: { get_attribute: [ app_server, private_address ] } mongodb_url: description: URL for the mongodb server. value: { get_attribute: [ mongo_server, private_address ] }