nuri 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -3
  3. data/VERSION +1 -1
  4. data/bin/nuri +10 -7
  5. data/nuri.gemspec +17 -17
  6. metadata +19 -94
  7. data/examples/.gitignore +0 -4
  8. data/examples/bonfire.sfp +0 -87
  9. data/examples/bonfire/epcc.sfp +0 -43
  10. data/examples/bonfire/epcc0.sfp +0 -49
  11. data/examples/bonfire/epcc2.sfp +0 -52
  12. data/examples/bonfire/epcc2a.sfp +0 -25
  13. data/examples/bonfire/inria.sfp +0 -72
  14. data/examples/bonfire/inria0.sfp +0 -49
  15. data/examples/bonfire/inria2.sfp +0 -71
  16. data/examples/bonfire/inria2a.sfp +0 -44
  17. data/examples/bonfire/inria2b.sfp +0 -54
  18. data/examples/bonfire/inria2c.sfp +0 -62
  19. data/examples/bonfire/inria2d.sfp +0 -71
  20. data/examples/bonfire/inria2e.sfp +0 -80
  21. data/examples/bonfire/main.sfp +0 -33
  22. data/examples/bonfire/old/bonfire-1-1-1.sfp +0 -76
  23. data/examples/bonfire/old/bonfire-1-10-1.sfp +0 -77
  24. data/examples/bonfire/old/bonfire-1-2-1.sfp +0 -58
  25. data/examples/bonfire/old/bonfire-1-3-1.sfp +0 -61
  26. data/examples/bonfire/old/bonfire-1-4-1.sfp +0 -64
  27. data/examples/bonfire/old/bonfire-1-5-1.sfp +0 -67
  28. data/examples/bonfire/old/bonfire-1-6-1.sfp +0 -82
  29. data/examples/bonfire/old/bonfire-1-7-1.sfp +0 -82
  30. data/examples/bonfire/old/bonfire-1-8-1.sfp +0 -79
  31. data/examples/bonfire/old/bonfire-1-9-1.sfp +0 -83
  32. data/examples/bonfire/old/wp-test1a.sfp +0 -38
  33. data/examples/bonfire/old/wp-test1b.sfp +0 -18
  34. data/examples/bonfire/old/wp-test1c.sfp +0 -7
  35. data/examples/bonfire/old/wp-test2.sfp +0 -47
  36. data/examples/bonfire/old3/bonfire-epcc.sfp +0 -57
  37. data/examples/bonfire/old3/bonfire-inria.sfp +0 -72
  38. data/examples/bonfire/old3/bonfire-master.sfp +0 -18
  39. data/examples/bonfire/old3/bonfire.sfp +0 -23
  40. data/examples/bonfire/old3/bonfire2.sfp +0 -49
  41. data/examples/bonfire/old3/bonfire3.sfp +0 -76
  42. data/examples/bonfire/old3/bonfire4.sfp +0 -78
  43. data/examples/bonfire/old3/bonfire5.sfp +0 -34
  44. data/examples/bonfire/old3/bonfire5b.sfp +0 -84
  45. data/examples/bonfire/old3/hpvm6.sfp +0 -22
  46. data/examples/bonfire/old3/model.json +0 -1
  47. data/examples/bonfire/old3/test0.sfp +0 -16
  48. data/examples/bonfire/old3/test1.sfp +0 -5
  49. data/examples/bonfire/old3/test10.sfp +0 -5
  50. data/examples/bonfire/old3/test2.sfp +0 -18
  51. data/examples/bonfire/old3/test3.sfp +0 -10
  52. data/examples/bonfire/old3/test4.sfp +0 -11
  53. data/examples/bonfire/old3/test5.sfp +0 -18
  54. data/examples/bonfire/old3/test6.sfp +0 -19
  55. data/examples/bonfire/old3/test7.sfp +0 -34
  56. data/examples/bonfire/old3/test8.sfp +0 -5
  57. data/examples/bonfire/old3/test9.sfp +0 -16
  58. data/examples/bonfire/old3/wordpress-test-cluster.sfp +0 -38
  59. data/examples/bonfire/old3/wordpress-test.sfp +0 -22
  60. data/examples/bonfire/old3/wp-test-2.sfp +0 -49
  61. data/examples/bonfire/test.sfp +0 -13
  62. data/examples/hadoop1.sfp +0 -21
  63. data/examples/hadoop2.sfp +0 -21
  64. data/examples/hpcloud.sfp +0 -18
  65. data/examples/mockcloud/apache2.sfp +0 -14
  66. data/examples/mockcloud/generator.rb +0 -22
  67. data/examples/mockcloud/generator.rb.bak +0 -66
  68. data/examples/mockcloud/hadoop2.sfp.template +0 -25
  69. data/examples/mockcloud/ping.rb +0 -38
  70. data/examples/mockcloud/run.rb +0 -17
  71. data/examples/openstack/openstack-hadoop1-cluster.sfp +0 -37
  72. data/examples/openstack/openstack-hadoop2-cluster.sfp +0 -39
  73. data/examples/test.inc +0 -0
  74. data/examples/test.sfp +0 -11
  75. data/examples/v2/apache.sfp +0 -30
  76. data/examples/v2/aptpackage.sfp +0 -6
  77. data/examples/v2/mock1.sfp +0 -12
  78. data/examples/v2/package.sfp +0 -22
  79. data/examples/v2/service.sfp +0 -94
  80. data/examples/v2/tarpackage.sfp +0 -5
  81. data/examples/wordpress.sfp +0 -41
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9d540fda2ce76121b09511e85b2c986141462e3f
4
- data.tar.gz: 36872856f912ad6cbd3998fac2721ac4c7713e8b
3
+ metadata.gz: 1c34076e1cbaeb3ab79b76e36387aa2511cab7ff
4
+ data.tar.gz: 727cd0fd4aeb6be246a700a1981818352e93f365
5
5
  SHA512:
6
- metadata.gz: d5bf64d0730f0f802a28d0464e79905f0c9a1ed60a7e083d6276b93f3eae99a1016eac02a57ccd7f0ff65b4b9c47f92f3828b4379c8fec942c562af643c0cb61
7
- data.tar.gz: c593d7e1a00db7e9e8c2e5c95b79e0573b849dcd3f8a6aea7343f34cf762db3de27d6a45c6cee78bd00e63905e8c3f0bcc0f8a57360965c9a70f7180cd3e5b49
6
+ metadata.gz: 978456225ec11b54c4bee8ba57043783b7763a24887901d372f7a16ad53e366c70a8af55bcddb51ebd0326540efa4dece7a27dff5222b6502f999a98d9dbeed4
7
+ data.tar.gz: 5f9a62df8ef5f9118806309d6a6247360149b0e306f663650693c5e5221bf70cdce181990e8f9ff4a6505ff9c5ec35736d5a8c2b2865b4853d04f9f5416f4ec3
data/README.md CHANGED
@@ -35,15 +35,24 @@ Requirements
35
35
  - colorize
36
36
  - coderay
37
37
 
38
- Tested on Linux: **Ubuntu 12.04**, **Debian Squeeze**, and **Fedora 13**
38
+ Tested on
39
+ ---------
40
+ - Linux: **Ubuntu 12.04**, **Debian Squeeze**, and **Fedora 13**
41
+ - MacOS X
39
42
 
40
43
 
41
44
  To install
42
45
  ----------
46
+ - Installing the Gem:
43
47
 
44
- $ apt-get install curl ruby1.9.1 ruby1.9.1-dev libz-dev libaugeas-ruby1.9.1 libxml2-dev libxslt-dev make gcc
45
- $ gem install nuri
48
+ $ apt-get install ruby1.9.1 ruby1.9.1-dev libz-dev libaugeas-ruby1.9.1 libxml2-dev libxslt-dev make gcc
49
+ $ gem install nuri
46
50
 
51
+ - Clone from Github:
52
+
53
+ $ apt-get install git ruby1.9.1 ruby1.9.1-dev libz-dev libaugeas-ruby1.9.1 libxml2-dev libxslt-dev make gcc
54
+ $ gem install sfplanner coderay colorize
55
+ $ git clone https://github.com/herry13/nuri
47
56
 
48
57
  Usage
49
58
  -----
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.4
1
+ 0.5.5
data/bin/nuri CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- dir = File.expand_path('../../', __FILE__)
4
- require "#{dir}/lib/nuri"
3
+ home = File.expand_path('../', File.dirname(__FILE__))
4
+ require "#{home}/lib/nuri"
5
5
 
6
6
  Version = File.read(File.dirname(__FILE__) + "/../VERSION").strip
7
7
  About = "Nuri #{Version} (c) 2013"
@@ -76,7 +76,7 @@ EOS
76
76
  opt :color, 'enable colorized output'
77
77
  opt :no_interactive, 'disable interactive input'
78
78
  opt :no_push_module, 'disable automatic push module'
79
- opt :image, 'image graph of the generated plan', :default => '' #Dir.home + '/.nuri/plan.png'
79
+ opt :image, 'image graph of the generated plan', :default => ''
80
80
  end
81
81
  help, args = check_help(args)
82
82
  opts = process_args args, parser
@@ -457,8 +457,8 @@ when <command> is:
457
457
  state get current state
458
458
  plan generate a plan
459
459
  bsig deployment with distributed mechanism
460
- agent manage Nuri agent
461
- edit edit file
460
+ agent manage the agent
461
+ edit edit model file
462
462
  help print this help
463
463
  exit exit this console
464
464
 
@@ -565,8 +565,9 @@ where [command] is:
565
565
  state get the current state
566
566
  plan generate the plan
567
567
  bsig deployment with distributed mechanism
568
- agent manage Nuri agent
568
+ agent manage the agent
569
569
  console enter console
570
+ version print the version
570
571
 
571
572
  EOS
572
573
 
@@ -587,6 +588,8 @@ EOS
587
588
  do_edit
588
589
  when 'm', 'model'
589
590
  do_model
591
+ when 'v', 'version'
592
+ puts About
590
593
  else
591
594
  puts banner
592
595
  end
@@ -596,7 +599,7 @@ EOS
596
599
  end
597
600
  end
598
601
 
599
- if $0 == __FILE__
602
+ if File.basename($0) == File.basename(__FILE__)
600
603
  Nuri.init
601
604
  Nuri::Console.new.run
602
605
  end
@@ -1,26 +1,26 @@
1
1
  Gem::Specification.new do |s|
2
- s.name = 'nuri'
3
- s.version = File.read(File.dirname(__FILE__) + '/VERSION').sub(/\n/, '')
4
- s.date = File.mtime(File.dirname(__FILE__) + '/VERSION').strftime("%Y-%m-%d")
5
- s.summary = 'Nuri'
6
- s.description = 'Automated workflow configuration tool'
7
- s.authors = ['Herry']
8
- s.email = 'herry13@gmail.com'
2
+ s.name = 'nuri'
3
+ s.version = File.read(File.dirname(__FILE__) + '/VERSION').sub(/\n/, '')
4
+ s.date = File.mtime(File.dirname(__FILE__) + '/VERSION').strftime("%Y-%m-%d")
5
+ s.summary = 'Nuri'
6
+ s.description = 'intelligent configuration tool'
7
+ s.authors = ['Herry']
8
+ s.email = 'herry13@gmail.com'
9
9
 
10
- s.executables << 'nuri'
11
- s.files = `git ls-files`.split("\n").select { |n| !(n =~ /^(test|modules\/cell*|modules\/idol*)\/.*/) }
10
+ s.executables << 'nuri'
11
+ s.files = `git ls-files`.split("\n").select { |n| !(n =~ /^(test|modules\/cell*|modules\/idol*|examples)\/.*/) }
12
12
 
13
- s.require_paths = ['lib']
13
+ s.require_paths = ['lib']
14
14
 
15
- s.license = 'BSD'
15
+ s.license = 'BSD'
16
16
 
17
- s.homepage = 'https://github.com/herry13/nuri'
18
- s.rubyforge_project = 'nuri'
17
+ s.homepage = 'https://github.com/herry13/nuri'
18
+ s.rubyforge_project = 'nuri'
19
19
 
20
- s.add_dependency 'sfplanner', '~> 0.2.1'
21
- s.add_dependency 'sfpagent', '~> 0.3'
22
- s.add_dependency 'colorize', '~> 0.6'
23
- s.add_dependency 'coderay', '~> 1'
20
+ s.add_dependency 'sfplanner'
21
+ s.add_dependency 'sfpagent'
22
+ s.add_dependency 'colorize'
23
+ s.add_dependency 'coderay'
24
24
 
25
25
  s.add_development_dependency 'rake'
26
26
  end
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nuri
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Herry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-15 00:00:00.000000000 Z
11
+ date: 2014-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sfplanner
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.1
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.1
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sfpagent
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
- version: '0.3'
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
- version: '0.3'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: colorize
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: '0.6'
47
+ version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
- version: '0.6'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: coderay
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
- version: '1'
61
+ version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
- version: '1'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- description: Automated workflow configuration tool
83
+ description: intelligent configuration tool
84
84
  email: herry13@gmail.com
85
85
  executables:
86
86
  - nuri
@@ -100,81 +100,6 @@ files:
100
100
  - bin/nuri-install-module
101
101
  - bin/nuri-sfwgraph
102
102
  - bin/nuri-uninstall-module
103
- - examples/.gitignore
104
- - examples/bonfire.sfp
105
- - examples/bonfire/epcc.sfp
106
- - examples/bonfire/epcc0.sfp
107
- - examples/bonfire/epcc2.sfp
108
- - examples/bonfire/epcc2a.sfp
109
- - examples/bonfire/inria.sfp
110
- - examples/bonfire/inria0.sfp
111
- - examples/bonfire/inria2.sfp
112
- - examples/bonfire/inria2a.sfp
113
- - examples/bonfire/inria2b.sfp
114
- - examples/bonfire/inria2c.sfp
115
- - examples/bonfire/inria2d.sfp
116
- - examples/bonfire/inria2e.sfp
117
- - examples/bonfire/main.sfp
118
- - examples/bonfire/old/bonfire-1-1-1.sfp
119
- - examples/bonfire/old/bonfire-1-10-1.sfp
120
- - examples/bonfire/old/bonfire-1-2-1.sfp
121
- - examples/bonfire/old/bonfire-1-3-1.sfp
122
- - examples/bonfire/old/bonfire-1-4-1.sfp
123
- - examples/bonfire/old/bonfire-1-5-1.sfp
124
- - examples/bonfire/old/bonfire-1-6-1.sfp
125
- - examples/bonfire/old/bonfire-1-7-1.sfp
126
- - examples/bonfire/old/bonfire-1-8-1.sfp
127
- - examples/bonfire/old/bonfire-1-9-1.sfp
128
- - examples/bonfire/old/wp-test1a.sfp
129
- - examples/bonfire/old/wp-test1b.sfp
130
- - examples/bonfire/old/wp-test1c.sfp
131
- - examples/bonfire/old/wp-test2.sfp
132
- - examples/bonfire/old3/bonfire-epcc.sfp
133
- - examples/bonfire/old3/bonfire-inria.sfp
134
- - examples/bonfire/old3/bonfire-master.sfp
135
- - examples/bonfire/old3/bonfire.sfp
136
- - examples/bonfire/old3/bonfire2.sfp
137
- - examples/bonfire/old3/bonfire3.sfp
138
- - examples/bonfire/old3/bonfire4.sfp
139
- - examples/bonfire/old3/bonfire5.sfp
140
- - examples/bonfire/old3/bonfire5b.sfp
141
- - examples/bonfire/old3/hpvm6.sfp
142
- - examples/bonfire/old3/model.json
143
- - examples/bonfire/old3/test0.sfp
144
- - examples/bonfire/old3/test1.sfp
145
- - examples/bonfire/old3/test10.sfp
146
- - examples/bonfire/old3/test2.sfp
147
- - examples/bonfire/old3/test3.sfp
148
- - examples/bonfire/old3/test4.sfp
149
- - examples/bonfire/old3/test5.sfp
150
- - examples/bonfire/old3/test6.sfp
151
- - examples/bonfire/old3/test7.sfp
152
- - examples/bonfire/old3/test8.sfp
153
- - examples/bonfire/old3/test9.sfp
154
- - examples/bonfire/old3/wordpress-test-cluster.sfp
155
- - examples/bonfire/old3/wordpress-test.sfp
156
- - examples/bonfire/old3/wp-test-2.sfp
157
- - examples/bonfire/test.sfp
158
- - examples/hadoop1.sfp
159
- - examples/hadoop2.sfp
160
- - examples/hpcloud.sfp
161
- - examples/mockcloud/apache2.sfp
162
- - examples/mockcloud/generator.rb
163
- - examples/mockcloud/generator.rb.bak
164
- - examples/mockcloud/hadoop2.sfp.template
165
- - examples/mockcloud/ping.rb
166
- - examples/mockcloud/run.rb
167
- - examples/openstack/openstack-hadoop1-cluster.sfp
168
- - examples/openstack/openstack-hadoop2-cluster.sfp
169
- - examples/test.inc
170
- - examples/test.sfp
171
- - examples/v2/apache.sfp
172
- - examples/v2/aptpackage.sfp
173
- - examples/v2/mock1.sfp
174
- - examples/v2/package.sfp
175
- - examples/v2/service.sfp
176
- - examples/v2/tarpackage.sfp
177
- - examples/wordpress.sfp
178
103
  - lib/naas/d3.js
179
104
  - lib/naas/d3.v3.min.js
180
105
  - lib/naas/index.css
@@ -1,4 +0,0 @@
1
- *cell*
2
- *.log
3
- *.log.*
4
- *idol*
@@ -1,87 +0,0 @@
1
- include "modules/node/node.sfp"
2
- include "modules/vm/vm.sfp"
3
- include "modules/apache/apache.sfp"
4
- include "modules/mysql/mysql.sfp"
5
- include "modules/wordpresscluster/wordpresscluster.sfp"
6
- include "modules/bonfire/bonfire.sfp"
7
-
8
- proxy isa Node {
9
- sfpAddress is "localhost"
10
- epcc isa Bonfire {
11
- experiment is "autocloud"
12
- location is "uk-epcc"
13
- image_name is "BonFIRE Debian Squeeze 10G v5"
14
- wan_name is "BonFIRE WAN"
15
- }
16
- }
17
-
18
- vmlb isa VM {
19
- created = true
20
- apache isa Apache {
21
- running is true
22
- is_load_balancer is true
23
- lb_members is (vmapp1,vmapp2,vmapp3,vmapp4,vmapp5)
24
- }
25
- in_cloud is proxy.epcc
26
- }
27
- vmapp1 extends vmlb {
28
- wp_web isa WordpressWeb {
29
- installed is true
30
- http is vmapp1.apache
31
- database is vmdb.wp_db
32
- }
33
- }
34
- vmapp2 extends vmlb {
35
- wp_web isa WordpressWeb {
36
- installed is true
37
- http is vmapp2.apache
38
- database is vmdb.wp_db
39
- }
40
- }
41
- vmapp3 extends vmlb {
42
- wp_web isa WordpressWeb {
43
- installed is true
44
- http is vmapp3.apache
45
- database is vmdb.wp_db
46
- }
47
- }
48
- vmapp4 extends vmlb {
49
- wp_web isa WordpressWeb {
50
- installed is true
51
- http is vmapp4.apache
52
- database is vmdb.wp_db
53
- }
54
- }
55
- vmapp5 extends vmlb {
56
- wp_web isa WordpressWeb {
57
- installed is true
58
- http is vmapp5.apache
59
- database is vmdb.wp_db
60
- }
61
- }
62
- vmdb isa VM {
63
- created = true
64
- mysql isa Mysql {
65
- running is true
66
- }
67
- wp_db isa WordpressDB {
68
- installed is true
69
- mysql is vmdb.mysql
70
- }
71
- in_cloud is proxy.epcc
72
- }
73
-
74
- global {
75
- if vmlb.apache.running = true then {
76
- vmapp1.apache.running = true
77
- vmapp2.apache.running = true
78
- vmapp3.apache.running = true
79
- vmapp4.apache.running = true
80
- vmapp5.apache.running = true
81
- }
82
- if vmapp1.apache.running = true then vmdb.mysql.running = true
83
- if vmapp2.apache.running = true then vmdb.mysql.running = true
84
- if vmapp3.apache.running = true then vmdb.mysql.running = true
85
- if vmapp4.apache.running = true then vmdb.mysql.running = true
86
- if vmapp5.apache.running = true then vmdb.mysql.running = true
87
- }
@@ -1,43 +0,0 @@
1
- include "../modules/vm/vm.sfp"
2
- include "../modules/apache/apache.sfp"
3
- include "../modules/mysql/mysql.sfp"
4
- include "../modules/wordpresscluster/wordpresscluster.sfp"
5
-
6
- vm1 isa VM {
7
- created = true
8
- apache isa Apache {
9
- running is true
10
- is_load_balancer is true
11
- }
12
- in_cloud is proxy.epcc
13
- }
14
- vm2 isa VM {
15
- created = true
16
- apache isa Apache {
17
- running is true
18
- }
19
- wp_web isa WordpressWeb {
20
- installed is true
21
- http is vm2.apache
22
- database is vm10.wp_db
23
- }
24
- in_cloud is proxy.epcc
25
- }
26
- vm10 isa VM {
27
- created = true
28
- mysql isa Mysql {
29
- running is true
30
- }
31
- wp_db isa WordpressDB {
32
- installed is true
33
- mysql is vm10.mysql
34
- }
35
- in_cloud is proxy.epcc
36
- }
37
-
38
- global {
39
- if vm1.apache.running = true then {
40
- vm2.apache.running = true
41
- }
42
- if vm2.apache.running = true then vm10.mysql.running = true
43
- }