hybrid_platforms_conductor 32.13.0 → 32.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -0
  3. data/README.md +10 -3
  4. data/bin/get_impacted_nodes +1 -1
  5. data/bin/setup +6 -1
  6. data/docs/executables/check-node.md +1 -1
  7. data/docs/executables/deploy.md +1 -1
  8. data/docs/executables/free_ips.md +1 -1
  9. data/docs/executables/free_veids.md +1 -1
  10. data/docs/executables/get_impacted_nodes.md +1 -1
  11. data/docs/executables/last_deploys.md +1 -1
  12. data/docs/executables/nodes_to_deploy.md +1 -1
  13. data/docs/executables/report.md +1 -1
  14. data/docs/executables/run.md +1 -1
  15. data/docs/executables/setup.md +1 -1
  16. data/docs/executables/ssh_config.md +1 -1
  17. data/docs/executables/test.md +1 -1
  18. data/docs/plugins.md +1 -0
  19. data/docs/plugins/platform_handler/serverless_chef.md +105 -0
  20. data/docs/tutorial.md +10 -6
  21. data/docs/tutorial/01_installation.md +14 -12
  22. data/docs/tutorial/02_first_node.md +14 -12
  23. data/docs/tutorial/03_scale.md +14 -12
  24. data/docs/tutorial/04_test.md +26 -14
  25. data/docs/tutorial/05_extend_with_plugins.md +17 -17
  26. data/examples/tutorial/01_installation/my-platforms/Gemfile +3 -0
  27. data/examples/tutorial/01_installation/my-platforms/hpc_config.rb +0 -0
  28. data/examples/tutorial/02_first_node/my-platforms/Gemfile +3 -0
  29. data/examples/tutorial/02_first_node/my-platforms/hpc_config.rb +1 -0
  30. data/examples/tutorial/02_first_node/my-service-conf-repo/inventory.yaml +13 -0
  31. data/examples/tutorial/02_first_node/my-service-conf-repo/my-service.conf.erb +3 -0
  32. data/examples/tutorial/02_first_node/my-service-conf-repo/service_my-service.rb +58 -0
  33. data/examples/tutorial/02_first_node/node/my-service.conf +4 -0
  34. data/examples/tutorial/03_scale/my-platforms/Gemfile +3 -0
  35. data/examples/tutorial/03_scale/my-platforms/hpc_config.rb +1 -0
  36. data/examples/tutorial/03_scale/my-platforms/my_commands.bash +2 -0
  37. data/examples/tutorial/03_scale/my-service-conf-repo/inventory.yaml +90 -0
  38. data/examples/tutorial/03_scale/my-service-conf-repo/my-service.conf.erb +3 -0
  39. data/examples/tutorial/03_scale/my-service-conf-repo/service_my-service.rb +58 -0
  40. data/examples/tutorial/03_scale/my-service-conf-repo/service_web-hello.rb +43 -0
  41. data/examples/tutorial/03_scale/node/my-service.conf +4 -0
  42. data/examples/tutorial/03_scale/web_docker_image/Dockerfile +33 -0
  43. data/examples/tutorial/03_scale/web_docker_image/hello_world.txt +1 -0
  44. data/examples/tutorial/03_scale/web_docker_image/hpc_root.key +27 -0
  45. data/examples/tutorial/03_scale/web_docker_image/hpc_root.key.pub +1 -0
  46. data/examples/tutorial/03_scale/web_docker_image/main.go +43 -0
  47. data/examples/tutorial/03_scale/web_docker_image/start.sh +7 -0
  48. data/examples/tutorial/03_scale/web_docker_image/test.bash +6 -0
  49. data/examples/tutorial/04_test/my-platforms/Gemfile +3 -0
  50. data/examples/tutorial/04_test/my-platforms/hpc_config.rb +12 -0
  51. data/examples/tutorial/04_test/my-platforms/images/debian_10/Dockerfile +13 -0
  52. data/examples/tutorial/04_test/my-platforms/my_commands.bash +2 -0
  53. data/examples/tutorial/04_test/my-service-conf-repo/inventory.yaml +100 -0
  54. data/examples/tutorial/04_test/my-service-conf-repo/my-service.conf.erb +3 -0
  55. data/examples/tutorial/04_test/my-service-conf-repo/service_my-service.rb +58 -0
  56. data/examples/tutorial/04_test/my-service-conf-repo/service_web-hello.rb +43 -0
  57. data/examples/tutorial/04_test/node/my-service.conf +4 -0
  58. data/examples/tutorial/04_test/web_docker_image/Dockerfile +33 -0
  59. data/examples/tutorial/04_test/web_docker_image/hello_world.txt +1 -0
  60. data/examples/tutorial/04_test/web_docker_image/hpc_root.key +27 -0
  61. data/examples/tutorial/04_test/web_docker_image/hpc_root.key.pub +1 -0
  62. data/examples/tutorial/04_test/web_docker_image/main.go +43 -0
  63. data/examples/tutorial/04_test/web_docker_image/start.sh +7 -0
  64. data/examples/tutorial/04_test/web_docker_image/test.bash +6 -0
  65. data/examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/hosts.json +12 -0
  66. data/examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/install-gcc.bash +14 -0
  67. data/examples/tutorial/05_extend_with_plugins/dev-servers-conf-repo/install-python.bash +14 -0
  68. data/examples/tutorial/05_extend_with_plugins/dev_docker_image/Dockerfile +20 -0
  69. data/examples/tutorial/05_extend_with_plugins/dev_docker_image/hpc_root.key +27 -0
  70. data/examples/tutorial/05_extend_with_plugins/dev_docker_image/hpc_root.key.pub +1 -0
  71. data/examples/tutorial/05_extend_with_plugins/my-platforms/Gemfile +4 -0
  72. data/examples/tutorial/05_extend_with_plugins/my-platforms/hpc_config.rb +13 -0
  73. data/examples/tutorial/05_extend_with_plugins/my-platforms/images/debian_10/Dockerfile +13 -0
  74. data/examples/tutorial/05_extend_with_plugins/my-platforms/my_commands.bash +2 -0
  75. data/examples/tutorial/05_extend_with_plugins/my-service-conf-repo/inventory.yaml +100 -0
  76. data/examples/tutorial/05_extend_with_plugins/my-service-conf-repo/my-service.conf.erb +3 -0
  77. data/examples/tutorial/05_extend_with_plugins/my-service-conf-repo/service_my-service.rb +58 -0
  78. data/examples/tutorial/05_extend_with_plugins/my-service-conf-repo/service_web-hello.rb +43 -0
  79. data/examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/platform_handler/json_bash.rb +115 -0
  80. data/examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/report/web_report.rb +52 -0
  81. data/examples/tutorial/05_extend_with_plugins/my_hpc_plugins/lib/my_hpc_plugins/hpc_plugins/test/root_space.rb +44 -0
  82. data/examples/tutorial/05_extend_with_plugins/my_hpc_plugins/my_hpc_plugins.gemspec +15 -0
  83. data/examples/tutorial/05_extend_with_plugins/node/my-service.conf +4 -0
  84. data/examples/tutorial/05_extend_with_plugins/web_docker_image/Dockerfile +33 -0
  85. data/examples/tutorial/05_extend_with_plugins/web_docker_image/hello_world.txt +1 -0
  86. data/examples/tutorial/05_extend_with_plugins/web_docker_image/hpc_root.key +27 -0
  87. data/examples/tutorial/05_extend_with_plugins/web_docker_image/hpc_root.key.pub +1 -0
  88. data/examples/tutorial/05_extend_with_plugins/web_docker_image/main.go +43 -0
  89. data/examples/tutorial/05_extend_with_plugins/web_docker_image/start.sh +7 -0
  90. data/examples/tutorial/05_extend_with_plugins/web_docker_image/test.bash +6 -0
  91. data/lib/hybrid_platforms_conductor/deployer.rb +2 -1
  92. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef.rb +440 -0
  93. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/dsl_parser.rb +51 -0
  94. data/lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/serverless_chef/recipes_tree_builder.rb +271 -0
  95. data/lib/hybrid_platforms_conductor/hpc_plugins/test/vulnerabilities.rb +1 -0
  96. data/lib/hybrid_platforms_conductor/nodes_handler.rb +9 -5
  97. data/lib/hybrid_platforms_conductor/version.rb +1 -1
  98. data/spec/hybrid_platforms_conductor_test.rb +3 -0
  99. data/spec/hybrid_platforms_conductor_test/api/deployer/provisioner_spec.rb +23 -0
  100. data/spec/hybrid_platforms_conductor_test/api/nodes_handler/cmdbs_plugins_api_spec.rb +11 -0
  101. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/config_dsl_spec.rb +17 -0
  102. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/deploy_output_parsing_spec.rb +94 -0
  103. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/diff_impacts_spec.rb +317 -0
  104. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/inventory_spec.rb +65 -0
  105. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/packaging_spec.rb +213 -0
  106. data/spec/hybrid_platforms_conductor_test/api/platform_handlers/serverless_chef/services_deployment_spec.rb +268 -0
  107. data/spec/hybrid_platforms_conductor_test/helpers/serverless_chef_helpers.rb +53 -0
  108. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/1_node/chef_versions.yml +3 -0
  109. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/1_node/nodes/node.json +14 -0
  110. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/1_node/policyfiles/test_policy.rb +3 -0
  111. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/data_bags/chef_versions.yml +3 -0
  112. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/data_bags/data_bags/my_bag/my_item.json +4 -0
  113. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/data_bags/nodes/node.json +14 -0
  114. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/data_bags/policyfiles/test_policy.rb +3 -0
  115. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_1/recipes/default.rb +1 -0
  116. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_2/libraries/default.rb +4 -0
  117. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_2/recipes/default.rb +1 -0
  118. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_2/recipes/other_recipe.rb +1 -0
  119. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/cookbooks/test_cookbook_2/resources/my_resource.rb +1 -0
  120. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/nodes/node1.json +10 -0
  121. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/nodes/node2.json +10 -0
  122. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/policyfiles/test_policy_1.rb +4 -0
  123. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/recipes/policyfiles/test_policy_2.rb +4 -0
  124. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/config.rb +1 -0
  125. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/cookbooks/test_cookbook_1/recipes/default.rb +1 -0
  126. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/nodes/node1.json +10 -0
  127. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/nodes/node2.json +10 -0
  128. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/other_cookbooks/test_cookbook_2/libraries/default.rb +4 -0
  129. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/other_cookbooks/test_cookbook_2/recipes/default.rb +1 -0
  130. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/other_cookbooks/test_cookbook_2/recipes/other_recipe.rb +1 -0
  131. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/other_cookbooks/test_cookbook_2/resources/my_resource.rb +1 -0
  132. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/policyfiles/test_policy_1.rb +4 -0
  133. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_cookbooks/policyfiles/test_policy_2.rb +4 -0
  134. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_nodes/chef_versions.yml +3 -0
  135. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_nodes/nodes/local.json +10 -0
  136. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_nodes/nodes/node1.json +10 -0
  137. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_nodes/nodes/node2.json +10 -0
  138. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_nodes/policyfiles/test_policy_1.rb +3 -0
  139. data/spec/hybrid_platforms_conductor_test/serverless_chef_repositories/several_nodes/policyfiles/test_policy_2.rb +3 -0
  140. data/tools/generate_mermaid +1 -1
  141. metadata +260 -86
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 33b6e3bc5318de72c2f4d6c9ee0d092ba1cf078befdf07836765b10398dc0513
4
- data.tar.gz: '02068aaed645f9897f265da954817ae489dcff55f59e8ede8a179905594230db'
3
+ metadata.gz: 99c918a62cd924ceaca95073e944df866b9b1ecce771dcb710122ec501cadf95
4
+ data.tar.gz: 959326a99c32ac8eb120af28c8b3c34304e2efa61df64f43a99545d0d33f88e3
5
5
  SHA512:
6
- metadata.gz: 8307851f71ca547872c97772a7890cd3c7db399260e458abb74a226e96b23f51baad3905e74f586c20cf9b8c0ecd658a3b9df1f28c250112476d1e0328f01364
7
- data.tar.gz: 129f0b7f6c06c15465a3922374531e4bed7cd1fcc67081dcfe04ead71d5b600c247dcaa4803b05ecca8be26df5c745b4b4cbf7cab9e95d40accd16096e22dbe3
6
+ metadata.gz: 8e6c3a54a5c04f21aaeeba1a047366a7f427680077712742c0b2a7977cecfe14c4058fdd1e1c6c66842b603a7f7590bfea6eae0d975240e19a4ffa8214043c17
7
+ data.tar.gz: e8dd3ef50cec1a0dd7e94161159a30f359fca736bd6e7ab14ab916e2d743d48889bf891c3ca2bf626d3f087e1472ff43eb1abc0370e3fe63226cb0a8595950ad
data/CHANGELOG.md CHANGED
@@ -1,3 +1,45 @@
1
+ # [v32.14.0](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.13.4...v32.14.0) (2021-05-31 09:05:45)
2
+
3
+ ## Global changes
4
+ ### Patches
5
+
6
+ * [[Feature(platform_handler_serverless_chef)] [#58] Add the serverless_chef platform handler](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/6f84757096a802c79a18a6c9c1440b27e73decd1)
7
+
8
+ ## Changes for platform_handler_serverless_chef
9
+ ### Features
10
+
11
+ * [[Feature(platform_handler_serverless_chef)] [#58] Add the serverless_chef platform handler](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/6f84757096a802c79a18a6c9c1440b27e73decd1)
12
+
13
+ # [v32.13.4](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.13.3...v32.13.4) (2021-05-11 14:00:47)
14
+
15
+ ## Global changes
16
+ ### Patches
17
+
18
+ * [[fix(test_vulnerabilities)] [#56] Make sure vulnerabilities test catch errors during setup](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/e058853c6794ccacec33c9ae4d740068a70dcf5f)
19
+
20
+ ## Changes for test_vulnerabilities
21
+ ### Patches
22
+
23
+ * [[fix(test_vulnerabilities)] [#56] Make sure vulnerabilities test catch errors during setup](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/e058853c6794ccacec33c9ae4d740068a70dcf5f)
24
+
25
+ # [v32.13.3](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.13.2...v32.13.3) (2021-05-07 10:09:33)
26
+
27
+ ### Patches
28
+
29
+ * [Add section about benefits in doc](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/23cd2b22244526e3b6705db0165f8a03e4dd88d8)
30
+
31
+ # [v32.13.2](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.13.1...v32.13.2) (2021-05-06 15:47:14)
32
+
33
+ ### Patches
34
+
35
+ * [Better tutorial navigation](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/b4454f99b0611ec8591ca83894e152a22a61e731)
36
+
37
+ # [v32.13.1](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.13.0...v32.13.1) (2021-05-06 14:03:16)
38
+
39
+ ### Patches
40
+
41
+ * [Add tutorial files in examples](https://github.com/sweet-delights/hybrid-platforms-conductor/commit/dfb456f031d48ba1ed6922a5f84ed659fe587ab8)
42
+
1
43
  # [v32.13.0](https://github.com/sweet-delights/hybrid-platforms-conductor/compare/v32.12.0...v32.13.0) (2021-05-06 11:20:57)
2
44
 
3
45
  ### Features
data/README.md CHANGED
@@ -35,7 +35,14 @@ Now being able to keep DevOps processes agile and robust is really difficult aro
35
35
  **This is where Hybrid Platforms Conductor can help: it helps DevOps define simple, robust and scalable processes that can adapt easily to ever-changing platforms and technologies in your development and operations environments.**
36
36
 
37
37
  In other words, Hybrid Platforms Conductor lets you **map your DevOps processes in a platform and technology independent way on simple interfaces** (CLI executables, APIs...).
38
- Having simple interfaces on your processes move the technical complexity in code instead of having it scattered around documentation becoming obsolete and increasing the learning curve.
38
+
39
+ **Benefits** are multiple in terms of team organization and agility:
40
+ * **Move the technical complexity** of your processes from scattered, duplicated and **diverging documentation to code that is effectively used**, maintained and tracked in a single place.
41
+ * **Facilitate the adoption of new technologies and frameworks** in your team, without migrating previous ones, and keeping the same level of quality, robustness and agility of your DevOps processes.
42
+ * **Scale easily whatever DevOps process** you have put in place for bigger platforms, bigger teams or more technologies.
43
+ * **Decrease the learning curve** for newcomers in your team by having simple interfaces to be operated, whatever underlying tools and frameworks you are using behind.
44
+ * Make sure **your DevOps processes apply easily to all the platforms** and organizations you want them to apply to.
45
+ * Guarantee that you can **configure** each component of your platforms **in a deterministic and independent way**.
39
46
 
40
47
  ## How?
41
48
 
@@ -66,7 +73,7 @@ The way it works is by having a **configuration file using an extensive DSL to d
66
73
 
67
74
  ### Technology plugins
68
75
 
69
- It is built around a plugins that allow each DevOps team to **adapt its processes to its own specific environments**:
76
+ It is built around plugins that allow each DevOps team to **adapt its processes to its own specific environments**:
70
77
  * Any kind of **platform** (on-premise, in the cloud, PaaS, SaaS...).
71
78
  * Any **configuration tool** (Chef, Puppet, Ansible...).
72
79
  * Any kind of **test** (network-level, applicative-level, using external testing services...).
@@ -246,7 +253,7 @@ So with the concepts described above, the process described as deploying **servi
246
253
  <!-- Mermaid generator - Section start -->
247
254
  ![Mermaid diagram](/docs/gen/mermaid/README.md-0.png)
248
255
  <details>
249
- <summary>See diagram Mermaid code</summary>
256
+ <summary><sub><sup>Diagram code</sup></sub></summary>
250
257
 
251
258
  ```mermaid
252
259
  sequenceDiagram
@@ -10,7 +10,7 @@ executable = HybridPlatformsConductor::Executable.new(nodes_selection_options: f
10
10
  opts.on('-f', '--from-commit COMMIT_ID', "Specify the GIT commit from which we look for diffs. Defaults to #{git_from}.") do |commit_id|
11
11
  git_from = commit_id
12
12
  end
13
- opts.on('-p', '--platform PLATFORM_NAME', "Specify the repository on which to perform the diff. Possible values are #{platforms_handler.known_platforms.join(', ')}") do |platform_name|
13
+ opts.on('-p', '--platform PLATFORM_NAME', "Specify the repository on which to perform the diff. Possible values are #{platforms_handler.known_platforms.map(&:name).join(', ')}") do |platform_name|
14
14
  platform = platform_name
15
15
  end
16
16
  opts.on('-s', '--smallest-test-sample', 'Display the minimal set of nodes to check that would validate all modifications.') do
data/bin/setup CHANGED
@@ -7,5 +7,10 @@ platforms_handler = executable.platforms_handler
7
7
  executable.parse_options!
8
8
 
9
9
  platforms_handler.known_platforms.each do |platform|
10
- platform.setup if platform.respond_to?(:setup)
10
+ if platform.respond_to?(:setup)
11
+ executable.out "===== Setup platform #{platform.name}..."
12
+ platform.setup
13
+ executable.out "===== Platform #{platform.name} setup successfully."
14
+ executable.out ''
15
+ end
11
16
  end
@@ -12,7 +12,7 @@ It will:
12
12
  <!-- Mermaid generator - Section start -->
13
13
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/check-node.md-0.png)
14
14
  <details>
15
- <summary>See diagram Mermaid code</summary>
15
+ <summary><sub><sup>Diagram code</sup></sub></summary>
16
16
 
17
17
  ```mermaid
18
18
  sequenceDiagram
@@ -12,7 +12,7 @@ It will:
12
12
  <!-- Mermaid generator - Section start -->
13
13
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/deploy.md-0.png)
14
14
  <details>
15
- <summary>See diagram Mermaid code</summary>
15
+ <summary><sub><sup>Diagram code</sup></sub></summary>
16
16
 
17
17
  ```mermaid
18
18
  sequenceDiagram
@@ -10,7 +10,7 @@ Useful to assign new IPs.
10
10
  <!-- Mermaid generator - Section start -->
11
11
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/free_ips.md-0.png)
12
12
  <details>
13
- <summary>See diagram Mermaid code</summary>
13
+ <summary><sub><sup>Diagram code</sup></sub></summary>
14
14
 
15
15
  ```mermaid
16
16
  sequenceDiagram
@@ -10,7 +10,7 @@ Useful to assign unused VEIDs to new VMs to be created.
10
10
  <!-- Mermaid generator - Section start -->
11
11
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/free_veids.md-0.png)
12
12
  <details>
13
- <summary>See diagram Mermaid code</summary>
13
+ <summary><sub><sup>Diagram code</sup></sub></summary>
14
14
 
15
15
  ```mermaid
16
16
  sequenceDiagram
@@ -8,7 +8,7 @@ This is especially useful to know which nodes have to be tested against a given
8
8
  <!-- Mermaid generator - Section start -->
9
9
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/get_impacted_nodes.md-0.png)
10
10
  <details>
11
- <summary>See diagram Mermaid code</summary>
11
+ <summary><sub><sup>Diagram code</sup></sub></summary>
12
12
 
13
13
  ```mermaid
14
14
  sequenceDiagram
@@ -7,7 +7,7 @@ The `last_deploys` executable will fetch the last deployments information for a
7
7
  <!-- Mermaid generator - Section start -->
8
8
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/last_deploys.md-0.png)
9
9
  <details>
10
- <summary>See diagram Mermaid code</summary>
10
+ <summary><sub><sup>Diagram code</sup></sub></summary>
11
11
 
12
12
  ```mermaid
13
13
  sequenceDiagram
@@ -11,7 +11,7 @@ The list of nodes is given in standard output.
11
11
  <!-- Mermaid generator - Section start -->
12
12
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/nodes_to_deploy.md-0.png)
13
13
  <details>
14
- <summary>See diagram Mermaid code</summary>
14
+ <summary><sub><sup>Diagram code</sup></sub></summary>
15
15
 
16
16
  ```mermaid
17
17
  sequenceDiagram
@@ -8,7 +8,7 @@ This executable is using [report plugins](../plugins.md#report) so that the tool
8
8
  <!-- Mermaid generator - Section start -->
9
9
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/report.md-0.png)
10
10
  <details>
11
- <summary>See diagram Mermaid code</summary>
11
+ <summary><sub><sup>Diagram code</sup></sub></summary>
12
12
 
13
13
  ```mermaid
14
14
  sequenceDiagram
@@ -8,7 +8,7 @@ It will use connectors (SSH...) to do so.
8
8
  <!-- Mermaid generator - Section start -->
9
9
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/run.md-0.png)
10
10
  <details>
11
- <summary>See diagram Mermaid code</summary>
11
+ <summary><sub><sup>Diagram code</sup></sub></summary>
12
12
 
13
13
  ```mermaid
14
14
  sequenceDiagram
@@ -10,7 +10,7 @@ It is intended to be run only for the initial setup or when such dependencies ch
10
10
  <!-- Mermaid generator - Section start -->
11
11
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/setup.md-0.png)
12
12
  <details>
13
- <summary>See diagram Mermaid code</summary>
13
+ <summary><sub><sup>Diagram code</sup></sub></summary>
14
14
 
15
15
  ```mermaid
16
16
  sequenceDiagram
@@ -11,7 +11,7 @@ This executable is also used internally by other tools of Hybrid Platforms Condu
11
11
  <!-- Mermaid generator - Section start -->
12
12
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/ssh_config.md-0.png)
13
13
  <details>
14
- <summary>See diagram Mermaid code</summary>
14
+ <summary><sub><sup>Diagram code</sup></sub></summary>
15
15
 
16
16
  ```mermaid
17
17
  sequenceDiagram
@@ -12,7 +12,7 @@ This executable is perfectly suited to be integrated in a continuous integration
12
12
  <!-- Mermaid generator - Section start -->
13
13
  ![Mermaid diagram](/docs/gen/mermaid/docs/executables/test.md-0.png)
14
14
  <details>
15
- <summary>See diagram Mermaid code</summary>
15
+ <summary><sub><sup>Diagram code</sup></sub></summary>
16
16
 
17
17
  ```mermaid
18
18
  sequenceDiagram
data/docs/plugins.md CHANGED
@@ -107,6 +107,7 @@ Examples of platform handlers are:
107
107
  Check the [sample plugin file](../lib/hybrid_platforms_conductor/hpc_plugins/platform_handler/platform_handler_plugin.rb.sample) to know more about the API that needs to be implemented by such plugins.
108
108
 
109
109
  Plugins shipped by default:
110
+ * [`serverless_chef`](plugins/platform_handler/serverless_chef.md)
110
111
  * [`yaml_inventory`](plugins/platform_handler/yaml_inventory.md)
111
112
 
112
113
  <a name="provisioner"></a>
@@ -0,0 +1,105 @@
1
+ # PlatformHandler plugin: `serverless_chef`
2
+
3
+ The `serverless_chef` platform handler is supporting a [Chef repository](https://docs.chef.io/chef_repo/), and deploying services from this repository with using a Chef Infra Server. It uses a client-only deployment process.
4
+
5
+ The Chef repository concepts supported by this plugin are:
6
+ * nodes,
7
+ * policies,
8
+ * data bags,
9
+ * cookbooks,
10
+ * knife configuration,
11
+ * node attributes,
12
+ * policy attributes.
13
+
14
+ The Chef repository concepts not supported by this plugin are:
15
+ * roles,
16
+ * environments.
17
+
18
+ ## Requirements
19
+
20
+ The platform repository has to contain a file named `chef_versions.yml` that will define the required Chef components' versions fro this Chef repository.
21
+
22
+ Here is the structure of this Yaml file:
23
+ * **`workstation`** (*String*): Version of the [Chef Workstation](https://downloads.chef.io/tools/workstation) to be installed locally during the [setup](/docs/executables/setup.md) phase.
24
+ * **`client`** (*String*): Version of the [Chef Infra Client](https://docs.chef.io/chef_client_overview/) to be installed on nodes that will be deployed.
25
+
26
+ Versions can be of the form `major.minor.patch` or only `major.minor` to benefit automatically from latest patch versions.
27
+
28
+ Example of `chef_versions.yml`:
29
+ ```yaml
30
+ ---
31
+ workstation: '21.5'
32
+ client: '17.0'
33
+ ```
34
+
35
+ ## Inventory
36
+
37
+ Inventory is read directly from the `nodes/*.json` files that are present in a Chef repository.
38
+
39
+ Nodes are expected to use [policies](https://docs.chef.io/policy/) to know which service is to be deployed on a node.
40
+
41
+ Metadata is taken from the normal attributes defined in the node's json file.
42
+
43
+ Example of node json:
44
+ ```json
45
+ {
46
+ "name": "test-node",
47
+ "normal": {
48
+ "description": "Single test node",
49
+ "image": "debian_9",
50
+ "private_ips": ["172.16.0.1"],
51
+ "metadata_property": "metadata_value"
52
+ },
53
+ "policy_name": "service_name",
54
+ "policy_group": "test_group"
55
+ }
56
+ ```
57
+
58
+ ## Services
59
+
60
+ Services available from a Chef repository are parsed from the [policy files](https://docs.chef.io/policyfile/) stored in `policyfiles/*.rb`.
61
+ 1 policy file is 1 service.
62
+
63
+ Services are being deployed by packaging the policy using [`chef install`](https://docs.chef.io/workstation/ctl_chef/#chef-install), [`chef export`](https://docs.chef.io/workstation/ctl_chef/#chef-export), which ensures packaging processes optimal and independent from 1 policy to another.
64
+
65
+ Then packaged services are uploaded on the node to configured and deployment is done remotely using [Chef Infra Client in local mode](https://docs.chef.io/ctl_chef_client/#run-in-local-mode) on the remote node.
66
+
67
+ ## Config DSL extension
68
+
69
+ ### `helpers_including_recipes`
70
+
71
+ The `helpers_including_recipes` DSL helps understanding dependencies between cookbooks in your Chef repository.
72
+ This is used only by the Hybrid Platform Conductor processes that compute which services are being impacted by some git diffs. For example the [`get_impacted_nodes` executable](/docs/executables/get_impacted_nodes.md), and is completely optional.
73
+
74
+ This helper defines which recipes are being used by a given library helper.
75
+ For example if you define a helper named `my_configs` in a library that will use internally a recipe named `my_cookbook::configs` you will need to declare this dependency using the `helpers_including_recipes` for Hybrid Platforms Conductor to know about this dependency.
76
+ This way, if another recipe (let's say `my_cookbook::production`) uses this helper and a git diff reports a modification in the `my_cookbook::configs` recipe, every node using `my_cookbook::production` will be marked as impacted by such a git diff.
77
+
78
+ The helper takes a Hash as parameters: for each helper name, it gives a list of used recipes.
79
+
80
+ For example:
81
+ ```ruby
82
+ helpers_including_recipes(
83
+ my_configs: %w[my_cookbook::configs]
84
+ )
85
+ ```
86
+
87
+ ## Used credentials
88
+
89
+ | Credential | Usage
90
+ | --- | --- |
91
+
92
+ ## Used Metadata
93
+
94
+ | Metadata | Type | Usage
95
+ | --- | --- | --- |
96
+ | `use_local_chef` | `Boolean` | If set to true, then run chef-client locally instead of deploying on a remote node |
97
+
98
+ ## Used environment variables
99
+
100
+ | Variable | Usage
101
+ | --- | --- |
102
+
103
+ ## External tools dependencies
104
+
105
+ * `curl`: Used to install Chef Workstation.
data/docs/tutorial.md CHANGED
@@ -43,15 +43,19 @@ The tutorial assumes that all of the Hybrid Platforms Conductor commands will be
43
43
  All steps, command lines and files creations are explicitly detailed in the tutorial steps.
44
44
  No previous knowledge of Ruby is required to get through this tutorial.
45
45
 
46
+ If in doubt, you can always refer to the [tutorial example folder](../examples/tutorial) to check files content.
47
+ Please note however that the content of this example tutorial folder maps the content of the files at the end of each section of the tutorial (numberd from 01 to 05), and intermediate steps in the tutorial can modify such files.
48
+ So the tutorial example folders may not reflect the expected content at an intermediate tutorial step.
49
+
46
50
  **[Next >> Let's start by the first step: installation of your Hybrid Platforms Conductor's environment](tutorial/01_installation.md)**
47
51
 
48
52
  ---
49
53
  **<p style="text-align: center;">Tutorial navigation</p>**
50
54
 
51
- | <nobr><sub><sub>&#128071;You are here&#128071;</sub></sub></nobr><br><sub>[Introduction](/docs/tutorial.md)</sub> | <sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
55
+ | <nobr><sub><sup>&#128071;You are here&#128071;</sup></sub></nobr><br><sub>[Introduction](/docs/tutorial.md)</sub> | <sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
52
56
  | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
53
- | <sub><sub>**[Use-case](/docs/tutorial.md#use-case)**</sub></sub> | <sub><sub>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sub></sub> | <sub><sub>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sub></sub> | <sub><sub>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sub></sub> | <sub><sub>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sub></sub> | <sub><sub>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sub></sub> |
54
- | <sub><sub>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sub></sub> | <sub><sub>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sub></sub> | <sub><sub>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sub></sub> | <sub><sub>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sub></sub> | <sub><sub>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sub></sub> | <sub><sub>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sub></sub> |
55
- | <sub><sub>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sub></sub> | | <sub><sub>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sub></sub> | <sub><sub>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sub></sub> | <sub><sub>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sub></sub> | <sub><sub>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sub></sub> |
56
- | | | | | <sub><sub>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sub></sub> | <sub><sub>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sub></sub> |
57
- | | | | | | <sub><sub>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sub></sub> |
57
+ | <sub><sup>**[Use-case](/docs/tutorial.md#use-case)**</sup></sub> | <sub><sup>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sup></sub> | <sub><sup>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sup></sub> | <sub><sup>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sup></sub> | <sub><sup>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sup></sub> | <sub><sup>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sup></sub> |
58
+ | <sub><sup>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sup></sub> | <sub><sup>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sup></sub> | <sub><sup>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sup></sub> | <sub><sup>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sup></sub> | <sub><sup>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sup></sub> | <sub><sup>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sup></sub> |
59
+ | <sub><sup>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sup></sub> | | <sub><sup>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sup></sub> | <sub><sup>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sup></sub> | <sub><sup>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sup></sub> | <sub><sup>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sup></sub> |
60
+ | | | | | <sub><sup>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sup></sub> | <sub><sup>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sup></sub> |
61
+ | | | | | | <sub><sup>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sup></sub> |
@@ -2,13 +2,13 @@
2
2
  ---
3
3
  **<p style="text-align: center;">Tutorial navigation</p>**
4
4
 
5
- | <sub>[Introduction](/docs/tutorial.md)</sub> | <nobr><sub><sub>&#128071;You are here&#128071;</sub></sub></nobr><br><sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
5
+ | <sub>[Introduction](/docs/tutorial.md)</sub> | <nobr><sub><sup>&#128071;You are here&#128071;</sup></sub></nobr><br><sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
6
6
  | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
7
- | <sub><sub>**[Use-case](/docs/tutorial.md#use-case)**</sub></sub> | <sub><sub>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sub></sub> | <sub><sub>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sub></sub> | <sub><sub>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sub></sub> | <sub><sub>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sub></sub> | <sub><sub>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sub></sub> |
8
- | <sub><sub>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sub></sub> | <sub><sub>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sub></sub> | <sub><sub>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sub></sub> | <sub><sub>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sub></sub> | <sub><sub>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sub></sub> | <sub><sub>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sub></sub> |
9
- | <sub><sub>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sub></sub> | | <sub><sub>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sub></sub> | <sub><sub>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sub></sub> | <sub><sub>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sub></sub> | <sub><sub>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sub></sub> |
10
- | | | | | <sub><sub>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sub></sub> | <sub><sub>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sub></sub> |
11
- | | | | | | <sub><sub>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sub></sub> |
7
+ | <sub><sup>**[Use-case](/docs/tutorial.md#use-case)**</sup></sub> | <sub><sup>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sup></sub> | <sub><sup>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sup></sub> | <sub><sup>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sup></sub> | <sub><sup>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sup></sub> | <sub><sup>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sup></sub> |
8
+ | <sub><sup>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sup></sub> | <sub><sup>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sup></sub> | <sub><sup>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sup></sub> | <sub><sup>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sup></sub> | <sub><sup>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sup></sub> | <sub><sup>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sup></sub> |
9
+ | <sub><sup>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sup></sub> | | <sub><sup>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sup></sub> | <sub><sup>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sup></sub> | <sub><sup>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sup></sub> | <sub><sup>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sup></sub> |
10
+ | | | | | <sub><sup>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sup></sub> | <sub><sup>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sup></sub> |
11
+ | | | | | | <sub><sup>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sup></sub> |
12
12
 
13
13
  # 1. Installation and first-time setup
14
14
 
@@ -115,15 +115,17 @@ The installation and setup are finished!
115
115
 
116
116
  Now we are ready to fill in this empty inventory and use the whole power brought by the Hybrid Platforms Conductor to manage our platforms.
117
117
 
118
+ *Files that have been covered in this section can be checked in [this example tutorial folder](/examples/tutorial/01_installation).*
119
+
118
120
  **[Next >> Check and deploy your first node](/docs/tutorial/02_first_node.md)**
119
121
 
120
122
  ---
121
123
  **<p style="text-align: center;">Tutorial navigation</p>**
122
124
 
123
- | <sub>[Introduction](/docs/tutorial.md)</sub> | <nobr><sub><sub>&#128071;You are here&#128071;</sub></sub></nobr><br><sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
125
+ | <sub>[Introduction](/docs/tutorial.md)</sub> | <nobr><sub><sup>&#128071;You are here&#128071;</sup></sub></nobr><br><sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
124
126
  | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
125
- | <sub><sub>**[Use-case](/docs/tutorial.md#use-case)**</sub></sub> | <sub><sub>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sub></sub> | <sub><sub>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sub></sub> | <sub><sub>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sub></sub> | <sub><sub>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sub></sub> | <sub><sub>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sub></sub> |
126
- | <sub><sub>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sub></sub> | <sub><sub>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sub></sub> | <sub><sub>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sub></sub> | <sub><sub>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sub></sub> | <sub><sub>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sub></sub> | <sub><sub>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sub></sub> |
127
- | <sub><sub>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sub></sub> | | <sub><sub>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sub></sub> | <sub><sub>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sub></sub> | <sub><sub>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sub></sub> | <sub><sub>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sub></sub> |
128
- | | | | | <sub><sub>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sub></sub> | <sub><sub>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sub></sub> |
129
- | | | | | | <sub><sub>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sub></sub> |
127
+ | <sub><sup>**[Use-case](/docs/tutorial.md#use-case)**</sup></sub> | <sub><sup>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sup></sub> | <sub><sup>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sup></sub> | <sub><sup>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sup></sub> | <sub><sup>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sup></sub> | <sub><sup>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sup></sub> |
128
+ | <sub><sup>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sup></sub> | <sub><sup>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sup></sub> | <sub><sup>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sup></sub> | <sub><sup>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sup></sub> | <sub><sup>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sup></sub> | <sub><sup>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sup></sub> |
129
+ | <sub><sup>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sup></sub> | | <sub><sup>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sup></sub> | <sub><sup>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sup></sub> | <sub><sup>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sup></sub> | <sub><sup>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sup></sub> |
130
+ | | | | | <sub><sup>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sup></sub> | <sub><sup>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sup></sub> |
131
+ | | | | | | <sub><sup>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sup></sub> |
@@ -2,13 +2,13 @@
2
2
  ---
3
3
  **<p style="text-align: center;">Tutorial navigation</p>**
4
4
 
5
- | <sub>[Introduction](/docs/tutorial.md)</sub> | <sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <nobr><sub><sub>&#128071;You are here&#128071;</sub></sub></nobr><br><sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
5
+ | <sub>[Introduction](/docs/tutorial.md)</sub> | <sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <nobr><sub><sup>&#128071;You are here&#128071;</sup></sub></nobr><br><sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
6
6
  | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
7
- | <sub><sub>**[Use-case](/docs/tutorial.md#use-case)**</sub></sub> | <sub><sub>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sub></sub> | <sub><sub>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sub></sub> | <sub><sub>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sub></sub> | <sub><sub>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sub></sub> | <sub><sub>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sub></sub> |
8
- | <sub><sub>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sub></sub> | <sub><sub>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sub></sub> | <sub><sub>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sub></sub> | <sub><sub>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sub></sub> | <sub><sub>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sub></sub> | <sub><sub>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sub></sub> |
9
- | <sub><sub>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sub></sub> | | <sub><sub>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sub></sub> | <sub><sub>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sub></sub> | <sub><sub>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sub></sub> | <sub><sub>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sub></sub> |
10
- | | | | | <sub><sub>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sub></sub> | <sub><sub>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sub></sub> |
11
- | | | | | | <sub><sub>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sub></sub> |
7
+ | <sub><sup>**[Use-case](/docs/tutorial.md#use-case)**</sup></sub> | <sub><sup>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sup></sub> | <sub><sup>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sup></sub> | <sub><sup>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sup></sub> | <sub><sup>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sup></sub> | <sub><sup>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sup></sub> |
8
+ | <sub><sup>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sup></sub> | <sub><sup>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sup></sub> | <sub><sup>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sup></sub> | <sub><sup>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sup></sub> | <sub><sup>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sup></sub> | <sub><sup>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sup></sub> |
9
+ | <sub><sup>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sup></sub> | | <sub><sup>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sup></sub> | <sub><sup>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sup></sub> | <sub><sup>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sup></sub> | <sub><sup>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sup></sub> |
10
+ | | | | | <sub><sup>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sup></sub> | <sub><sup>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sup></sub> |
11
+ | | | | | | <sub><sup>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sup></sub> |
12
12
 
13
13
  # 2. Deploy and check a first node
14
14
 
@@ -452,15 +452,17 @@ So now it's time to see how Hybrid Platforms Conductor will scale those processe
452
452
 
453
453
  We won't stop at editing bash scripts on a local environment - time to scale!
454
454
 
455
+ *Files that have been covered in this section can be checked in [this example tutorial folder](/examples/tutorial/02_first_node).*
456
+
455
457
  **[Next >> Scale your processes](/docs/tutorial/03_scale.md)**
456
458
 
457
459
  ---
458
460
  **<p style="text-align: center;">Tutorial navigation</p>**
459
461
 
460
- | <sub>[Introduction](/docs/tutorial.md)</sub> | <sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <nobr><sub><sub>&#128071;You are here&#128071;</sub></sub></nobr><br><sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
462
+ | <sub>[Introduction](/docs/tutorial.md)</sub> | <sub>[1. Installation and first-time setup](/docs/tutorial/01_installation.md)</sub> | <nobr><sub><sup>&#128071;You are here&#128071;</sup></sub></nobr><br><sub>[2. Deploy and check a first node](/docs/tutorial/02_first_node.md)</sub> | <sub>[3. Scale your processes](/docs/tutorial/03_scale.md)</sub> | <sub>[4. Testing your processes and platforms](/docs/tutorial/04_test.md)</sub> | <sub>[5. Extend Hybrid Platforms Conductor with your own requirements](/docs/tutorial/05_extend_with_plugins.md)</sub> |
461
463
  | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
462
- | <sub><sub>**[Use-case](/docs/tutorial.md#use-case)**</sub></sub> | <sub><sub>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sub></sub> | <sub><sub>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sub></sub> | <sub><sub>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sub></sub> | <sub><sub>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sub></sub> | <sub><sub>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sub></sub> |
463
- | <sub><sub>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sub></sub> | <sub><sub>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sub></sub> | <sub><sub>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sub></sub> | <sub><sub>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sub></sub> | <sub><sub>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sub></sub> | <sub><sub>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sub></sub> |
464
- | <sub><sub>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sub></sub> | | <sub><sub>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sub></sub> | <sub><sub>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sub></sub> | <sub><sub>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sub></sub> | <sub><sub>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sub></sub> |
465
- | | | | | <sub><sub>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sub></sub> | <sub><sub>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sub></sub> |
466
- | | | | | | <sub><sub>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sub></sub> |
464
+ | <sub><sup>**[Use-case](/docs/tutorial.md#use-case)**</sup></sub> | <sub><sup>**[Dependencies installation](/docs/tutorial/01_installation.md#hpc-dependencies)**</sup></sub> | <sub><sup>**[Add your first node and its platform repository](/docs/tutorial/02_first_node.md#add-first-node)**</sup></sub> | <sub><sup>**[Provision our web services platform](/docs/tutorial/03_scale.md#provision)**</sup></sub> | <sub><sup>**[Hello test framework](/docs/tutorial/04_test.md#framework)**</sup></sub> | <sub><sup>**[Create your plugins' repository](/docs/tutorial/05_extend_with_plugins.md#plugins-repo)**</sup></sub> |
465
+ | <sub><sup>**[Prerequisites](/docs/tutorial.md#prerequisites)**</sup></sub> | <sub><sup>**[Our platforms' main repository](/docs/tutorial/01_installation.md#main-repo)**</sup></sub> | <sub><sup>**[Check and deploy services on this node](/docs/tutorial/02_first_node.md#check-deploy)**</sup></sub> | <sub><sup>**[Run commands on our new web services](/docs/tutorial/03_scale.md#run)**</sup></sub> | <sub><sup>**[Testing your nodes](/docs/tutorial/04_test.md#nodes-tests)**</sup></sub> | <sub><sup>**[Your own platform handler](/docs/tutorial/05_extend_with_plugins.md#platform-handler)**</sup></sub> |
466
+ | <sub><sup>**[Tutorial setup](/docs/tutorial.md#tutorial-setup)**</sup></sub> | | <sub><sup>**[Updating the configuration](/docs/tutorial/02_first_node.md#update)**</sup></sub> | <sub><sup>**[Check and deploy our web services on several nodes at once](/docs/tutorial/03_scale.md#check-deploy)**</sup></sub> | <sub><sup>**[Testing your platforms' configuration](/docs/tutorial/04_test.md#platforms-tests)**</sup></sub> | <sub><sup>**[Write your own tests](/docs/tutorial/05_extend_with_plugins.md#test)**</sup></sub> |
467
+ | | | | | <sub><sup>**[Other kinds of tests](/docs/tutorial/04_test.md#other-tests)**</sup></sub> | <sub><sup>**[Enough of stdout, we want to report to other tools](/docs/tutorial/05_extend_with_plugins.md#report)**</sup></sub> |
468
+ | | | | | | <sub><sup>**[What next?](/docs/tutorial/05_extend_with_plugins.md#what-next)**</sup></sub> |