aa80bd4ecccbe9893a1a4ec8ff96984d9edfbee1
[slapos.git] / software / helloworld / instance.cfg.in
1 #############################
2 #
3 # Deploy hello-world instance
4 #
5 #############################
6 #
7 # In this file is explained how to add a new value that the software will handle
8 #
9 #############################
10 [buildout]
11 parts =
12   directory
13   hello-world
14   publish-connection-parameter
15
16 # Define egg directories to be the one from Software Release
17 # (/opt/slapgrid/...)
18 # Always the same.
19 eggs-directory = ${buildout:eggs-directory}
20 develop-eggs-directory = ${buildout:develop-eggs-directory}
21 offline = true
22
23
24 [instance-parameter]
25 # Fetch arbitrary parameters defined by the user in SlapOS Master for his instance.
26 # We use the slapconfiguration recipe with a few parameters (partition id,
27 # computer id, certificate, etc).
28 # It will then authenticate to SlapOS Master and fetch the instance parameters.
29 # The parameters are accessible from $${instance-parameter:configuration.name-of-parameter}
30 # Always the same. Just copy/paste.
31 # See docstring of slapos.cookbook:slapconfiguration for more informations.
32 recipe = slapos.cookbook:slapconfiguration
33 computer = $${slap_connection:computer_id}
34 partition = $${slap_connection:partition_id}
35 url = $${slap_connection:server_url}
36 key = $${slap_connection:key_file}
37 cert = $${slap_connection:cert_file}
38
39 # Define default parameter(s) that will be used later, in case user didn't
40 # specify it.
41 # All possible parameters should have a default.
42 # In our use case, we are expecting from the user to specify one (optional) parameter: "name". We put the default value here if he doesn't specify it, so that it doesn't crash.
43 configuration.name = John Doe
44 # Here is the declaration of the default value for the parameter title (actually, it is void). If commented, the recipe will crash.
45 # The first part of the name paramater ("configuration.") means that the value can be manually defined thanks to the parameters of the instance
46 configuration.title = 
47 # If our use case requires that the user can specify a mail address so that his instance can mail to him (for example), we can do:
48 # configuration.mail-address =
49 # If the user doesn't specify it, it won't break and the recipe can handle it (i.e don't send any mail for example).
50
51
52 # Create all needed directories, depending on your needs
53 [directory]
54 recipe = slapos.cookbook:mkdirectory
55 home = $${buildout:directory}
56 etc = $${:home}/etc
57 var = $${:home}/var
58 # Executables put here will be started but not monitored (for startup scripts)
59 script = $${:etc}/run/
60 # Executables put here will be started and monitored (for daemons)
61 service = $${:etc}/service
62 # Executables put here will be launched after buildout has completed to see
63 # if instance is running
64 promise = $${:etc}/promise/
65 # Path of the log directory used by our service (see [hello-world])
66 log = $${:var}/log
67
68 # Create a simple shell script that will only output your name if you
69 # specified it as instance parameter.
70 # Usually, of course, we use more useful commands, like web servers.
71 [hello-world]
72 # This recipe will try to "exec" the command-line after separating parameters.
73 recipe = slapos.cookbook:wrapper
74 # Notice that there is only one $ at ${dash:location}, it is because it comes from the Software Release buildout profile.
75 command-line = ${dash:location}/bin/dash -c 'echo "Hello $${instance-parameter:configuration.name}, it is $(date)." > $${directory:log}/log.log; sleep 1000000;'
76 # Put this shell script in the "etc/service" directory. Every executable of this
77 # repository will be started and monitored by supervisord. If one service
78 # exits/crashes, it will trigger a "bang" and cause run of slapgrid for the
79 # instance.
80 wrapper-path = $${directory:service}/hello-world
81
82
83 # Publish all the parameters needed for the user to connect to the instance.
84 # It can be anything: URL(s), password(s), or arbitrary parameters.
85 # Here we'll just echo back the entered name as instance parameter
86 [publish-connection-parameter]
87 recipe = slapos.cookbook:publish
88 name = Hello $${instance-parameter:configuration.name}!
89 # Adds the published parameter "title". By default, its value is "Title : " + the value declared in the section [instance-parameter] above.
90 title = Title : $${instance-parameter:configuration.title}