separate nodes. Listing 4 displays the description for
the mysql dbms node.
Listing 3: MySQL Server for Cloudify.
d s l d e f i n i t i o n s :
o p e n s t a c k c o n f i g : &o p e n s t a c k c o n f i g
us e r n ame : { g e t s e c r e t : k e y s t o n e u s e r n a m e }
pass w o r d : { g e t s e c r e t : k e y s t o n e p a s s w o r d }
t e n a n t n a m e : { g e t s e c r e t : k e y s t o n e t e n a n t n a m e }
a u t h u r l : { g e t s e c r e t : k e y s t o n e u r l }
r e g i o n : { g e t s e c r e t : k e y s t o n e r e g i o n }
n o d e t e m p l a t e s :
m y s q l s e r v e r :
t y p e : c l o u d i f y . o p e n s t a c k . n o d e s . S e r v e r
p r o p e r t i e s :
o p e n s t a c k c o n f i g : ∗ o p e n s t a c k c o n f i g
a g e n t c o n f i g :
u s e r : { g e t i n p u t : a g e n t u s e r n a m e }
key: { g e t p r o p e r t y : [ k e y p a i r , p r i v a t e k e y p a t h ] }
i n s t a l l m e t h o d : r e m o te
p o r t : 22
s e r v e r :
name: m y s q l s e r v e r
im ag e: { g e t i n p u t : im ag e }
f l a v o r : { g e t i n p u t : f l a v o r }
r e l a t i o n s h i p s :
- t y p e : c l o u d i f y . o p e n s t a c k . s e r v e r c o n n e c t e d t o k e y p a i r
t a r g e t : k e y p a i r
- t y p e : c l o u d i f y . o p e n s t a c k . s e r v e r c o n n e c t e d t o s e c u r i t y g r o u p
t a r g e t : s e c u r i t y g r o u p
- t y p e : c l o u d i f y . r e l a t i o n s h i p s . c o n n e c t e d t o
t a r g e t : n e t w o r k
- t y p e : c l o u d i f y . r e l a t i o n s h i p s . d e p e n d s o n
t a r g e t : s u b n e t
Listing 4: MySQL DBMS for Cloudify.
my sq l dbm s:
t y p e : MySqlDBMS
p r o p e r t i e s :
p o r t : { g e t i n p u t : d b p o r t }
r o o t p a s s w o r d : { g e t i n p u t : d b r o o t p w d }
i n t e r f a c e s :
c l o u d i f y . i n t e r f a c e s . l i f e c y c l e :
c r e a t e :
i m p l e m e n t a t i o n : s c r i p t s / my sqldbms / c r e a t e . sh
e x e c u t o r : h o s t a g e n t
i n p u t s :
d b r o o t p a s s w o r d : { g e t p r o p e r t y : [ SELF , r o o t p a s s w o r d ] }
c o n f i g u r e :
i m p l e m e n t a t i o n : s c r i p t s / my sqldbms / c o n f i g u r e . s h
e x e c u t o r : h o s t a g e n t
i n p u t s :
d b i p a d d r e s s : { g e t a t t r i b u t e : [ m y s q l s e r v e r , i p ] }
d b p o r t : { g e t p r o p e r t y : [ SELF , p o r t ] }
r e l a t i o n s h i p s :
- t y p e : c l o u d i f y . r e l a t i o n s h i p s . c o n t a i n e d i n
t a r g e t : m y s q l s e r v e r
Two properties are defined: port and root password.
A “contained in” relationship relates the node to
mysql server. Shell scripts are also specified for cre-
ate and configure lifecycle operations, whose execu-
tion (via the Script plugin) is the host agent’s respon-
sibility. Blueprints are normally consumed by the
Cloudify Command Line Interface (CLI), which in-
cludes all of the commands necessary to run any ac-
tions on Cloudify Manager.
5.3 TORCH
TORCH offers a standardised way to deploy and or-
chestrate the lifecycle of applications across multi-
ple cloud environments. Applications are modelled
in YAML - according to TOSCA language - as ser-
vice templates. Unlike Cloudify, the primary focus
is only on design time aspects (i.e., the description
of services). Runtime aspects (such as orchestration,
service mapping and invocation) are addressed by the
TOSCA-based provisioning framework (see Section
3). With reference to the use case in Section 4, List-
ing 5 shows how the “mysql server” node was de-
scribed.
Listing 5: MySQL Server for TORCH.
m y s q l s e r v e r :
t y p e : t o s c a . n o d es . Compute
p r o p e r t i e s :
k e y p a i r :
p r o t o c o l : s s h
t o k e n t y p e : i d e n t i f i e r
t o k e n : { g e t i n p u t : k e y p a i r i d }
c a p a b i l i t i e s :
h o s t :
p r o p e r t i e s :
d i s k s i z e : { g e t i n p u t : m s h o s t d i s k s i z e }
nu m cpu s: { g e t i n p u t : m s h o s t c p u s }
me m siz e : { g e t i n p u t : m s h o s t m e m si z e }
c p u f r e q u e n c y : { g e t i n p u t : m s h o s t c p u f r e q u e n c y }
os:
p r o p e r t i e s :
a r c h i t e c t u r e : { g e t i n p u t : m s o s a r c h i t e c t u r e }
t y p e : { g e t i n p u t : m s o s t y p e }
d i s t r i b u t i o n : { g e t i n p u t : m s o s d i s t r i b u t i o n }
v e r s i o n : { g e t i n p u t : m s o s v e r s i o n }
ne t w o rk :
t y p e : t o s c a . n o d es . n e tw o r k . N etwor k
p r o p e r t i e s :
network n a m e : { g e t i n p u t : n e t w o r k n a m e }
m y s q l p o r t :
t y p e : t o s c a . n o d es . n e tw o r k . P o r t
p r o p e r t i e s :
i p r a n g e s t a r t : { g e t i n p u t : s u b n e t s t a r t i n g i p }
i p r a n g e e n d : { g e t i n p u t : s u b n e t e n d i n g i p }
r e q u i r e m e n t s :
- b i n d i n g :
no de: m y s q l s e r v e r
- l i n k :
no de: n e t w or k
The tosca.nodes.Compute type allows to create a
Compute instance, which is configurable in terms
of both hosting and operating system capabili-
ties. The keypair property specifies the key-
pair for remote access via SSH. The “network”
node represents an existing logical network, which
the server instance should be connected to by
means of the “mysql port” node. Unlike Heat
and Cloudify, no platform-dependent information
is provided. For instance, neither flavor nor im-
age concepts are specified. Service Connectors
infer them from tosca.capabilities.Container and
tosca.capabilities.OperatingSystem capability prop-
erties. The same considerations apply to keypair, net-
work and subnet concepts.
Similar to Cloudify, TORCH enables to describe
software components running on a server instance
as separate nodes. Listing 6 exhibits the description
for the mysql
dbms node. Two properties are de-
fined in this case as well: port and root password. A
“tosca.relationships.HostedOn” dependency relation-
ship relates the node to mysql server. Shell scripts
A Comparison of Multi-cloud Provisioning Platforms
511