diff --git a/docs/docs/variability4tosca/rules/index.md b/docs/docs/variability4tosca/rules/index.md
index b1d1fc8399..e717f4c901 100644
--- a/docs/docs/variability4tosca/rules/index.md
+++ b/docs/docs/variability4tosca/rules/index.md
@@ -65,9 +65,10 @@ We assess the deployment quality of the following scenarios.
### Scenario #1
-A node template whose node type is or is derived from the node type [docker.engine](/normative#dockerengine){target=_blank} and which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [docker.engine](/normative#dockerengine){target=_blank} is deployed.
+The node template is hosted on the node template "host 1" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -80,9 +81,10 @@ A node template whose node type is or is derived from the node type [docker.engi
### Scenario #2
-A node template whose node type is or is derived from the node type [gcp.service](/normative#gcpservice){target=_blank}.
+In this scenario, the node template "component" of node type [gcp.service](/normative#gcpservice){target=_blank} is deployed.
+The scenario does not require a specific hosting.
-
+
!!! success "Ansible (Quality: 1)"
@@ -95,9 +97,10 @@ A node template whose node type is or is derived from the node type [gcp.service
### Scenario #3
-A node template whose node type is or is derived from the node type [ingress](/normative#ingress){target=_blank} and which is hosted on a node template whose node type is or is derived from [kubernetes.cluster](/normative#kubernetescluster){target=_blank}.
+In this scenario, the node template "component" of node type [ingress](/normative#ingress){target=_blank} is deployed.
+The node template is hosted on the node template "host 1" of node type [kubernetes.cluster](/normative#kubernetescluster){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -113,9 +116,10 @@ A node template whose node type is or is derived from the node type [ingress](/n
### Scenario #4
-A node template whose node type is or is derived from the node type [ingress](/normative#ingress){target=_blank} and which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [ingress](/normative#ingress){target=_blank} is deployed.
+The node template is hosted on the node template "host 1" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -128,9 +132,10 @@ A node template whose node type is or is derived from the node type [ingress](/n
### Scenario #5
-A node template whose node type is or is derived from the node type [mysql.database](/normative#mysqldatabase){target=_blank} and which is hosted on a node template whose node type is or is derived from [mysql.dbms](/normative#mysqldbms){target=_blank}, which is hosted on a node template whose node type is or is derived from [docker.engine](/normative#dockerengine){target=_blank}, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [mysql.database](/normative#mysqldatabase){target=_blank} is deployed.
+The node template is hosted on the node template "host 1" of node type [mysql.dbms](/normative#mysqldbms){target=_blank}, which is hosted on the node template "host 2" of node type [docker.engine](/normative#dockerengine){target=_blank}, which is hosted on the node template "host 3" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -146,9 +151,10 @@ A node template whose node type is or is derived from the node type [mysql.datab
### Scenario #6
-A node template whose node type is or is derived from the node type [mysql.database](/normative#mysqldatabase){target=_blank} and which is hosted on a node template whose node type is or is derived from [mysql.dbms](/normative#mysqldbms){target=_blank}, which is hosted on a node template whose node type is or is derived from [gcp.cloudsql](/normative#gcpcloudsql){target=_blank}.
+In this scenario, the node template "component" of node type [mysql.database](/normative#mysqldatabase){target=_blank} is deployed.
+The node template is hosted on the node template "host 1" of node type [mysql.dbms](/normative#mysqldbms){target=_blank}, which is hosted on the node template "host 2" of node type [gcp.cloudsql](/normative#gcpcloudsql){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -161,9 +167,10 @@ A node template whose node type is or is derived from the node type [mysql.datab
### Scenario #7
-A node template whose node type is or is derived from the node type [mysql.database](/normative#mysqldatabase){target=_blank} and which is hosted on a node template whose node type is or is derived from [mysql.dbms](/normative#mysqldbms){target=_blank}, which is hosted on a node template whose node type is or is derived from [kubernetes.cluster](/normative#kubernetescluster){target=_blank}.
+In this scenario, the node template "component" of node type [mysql.database](/normative#mysqldatabase){target=_blank} is deployed.
+The node template is hosted on the node template "host 1" of node type [mysql.dbms](/normative#mysqldbms){target=_blank}, which is hosted on the node template "host 2" of node type [kubernetes.cluster](/normative#kubernetescluster){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -179,9 +186,10 @@ A node template whose node type is or is derived from the node type [mysql.datab
### Scenario #8
-A node template whose node type is or is derived from the node type [mysql.database](/normative#mysqldatabase){target=_blank} and which is hosted on a node template whose node type is or is derived from [mysql.dbms](/normative#mysqldbms){target=_blank}, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [mysql.database](/normative#mysqldatabase){target=_blank} is deployed.
+The node template is hosted on the node template "host 1" of node type [mysql.dbms](/normative#mysqldbms){target=_blank}, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -194,10 +202,11 @@ A node template whose node type is or is derived from the node type [mysql.datab
### Scenario #9
-A node template whose node type is or is derived from the node type [mysql.dbms](/normative#mysqldbms){target=_blank} and which has an artifact whose artifact type is or is derived from [dbms.image](/normative#dbmsimage){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [docker.engine](/normative#dockerengine){target=_blank}, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [mysql.dbms](/normative#mysqldbms){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [dbms.image](/normative#dbmsimage){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [docker.engine](/normative#dockerengine){target=_blank}, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -213,10 +222,11 @@ A node template whose node type is or is derived from the node type [mysql.dbms]
### Scenario #10
-A node template whose node type is or is derived from the node type [mysql.dbms](/normative#mysqldbms){target=_blank} and which has an artifact whose artifact type is or is derived from [dbms.image](/normative#dbmsimage){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [gcp.cloudsql](/normative#gcpcloudsql){target=_blank}.
+In this scenario, the node template "component" of node type [mysql.dbms](/normative#mysqldbms){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [dbms.image](/normative#dbmsimage){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [gcp.cloudsql](/normative#gcpcloudsql){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -229,10 +239,11 @@ A node template whose node type is or is derived from the node type [mysql.dbms]
### Scenario #11
-A node template whose node type is or is derived from the node type [mysql.dbms](/normative#mysqldbms){target=_blank} and which has an artifact whose artifact type is or is derived from [dbms.image](/normative#dbmsimage){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [kubernetes.cluster](/normative#kubernetescluster){target=_blank}.
+In this scenario, the node template "component" of node type [mysql.dbms](/normative#mysqldbms){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [dbms.image](/normative#dbmsimage){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [kubernetes.cluster](/normative#kubernetescluster){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -248,10 +259,11 @@ A node template whose node type is or is derived from the node type [mysql.dbms]
### Scenario #12
-A node template whose node type is or is derived from the node type [mysql.dbms](/normative#mysqldbms){target=_blank} and which has an artifact whose artifact type is or is derived from [dbms.image](/normative#dbmsimage){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [mysql.dbms](/normative#mysqldbms){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [dbms.image](/normative#dbmsimage){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -264,10 +276,11 @@ A node template whose node type is or is derived from the node type [mysql.dbms]
### Scenario #13
-A node template whose node type is or is derived from the node type [service.application](/normative#serviceapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [docker.image](/normative#dockerimage){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [docker.engine](/normative#dockerengine){target=_blank}, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [service.application](/normative#serviceapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [docker.image](/normative#dockerimage){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [docker.engine](/normative#dockerengine){target=_blank}, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -283,10 +296,11 @@ A node template whose node type is or is derived from the node type [service.app
### Scenario #14
-A node template whose node type is or is derived from the node type [service.application](/normative#serviceapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [docker.image](/normative#dockerimage){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [gcp.cloudrun](/normative#gcpcloudrun){target=_blank}.
+In this scenario, the node template "component" of node type [service.application](/normative#serviceapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [docker.image](/normative#dockerimage){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [gcp.cloudrun](/normative#gcpcloudrun){target=_blank}.
-
+
!!! failure "Ansible (Quality: 0)"
@@ -299,10 +313,11 @@ A node template whose node type is or is derived from the node type [service.app
### Scenario #15
-A node template whose node type is or is derived from the node type [service.application](/normative#serviceapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [docker.image](/normative#dockerimage){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [kubernetes.cluster](/normative#kubernetescluster){target=_blank}.
+In this scenario, the node template "component" of node type [service.application](/normative#serviceapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [docker.image](/normative#dockerimage){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [kubernetes.cluster](/normative#kubernetescluster){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -318,10 +333,11 @@ A node template whose node type is or is derived from the node type [service.app
### Scenario #16
-A node template whose node type is or is derived from the node type [service.application](/normative#serviceapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [tar.archive](/normative#tararchive){target=_blank},
- and which is hosted on an arbitrary hosting stack, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [service.application](/normative#serviceapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [tar.archive](/normative#tararchive){target=_blank}.
+The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -334,10 +350,11 @@ A node template whose node type is or is derived from the node type [service.app
### Scenario #17
-A node template whose node type is or is derived from the node type [service.application](/normative#serviceapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [zip.archive](/normative#ziparchive){target=_blank},
- and which is hosted on an arbitrary hosting stack, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [service.application](/normative#serviceapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [zip.archive](/normative#ziparchive){target=_blank}.
+The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -350,10 +367,11 @@ A node template whose node type is or is derived from the node type [service.app
### Scenario #18
-A node template whose node type is or is derived from the node type [service.application](/normative#serviceapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [zip.archive](/normative#ziparchive){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [gcp.appengine](/normative#gcpappengine){target=_blank}.
+In this scenario, the node template "component" of node type [service.application](/normative#serviceapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [zip.archive](/normative#ziparchive){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [gcp.appengine](/normative#gcpappengine){target=_blank}.
-
+
!!! failure "Ansible (Quality: 0)"
@@ -366,10 +384,11 @@ A node template whose node type is or is derived from the node type [service.app
### Scenario #19
-A node template whose node type is or is derived from the node type [software.application](/normative#softwareapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [apt.package](/normative#aptpackage){target=_blank},
- and which is hosted on an arbitrary hosting stack, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [software.application](/normative#softwareapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [apt.package](/normative#aptpackage){target=_blank}.
+The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! success "Ansible (Quality: 1)"
@@ -379,10 +398,11 @@ A node template whose node type is or is derived from the node type [software.ap
### Scenario #20
-A node template whose node type is or is derived from the node type [software.application](/normative#softwareapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [tar.archive](/normative#tararchive){target=_blank},
- and which is hosted on an arbitrary hosting stack, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [software.application](/normative#softwareapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [tar.archive](/normative#tararchive){target=_blank}.
+The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -395,10 +415,11 @@ A node template whose node type is or is derived from the node type [software.ap
### Scenario #21
-A node template whose node type is or is derived from the node type [software.application](/normative#softwareapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [zip.archive](/normative#ziparchive){target=_blank},
- and which is hosted on an arbitrary hosting stack, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [software.application](/normative#softwareapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [zip.archive](/normative#ziparchive){target=_blank}.
+The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -411,10 +432,11 @@ A node template whose node type is or is derived from the node type [software.ap
### Scenario #22
-A node template whose node type is or is derived from the node type [virtual.machine](/normative#virtualmachine){target=_blank} and which has an artifact whose artifact type is or is derived from [machine.image](/normative#machineimage){target=_blank},
- and which is hosted on a node template whose node type is or is derived from [openstack.provider](/normative#openstackprovider){target=_blank}.
+In this scenario, the node template "component" of node type [virtual.machine](/normative#virtualmachine){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [machine.image](/normative#machineimage){target=_blank}.
+The node template is hosted on the node template "host 1" of node type [openstack.provider](/normative#openstackprovider){target=_blank}.
-
+
!!! info "Ansible (Quality: 0.5)"
@@ -427,10 +449,11 @@ A node template whose node type is or is derived from the node type [virtual.mac
### Scenario #23
-A node template whose node type is or is derived from the node type [software.application](/normative#softwareapplication){target=_blank} and which has an artifact whose artifact type is or is derived from [apt.archive](/normative#aptarchive){target=_blank},
- and which is hosted on an arbitrary hosting stack, which is hosted on a node template whose node type is or is derived from [remote.machine](/normative#remotemachine){target=_blank}.
+In this scenario, the node template "component" of node type [software.application](/normative#softwareapplication){target=_blank} is deployed.
+This node template is implemented by its deployment artifact "artifact" of artifact type [apt.archive](/normative#aptarchive){target=_blank}.
+The node template is hosted on an arbitrary hosting stack of arbitrary length, which is hosted on the node template "host 2" of node type [remote.machine](/normative#remotemachine){target=_blank}.
-
+
!!! failure "Terraform (Quality: 0)"
@@ -453,7 +476,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. |
| Details | "ansible.builtin.shell", "ansible.builtin.group", and "ansible.builtin.user" tasks |
-| Graph ||
+| Graph ||
### Rule #2
| Attribute | Value |
@@ -463,7 +486,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Ansible provides a declarative module |
| Details | "google.cloud.gcp_serviceusage_service" task |
-| Graph ||
+| Graph ||
### Rule #3
| Attribute | Value |
@@ -474,7 +497,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Kubernetes is more specialized. |
| Details | "kubernetes.core.k8s" task |
-| Graph ||
+| Graph ||
### Rule #4
| Attribute | Value |
@@ -485,7 +508,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. |
| Details | "ansible.builtin.apt_key", "ansible.builtin.apt_repository", "ansible.builtin.apt", "ansible.builtin.copy", and "ansible.builtin.systemd" tasks |
-| Graph ||
+| Graph ||
### Rule #5
| Attribute | Value |
@@ -496,7 +519,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #6
| Attribute | Value |
@@ -507,7 +530,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Primary use case due to the specialization of Ansible. However, need to install and handle GCP CloudSQL Proxy, while the corresponding Terraform module already provides this. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #7
| Attribute | Value |
@@ -518,7 +541,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #8
| Attribute | Value |
@@ -529,7 +552,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #9
| Attribute | Value |
@@ -541,7 +564,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Docker Compose is more specialized |
| Details | "community.docker.docker_container" task |
-| Graph ||
+| Graph ||
### Rule #10
| Attribute | Value |
@@ -553,7 +576,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. |
| Details | "google.cloud.gcp_sql_instance" and "google.cloud.gcp_sql_user" tasks |
-| Graph ||
+| Graph ||
### Rule #11
| Attribute | Value |
@@ -565,7 +588,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Kubernetes is more specialized. |
| Details | "kubernetes.core.k8s" tasks |
-| Graph ||
+| Graph ||
### Rule #12
| Attribute | Value |
@@ -577,7 +600,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. |
| Details | "ansible.builtin.apt", "ansible.builtin.systemd", "ansible.builtin.copy", "ansible.builtin.lineinfile", and "community.mysql.mysql_user" tasks |
-| Graph ||
+| Graph ||
### Rule #13
| Attribute | Value |
@@ -589,7 +612,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Docker Compose is more specialized. |
| Details | "community.docker.docker_container" task |
-| Graph ||
+| Graph ||
### Rule #14
| Attribute | Value |
@@ -601,7 +624,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Custom module with imperative parts, while Terraform provides a declarative module. |
| Details | "ansible.builtin.shell", "ansible.builtin.tempfile", and "ansible.builtin.copy" tasks |
-| Graph ||
+| Graph ||
### Rule #15
| Attribute | Value |
@@ -613,7 +636,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Kubernetes is more specialized. |
| Details | "kubernetes.core.k8s" tasks |
-| Graph ||
+| Graph ||
### Rule #16
| Attribute | Value |
@@ -625,7 +648,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. Special integration for systemd. |
| Details | "ansible.builtin.file", "ansible.builtin.unarchive", "ansible.builtin.copy", "ansible.builtin.fail", "ansible.builtin.shell", and "ansible.builtin.systemd" tasks with "when" statements |
-| Graph ||
+| Graph ||
### Rule #17
| Attribute | Value |
@@ -637,7 +660,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. Special integration for systemd. |
| Details | "ansible.builtin.file", "ansible.builtin.unarchive", "ansible.builtin.copy", "ansible.builtin.fail", "ansible.builtin.shell", and "ansible.builtin.systemd" tasks with "when" statements |
-| Graph ||
+| Graph ||
### Rule #18
| Attribute | Value |
@@ -649,7 +672,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Custom module with imperative parts, while Terraform provides a declarative module. |
| Details | "ansible.builtin.shell", "ansible.builtin.tempfile", "ansible.builtin.unarchive", and "ansible.builtin.copy" tasks |
-| Graph ||
+| Graph ||
### Rule #19
| Attribute | Value |
@@ -661,7 +684,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Primary use case due to the specialization of Ansible. |
| Details | "ansible.builtin.shell", "ansible.builtin.apt_key", "ansible.builtin.apt_repository", "ansible.builtin.apt", and "ansible.builtin.copy", tasks with "when" statements |
-| Graph ||
+| Graph ||
### Rule #20
| Attribute | Value |
@@ -673,7 +696,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., "service.application". |
| Details | "ansible.builtin.file", "ansible.builtin.unarchive", "ansible.builtin.copy", "ansible.builtin.fail", and "ansible.builtin.shell" tasks with "when" statements |
-| Graph ||
+| Graph ||
### Rule #21
| Attribute | Value |
@@ -685,7 +708,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | While this is a primary use case due to the specialization of Ansible, we must rely on scripts. More specialized types should be used, e.g., service.application. |
| Details | "ansible.builtin.apt", "ansible.builtin.file", "ansible.builtin.unarchive", "ansible.builtin.copy", "ansible.builtin.fail", and "ansible.builtin.shell" tasks with "when" statements |
-| Graph ||
+| Graph ||
### Rule #22
| Attribute | Value |
@@ -697,7 +720,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Terraform is more specialized. |
| Details | "openstack.cloud.security_group", "openstack.cloud.security_group_rule" and "openstack.cloud.server" tasks |
-| Graph ||
+| Graph ||
@@ -710,7 +733,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. Also using provisioners is a "last resort". |
| Details | "remote-exec" provider |
-| Graph ||
+| Graph ||
### Rule #24
| Attribute | Value |
@@ -720,7 +743,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Terraform provides a declarative module. |
| Details | "google_project_service" resource |
-| Graph ||
+| Graph ||
### Rule #25
| Attribute | Value |
@@ -731,7 +754,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Kubernetes is more specialized. |
| Details | "kubernetes_service_v1" resource |
-| Graph ||
+| Graph ||
### Rule #26
| Attribute | Value |
@@ -742,7 +765,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. Also using provisioners is a "last resort". |
| Details | "terraform_data" resource with an "ssh" connection to the virtual machine to copy the install script using the "file" provisioner on the virtual machine and to execute the script using the "remote-exec" provisioner |
-| Graph ||
+| Graph ||
### Rule #27
| Attribute | Value |
@@ -753,7 +776,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #28
| Attribute | Value |
@@ -764,7 +787,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Terraform provides a declarative module. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #29
| Attribute | Value |
@@ -775,7 +798,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #30
| Attribute | Value |
@@ -786,7 +809,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #31
| Attribute | Value |
@@ -798,7 +821,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Docker Compose is more specialized. |
| Details | "docker_container" and "docker_image" resources |
-| Graph ||
+| Graph ||
### Rule #32
| Attribute | Value |
@@ -810,7 +833,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Terraform provides a declarative module. |
| Details | "google_sql_database_instance" and "google_sql_user" resources |
-| Graph ||
+| Graph ||
### Rule #33
| Attribute | Value |
@@ -822,7 +845,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Kubernetes is more specialized. |
| Details | "kubernetes_deployment_v1" and "kubernetes_service_v1" resources |
-| Graph ||
+| Graph ||
### Rule #34
| Attribute | Value |
@@ -834,7 +857,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. Also using provisioners is a "last resort". |
| Details | "terraform_data" resource with an "ssh" connection to the virtual machine to copy the install script using the "file" provisioner on the virtual machine and to execute the script using the "remote-exec" provisioner |
-| Graph ||
+| Graph ||
### Rule #35
| Attribute | Value |
@@ -846,7 +869,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Docker Compose is more specialized. |
| Details | "docker_container" and "docker_image" resources |
-| Graph ||
+| Graph ||
### Rule #36
| Attribute | Value |
@@ -858,7 +881,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Terraform provides a declarative module. |
| Details | "google_cloud_run_v2_service" and "google_cloud_run_service_iam_binding" resources |
-| Graph ||
+| Graph ||
### Rule #37
| Attribute | Value |
@@ -870,7 +893,7 @@ This appendix contains the deployment technology rules.
| Quality | 0.5 |
| Reason | Kubernetes is more specialized. |
| Details | "kubernetes_deployment_v1" and "kubernetes_service_v1" resources |
-| Graph ||
+| Graph ||
### Rule #38
| Attribute | Value |
@@ -882,7 +905,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. Also using provisioners is a "last resort". |
| Details | "file" provisioner to upload artifacts and scripts and "remote-exec" to execute scripts |
-| Graph ||
+| Graph ||
### Rule #39
| Attribute | Value |
@@ -894,7 +917,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. Also using provisioners is a "last resort". |
| Details | "file" provisioner to upload artifacts and scripts and "remote-exec" to execute scripts |
-| Graph ||
+| Graph ||
### Rule #40
| Attribute | Value |
@@ -906,7 +929,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Terraform provides a declarative module. |
| Details | "google_app_engine_standard_app_version", "google_project_iam_member", "google_service_account", "google_storage_bucket", and "google_storage_bucket_object" resources |
-| Graph ||
+| Graph ||
### Rule #41
| Attribute | Value |
@@ -918,7 +941,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. Also using provisioners is a "last resort". |
| Details | "file" provisioner to upload scripts and "remote-exec" to execute scripts |
-| Graph ||
+| Graph ||
### Rule #42
| Attribute | Value |
@@ -930,7 +953,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. Also using provisioners is a "last resort". |
| Details | "file" provisioner to upload artifacts and scripts and "remote-exec" to execute scripts |
-| Graph ||
+| Graph ||
### Rule #43
| Attribute | Value |
@@ -942,7 +965,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Ansible is more specialized. Also using provisioners is a "last resort". |
| Details | "file" provisioner to upload artifacts and scripts and "remote-exec" to execute scripts |
-| Graph ||
+| Graph ||
### Rule #44
| Attribute | Value |
@@ -954,7 +977,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Terraform provides a declarative module. |
| Details | "openstack_compute_instance_v2", "openstack_networking_secgroup_rule_v2" and "openstack_networking_secgroup_v2" resources |
-| Graph ||
+| Graph ||
@@ -967,7 +990,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Kubernetes is the underlying technology. |
| Details | Kubernetes manifest generated and applied |
-| Graph ||
+| Graph ||
### Rule #46
| Attribute | Value |
@@ -978,7 +1001,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #47
| Attribute | Value |
@@ -990,7 +1013,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Kubernetes is the underlying technology. |
| Details | Kubernetes manifest generated and applied |
-| Graph ||
+| Graph ||
### Rule #48
| Attribute | Value |
@@ -1002,7 +1025,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Kubernetes is the underlying technology. |
| Details | Kubernetes manifest generated and applied |
-| Graph ||
+| Graph ||
@@ -1015,7 +1038,7 @@ This appendix contains the deployment technology rules.
| Quality | 0 |
| Reason | One-time use docker container ("fake Kubernetes job") with imperative parts, while other technologies provide declarative modules. |
| Details | |
-| Graph ||
+| Graph ||
### Rule #50
| Attribute | Value |
@@ -1027,7 +1050,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Docker is the underlying technology. |
| Details | docker-compose manifest generated and applied |
-| Graph ||
+| Graph ||
### Rule #51
| Attribute | Value |
@@ -1039,7 +1062,7 @@ This appendix contains the deployment technology rules.
| Quality | 1 |
| Reason | Docker is the underlying technology. |
| Details | docker compose manifest generated and applied |
-| Graph ||
+| Graph ||
diff --git a/src/assets/templates/puml/topology/artifact.template.ejs b/src/assets/templates/puml/topology/artifact.template.ejs
index 372f58fe18..9fb63f198a 100644
--- a/src/assets/templates/puml/topology/artifact.template.ejs
+++ b/src/assets/templates/puml/topology/artifact.template.ejs
@@ -2,4 +2,4 @@ file "<%= puml.toText(artifact) %>" as <%= puml.toId(artifact) %>
<% if(puml.hasLink(artifact)) {-%>
url of <%= puml.toId(artifact) %> is [[ <%= puml.getLink(artifact) %> ]]
<% } -%>
-<%= puml.toId(artifact) %> - <%= puml.toId(artifact.container) %>
\ No newline at end of file
+<%= puml.toId(artifact) %> . <%= puml.toId(artifact.container) %>
\ No newline at end of file
diff --git a/src/assets/templates/puml/topology/node.template.ejs b/src/assets/templates/puml/topology/node.template.ejs
index fbc4595e79..3a72ab273d 100644
--- a/src/assets/templates/puml/topology/node.template.ejs
+++ b/src/assets/templates/puml/topology/node.template.ejs
@@ -1,4 +1,8 @@
-rectangle "<%= puml.toText(node) %>" as <%= puml.toId(node) -%><%= puml.isAsterisk(node) ? ' #line.dashed' : '' -%>
+<% if (puml.isAsterisk(node)) { -%>
+rectangle "..." as <%= puml.toId(node) -%> #white;line.dotted -%>
+<% } else { -%>
+rectangle "<%= puml.toText(node) %>" as <%= puml.toId(node) -%>
+<% } -%>
<% if(puml.hasLink(node)) {-%>
url of <%= puml.toId(node) %> is [[ <%= puml.getLink(node) %> ]]
diff --git a/src/assets/templates/puml/topology/template.template.ejs b/src/assets/templates/puml/topology/template.template.ejs
index 6639674459..8eca3fc624 100644
--- a/src/assets/templates/puml/topology/template.template.ejs
+++ b/src/assets/templates/puml/topology/template.template.ejs
@@ -7,6 +7,7 @@ skinparam ArrowThickness 1.5
skinparam file {
BorderColor black
BorderThickness 1.5
+ BackgroundColor white
}
skinparam interface {
diff --git a/tasks/docs/generate/rules/template.ejs b/tasks/docs/generate/rules/template.ejs
index 0353aafe6c..7126d2feed 100644
--- a/tasks/docs/generate/rules/template.ejs
+++ b/tasks/docs/generate/rules/template.ejs
@@ -53,14 +53,15 @@ We assess the deployment quality of the following scenarios.
### Scenario #<%= index + 1 %>
-A node template whose node type is or is derived from the node type <%= link(group.component) -%>
+In this scenario, the node template "component" of node type <%= link(group.component) -%> is deployed.
<% if (group.artifact) { -%>
- and which has an artifact whose artifact type is or is derived from <%= link(group.artifact) -%>,
+This node template is implemented by its deployment artifact "artifact" of artifact type <%= link(group.artifact) -%>.
<% } -%>
<% if (group.hosting.length !== 0) { -%>
- and which <%- group.hosting.map(it => it === "*" ? "is hosted on an arbitrary hosting stack" : `is hosted on a node template whose node type is or is derived from ${link(it)}`).join(", which ") -%>
+The node template <%- group.hosting.map((type, index) => type === "*" ? "is hosted on an arbitrary hosting stack of arbitrary length" : `is hosted on the node template "host ${index + 1}" of node type ${link(type)}`).join(", which ") -%>.
+<% } else { -%>
+The scenario does not require a specific hosting.
<% } -%>
-.
diff --git a/tests/puml/topology/service-template.topology.puml b/tests/puml/topology/service-template.topology.puml
index 9a27c912c5..b2f6db2738 100644
--- a/tests/puml/topology/service-template.topology.puml
+++ b/tests/puml/topology/service-template.topology.puml
@@ -7,6 +7,7 @@ skinparam ArrowThickness 1.5
skinparam file {
BorderColor black
BorderThickness 1.5
+ BackgroundColor white
}
skinparam interface {
@@ -26,7 +27,7 @@ rectangle "application\n(example.nodes.Application)" as node_application
url of node_application is [[ https://vintner.opentosca.org ]]
file "tar_archive\n(tar.archive)" as artifact_tar_archive_0_node_application
url of artifact_tar_archive_0_node_application is [[ https://vintner.opentosca.org ]]
-artifact_tar_archive_0_node_application - node_application
+artifact_tar_archive_0_node_application . node_application
rectangle "runtime\n(example.nodes.Runtime)" as node_runtime
@@ -40,7 +41,7 @@ rectangle "dbms\n(example.nodes.DBMS)" as node_dbms
rectangle "compute\n(example.nodes.Compute)" as node_compute
-rectangle "hosting\n(*)" as node_hosting #line.dashed
+rectangle "..." as node_hosting #white;line.dotted
rectangle "provider\n(some.provider)" as node_provider