diff --git a/docs/docs/assets/documents/dependencies.csv b/docs/docs/assets/documents/dependencies.csv index 191cd6babc..b24da9176e 100644 --- a/docs/docs/assets/documents/dependencies.csv +++ b/docs/docs/assets/documents/dependencies.csv @@ -174,7 +174,7 @@ "on-finished@2.4.1","MIT","https://github.com/jshttp/on-finished" "once@1.4.0","ISC","https://github.com/isaacs/once" "open@7.4.2","MIT","https://github.com/sindresorhus/open" -"opentosca-vintner@0.1.4","Apache-2.0","https://github.com/OpenTOSCA/opentosca-vintner" +"opentosca-vintner@0.1.5","Apache-2.0","https://github.com/OpenTOSCA/opentosca-vintner" "os-tmpdir@1.0.2","MIT","https://github.com/sindresorhus/os-tmpdir" "papaparse@5.4.1","MIT","https://github.com/mholt/PapaParse" "parseurl@1.3.3","MIT","https://github.com/pillarjs/parseurl" diff --git a/docs/docs/dependencies.md b/docs/docs/dependencies.md index c0c469f35e..cd3e56f1b9 100644 --- a/docs/docs/dependencies.md +++ b/docs/docs/dependencies.md @@ -188,7 +188,7 @@ We ensure, that only the licenses 0BSD, Apache-2.0, BSD-2-Clause, BSD-3-Clause, | 173 | on-finished@2.4.1 | MIT | [https://github.com/jshttp/on-finished](https://github.com/jshttp/on-finished){target=_blank} | | 174 | once@1.4.0 | ISC | [https://github.com/isaacs/once](https://github.com/isaacs/once){target=_blank} | | 175 | open@7.4.2 | MIT | [https://github.com/sindresorhus/open](https://github.com/sindresorhus/open){target=_blank} | -| 176 | opentosca-vintner@0.1.4 | Apache-2.0 | [https://github.com/OpenTOSCA/opentosca-vintner](https://github.com/OpenTOSCA/opentosca-vintner){target=_blank} | +| 176 | opentosca-vintner@0.1.5 | Apache-2.0 | [https://github.com/OpenTOSCA/opentosca-vintner](https://github.com/OpenTOSCA/opentosca-vintner){target=_blank} | | 177 | os-tmpdir@1.0.2 | MIT | [https://github.com/sindresorhus/os-tmpdir](https://github.com/sindresorhus/os-tmpdir){target=_blank} | | 178 | papaparse@5.4.1 | MIT | [https://github.com/mholt/PapaParse](https://github.com/mholt/PapaParse){target=_blank} | | 179 | parseurl@1.3.3 | MIT | [https://github.com/pillarjs/parseurl](https://github.com/pillarjs/parseurl){target=_blank} | diff --git a/docs/docs/edmm/index.md b/docs/docs/edmm/index.md index 9d4694a631..48c3a70de9 100644 --- a/docs/docs/edmm/index.md +++ b/docs/docs/edmm/index.md @@ -32,20 +32,20 @@ The specification is under active development and is not backwards compatible wi 1. A `software.application` node template always requires a `source.archive` or `system.package` deployment artifact. 1. A `software.application` node template with an `source.archive` deployment artifact always requires the `start` operation and the `stop` operation. -1. A `software.application` node template with a `source.archive` deployment artifact implicitly requires an `virtual.machine` or `gcp.appengine` node template as host. -1. A `software.application` node template with a `system.package` deployment artifact implicitly requires an `virtual.machine` node template as host. +1. A `software.application` node template with a `source.archive` deployment artifact implicitly requires an `remote.machine` or `gcp.appengine` node template as host. +1. A `software.application` node template with a `system.package` deployment artifact implicitly requires an `remote.machine` node template as host. ## Service Applications -1. A `service.application` node template on a `virtual.machine` host is started as `systemd` service. +1. A `service.application` node template on a `remote.machine` host is started as `systemd` service. 1. A `service.appcliation` always requires a `source.archive` or `container.image` deployment artifact. 1. A `service.application` does not require a `stop` operation. 1. A `service.application` node template with a `container.image` deployment artifact implicitly requires a `docker.engine`, `gcp.cloudrun`, or `kubernetes` node template as host. ## Virtual Machine -1. A `virtual.machine` node template always requires a `machine.image` deployment artifact. +1. A `remote.machine` node template always requires a `machine.image` deployment artifact. ## Management Operations @@ -73,7 +73,7 @@ The specification is under active development and is not backwards compatible wi ## Application Directory -1. A `software.application` node template hosted on a `virtual.machine` node template has its own dedicated application directory. +1. A `software.application` node template hosted on a `remote.machine` node template has its own dedicated application directory. 1. The `.vintner` directory is a reserved directory in the application directory. diff --git a/docs/docs/normative/index.md b/docs/docs/normative/index.md index 04bed6d0ed..dbc61cad83 100644 --- a/docs/docs/normative/index.md +++ b/docs/docs/normative/index.md @@ -135,6 +135,17 @@ machine.image: vintner_normative: 'true' ``` +#### dbms.image + +expects image reference in "file" + +```yaml linenums="1" +dbms.image: + derived_from: artifact + metadata: + vintner_normative: 'true' +``` + ### Interface Types We specify the following normative interface types. @@ -309,50 +320,42 @@ container.runtime: vintner_abstract: 'true' ``` -#### virtual.machine +#### machine ```yaml linenums="1" -virtual.machine: +machine: derived_from: node metadata: vintner_normative: 'true' + vintner_abstract: 'true' properties: machine_name: type: string - ports: - type: list - entry_schema: - type: string - flavor: - type: string - default: m1.medium - network: - type: string - ssh_user: - type: string - ssh_key_name: - type: string - ssh_key_file: - type: string - attributes: - management_address: - type: string - application_address: - type: string +``` + +#### local.machine + + + +```yaml linenums="1" +local.machine: + derived_from: machine + metadata: + vintner_normative: 'true' capabilities: host: type: tosca.capabilities.Compute ``` -#### physical.machine +#### remote.machine ```yaml linenums="1" -physical.machine: - derived_from: node +remote.machine: + derived_from: machine metadata: vintner_normative: 'true' properties: @@ -383,6 +386,24 @@ physical.machine: type: tosca.capabilities.Compute ``` +#### virtual.machine + + + +```yaml linenums="1" +virtual.machine: + derived_from: remote.machine +``` + +#### physical.machine + + + +```yaml linenums="1" +physical.machine: + derived_from: remote.machine +``` + #### database @@ -998,9 +1019,6 @@ mysql.dbms: type: string application_name: type: string - dbms_version: - type: string - default: '5.7' dbms_password: type: string dbms_ssl_mode: diff --git a/docs/docs/normative/tosca-vintner-profile-core.artifact-types.svg b/docs/docs/normative/tosca-vintner-profile-core.artifact-types.svg index b4c21170a7..ffbb8bb78c 100644 --- a/docs/docs/normative/tosca-vintner-profile-core.artifact-types.svg +++ b/docs/docs/normative/tosca-vintner-profile-core.artifact-types.svg @@ -1 +1 @@ -artifactsource.archivesystem.packagecontainer.imagemachine.imagetosca.artifacts.Root \ No newline at end of file +artifactsource.archivesystem.packagecontainer.imagemachine.imagedbms.imagetosca.artifacts.Root \ No newline at end of file diff --git a/docs/docs/normative/tosca-vintner-profile-core.node-types.svg b/docs/docs/normative/tosca-vintner-profile-core.node-types.svg index 131d924b46..b2e876ac94 100644 --- a/docs/docs/normative/tosca-vintner-profile-core.node-types.svg +++ b/docs/docs/normative/tosca-vintner-profile-core.node-types.svg @@ -1 +1 @@ -nodecloud.providercloud.servicesoftware.applicationservice.applicationsoftware.runtimecontainer.runtimevirtual.machinephysical.machinedatabaserelational.databasedbmsrelational.dbmsingresstosca.nodes.Root \ No newline at end of file +nodecloud.providercloud.servicesoftware.applicationservice.applicationsoftware.runtimecontainer.runtimemachinelocal.machineremote.machinevirtual.machinephysical.machinedatabaserelational.databasedbmsrelational.dbmsingresstosca.nodes.Root \ No newline at end of file diff --git a/docs/docs/normative/tosca-vintner-profile-core.yaml b/docs/docs/normative/tosca-vintner-profile-core.yaml index 5ac8a2f35e..11e9cd9022 100644 --- a/docs/docs/normative/tosca-vintner-profile-core.yaml +++ b/docs/docs/normative/tosca-vintner-profile-core.yaml @@ -65,6 +65,11 @@ artifact_types: description: expects image reference in "file" metadata: vintner_normative: 'true' + dbms.image: + derived_from: artifact + description: expects image reference in "file" + metadata: + vintner_normative: 'true' interface_types: interface: derived_from: tosca.interfaces.Root @@ -158,38 +163,23 @@ node_types: metadata: vintner_normative: 'true' vintner_abstract: 'true' - virtual.machine: + machine: derived_from: node metadata: vintner_normative: 'true' + vintner_abstract: 'true' properties: machine_name: type: string - ports: - type: list - entry_schema: - type: string - flavor: - type: string - default: m1.medium - network: - type: string - ssh_user: - type: string - ssh_key_name: - type: string - ssh_key_file: - type: string - attributes: - management_address: - type: string - application_address: - type: string + local.machine: + derived_from: machine + metadata: + vintner_normative: 'true' capabilities: host: type: tosca.capabilities.Compute - physical.machine: - derived_from: node + remote.machine: + derived_from: machine metadata: vintner_normative: 'true' properties: @@ -218,6 +208,10 @@ node_types: capabilities: host: type: tosca.capabilities.Compute + virtual.machine: + derived_from: remote.machine + physical.machine: + derived_from: remote.machine database: derived_from: node metadata: diff --git a/docs/docs/normative/tosca-vintner-profile-extended.yaml b/docs/docs/normative/tosca-vintner-profile-extended.yaml index 476d8e3b2c..8f6bc9c384 100644 --- a/docs/docs/normative/tosca-vintner-profile-extended.yaml +++ b/docs/docs/normative/tosca-vintner-profile-extended.yaml @@ -353,9 +353,6 @@ node_types: type: string application_name: type: string - dbms_version: - type: string - default: '5.7' dbms_password: type: string dbms_ssl_mode: diff --git a/docs/docs/variability4tosca/rules/index.md b/docs/docs/variability4tosca/rules/index.md index 53daecbbc6..b1d1fc8399 100644 --- a/docs/docs/variability4tosca/rules/index.md +++ b/docs/docs/variability4tosca/rules/index.md @@ -65,9 +65,9 @@ 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 [virtual.machine](/normative#virtualmachine){target=_blank}. +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}. -
component(docker.engine)host 1(virtual.machine)host
+
component(docker.engine)host 1(remote.machine)host
!!! success "Ansible (Quality: 1)" @@ -113,9 +113,9 @@ 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 [virtual.machine](/normative#virtualmachine){target=_blank}. +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}. -
component(ingress)host 1(virtual.machine)host
+
component(ingress)host 1(remote.machine)host
!!! success "Ansible (Quality: 1)" @@ -128,9 +128,9 @@ 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 [virtual.machine](/normative#virtualmachine){target=_blank}. +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}. -
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(virtual.machine)hosthosthost
+
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost
!!! success "Ansible (Quality: 1)" @@ -140,7 +140,7 @@ A node template whose node type is or is derived from the node type [mysql.datab Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. !!! failure "Docker Compose (Quality: 0)" - One-time use docker container ("fake Kubernetes job") with imperative parts, while declarative other technologies provide declarative modules. + One-time use docker container ("fake Kubernetes job") with imperative parts, while other technologies provide declarative modules. @@ -151,8 +151,8 @@ A node template whose node type is or is derived from the node type [mysql.datab
component(mysql.database)host 1(mysql.dbms)host 2(gcp.cloudsql)hosthost
-!!! success "Ansible (Quality: 1)" - Primary use case due to the specialization of Ansible. +!!! info "Ansible (Quality: 0.5)" + 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. !!! success "Terraform (Quality: 1)" Terraform provides a declarative module. @@ -179,9 +179,9 @@ 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 [virtual.machine](/normative#virtualmachine){target=_blank}. +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}. -
component(mysql.database)host 1(mysql.dbms)host 2(virtual.machine)hosthost
+
component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost
!!! success "Ansible (Quality: 1)" @@ -194,9 +194,10 @@ 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 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 [virtual.machine](/normative#virtualmachine){target=_blank}. +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}. -
component(mysql.dbms)host 1(docker.engine)host 2(virtual.machine)hosthost
+
component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost
!!! info "Ansible (Quality: 0.5)" @@ -212,9 +213,10 @@ 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 is hosted on a node template whose node type is or is derived from [gcp.cloudsql](/normative#gcpcloudsql){target=_blank}. +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}. -
component(mysql.dbms)host 1(gcp.cloudsql)host
+
component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host
!!! success "Ansible (Quality: 1)" @@ -227,9 +229,10 @@ 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 is hosted on a node template whose node type is or is derived from [kubernetes.cluster](/normative#kubernetescluster){target=_blank}. +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}. -
component(mysql.dbms)host 1(kubernetes.cluster)host
+
component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host
!!! info "Ansible (Quality: 0.5)" @@ -245,9 +248,10 @@ 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 is hosted on a node template whose node type is or is derived from [virtual.machine](/normative#virtualmachine){target=_blank}. +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}. -
component(mysql.dbms)host 1(virtual.machine)host
+
component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host
!!! success "Ansible (Quality: 1)" @@ -261,9 +265,9 @@ 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 [virtual.machine](/normative#virtualmachine){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}. -
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(virtual.machine)hosthost
+
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost
!!! info "Ansible (Quality: 0.5)" @@ -315,9 +319,9 @@ 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 [virtual.machine](/normative#virtualmachine){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}. -
component(service.application)artifact(tar.archive)host 1(*)host 2(virtual.machine)hosthost
+
component(service.application)artifact(tar.archive)host 1(*)host 2(remote.machine)hosthost
!!! success "Ansible (Quality: 1)" @@ -331,9 +335,9 @@ 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 [virtual.machine](/normative#virtualmachine){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}. -
component(service.application)artifact(zip.archive)host 1(*)host 2(virtual.machine)hosthost
+
component(service.application)artifact(zip.archive)host 1(*)host 2(remote.machine)hosthost
!!! success "Ansible (Quality: 1)" @@ -363,9 +367,9 @@ 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 [virtual.machine](/normative#virtualmachine){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}. -
component(software.application)artifact(apt.package)host 1(*)host 2(virtual.machine)hosthost
+
component(software.application)artifact(apt.package)host 1(*)host 2(remote.machine)hosthost
!!! success "Ansible (Quality: 1)" @@ -376,9 +380,9 @@ 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 [virtual.machine](/normative#virtualmachine){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}. -
component(software.application)artifact(tar.archive)host 1(*)host 2(virtual.machine)hosthost
+
component(software.application)artifact(tar.archive)host 1(*)host 2(remote.machine)hosthost
!!! info "Ansible (Quality: 0.5)" @@ -392,9 +396,9 @@ 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 [virtual.machine](/normative#virtualmachine){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}. -
component(software.application)artifact(zip.archive)host 1(*)host 2(virtual.machine)hosthost
+
component(software.application)artifact(zip.archive)host 1(*)host 2(remote.machine)hosthost
!!! info "Ansible (Quality: 0.5)" @@ -424,9 +428,9 @@ 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 [virtual.machine](/normative#virtualmachine){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}. -
component(software.application)artifact(apt.archive)host 1(*)host 2(virtual.machine)hosthost
+
component(software.application)artifact(apt.archive)host 1(*)host 2(remote.machine)hosthost
!!! failure "Terraform (Quality: 0)" @@ -443,13 +447,13 @@ This appendix contains the deployment technology rules. ### Rule #1 | Attribute | Value | | --- | --- | -| Identifier | docker.engine::ansible@virtual.machine | +| Identifier | docker.engine::ansible@remote.machine | | Component | [docker.engine](/normative#dockerengine){target=_blank} | -| Hosting | [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(docker.engine)host 1(virtual.machine)host
| +| Graph |
component(docker.engine)host 1(remote.machine)host
| ### Rule #2 | Attribute | Value | @@ -475,24 +479,24 @@ This appendix contains the deployment technology rules. ### Rule #4 | Attribute | Value | | --- | --- | -| Identifier | ingress::ansible@virtual.machine | +| Identifier | ingress::ansible@remote.machine | | Component | [ingress](/normative#ingress){target=_blank} | -| Hosting | [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(ingress)host 1(virtual.machine)host
| +| Graph |
component(ingress)host 1(remote.machine)host
| ### Rule #5 | Attribute | Value | | --- | --- | -| Identifier | mysql.database::ansible@mysql.dbms->docker.engine->virtual.machine | +| Identifier | mysql.database::ansible@mysql.dbms->docker.engine->remote.machine | | Component | [mysql.database](/normative#mysqldatabase){target=_blank} | -| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 1 | | Reason | Primary use case due to the specialization of Ansible. | | Details | | -| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(virtual.machine)hosthosthost
| +| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost
| ### Rule #6 | Attribute | Value | @@ -500,8 +504,8 @@ This appendix contains the deployment technology rules. | Identifier | mysql.database::ansible@mysql.dbms->gcp.cloudsql | | Component | [mysql.database](/normative#mysqldatabase){target=_blank} | | Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [gcp.cloudsql](/normative#gcpcloudsql){target=_blank} | -| Quality | 1 | -| Reason | Primary use case due to the specialization of Ansible. | +| 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 |
component(mysql.database)host 1(mysql.dbms)host 2(gcp.cloudsql)hosthost
| @@ -519,69 +523,73 @@ This appendix contains the deployment technology rules. ### Rule #8 | Attribute | Value | | --- | --- | -| Identifier | mysql.database::ansible@mysql.dbms->virtual.machine | +| Identifier | mysql.database::ansible@mysql.dbms->remote.machine | | Component | [mysql.database](/normative#mysqldatabase){target=_blank} | -| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 1 | | Reason | Primary use case due to the specialization of Ansible. | | Details | | -| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(virtual.machine)hosthost
| +| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost
| ### Rule #9 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::ansible@docker.engine->virtual.machine | +| Identifier | mysql.dbms#dbms.image::ansible@docker.engine->remote.machine | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | -| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | +| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 0.5 | | Reason | Docker Compose is more specialized | | Details | "community.docker.docker_container" task | -| Graph |
component(mysql.dbms)host 1(docker.engine)host 2(virtual.machine)hosthost
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost
| ### Rule #10 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::ansible@gcp.cloudsql | +| Identifier | mysql.dbms#dbms.image::ansible@gcp.cloudsql | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | | Hosting | [gcp.cloudsql](/normative#gcpcloudsql){target=_blank} | | 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 |
component(mysql.dbms)host 1(gcp.cloudsql)host
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host
| ### Rule #11 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::ansible@kubernetes.cluster | +| Identifier | mysql.dbms#dbms.image::ansible@kubernetes.cluster | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | | Hosting | [kubernetes.cluster](/normative#kubernetescluster){target=_blank} | | Quality | 0.5 | | Reason | Kubernetes is more specialized. | | Details | "kubernetes.core.k8s" tasks | -| Graph |
component(mysql.dbms)host 1(kubernetes.cluster)host
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host
| ### Rule #12 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::ansible@virtual.machine | +| Identifier | mysql.dbms#dbms.image::ansible@remote.machine | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | -| Hosting | [virtual.machine](/normative#virtualmachine){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | +| Hosting | [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(mysql.dbms)host 1(virtual.machine)host
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host
| ### Rule #13 | Attribute | Value | | --- | --- | -| Identifier | service.application#docker.image::ansible@docker.engine->virtual.machine | +| Identifier | service.application#docker.image::ansible@docker.engine->remote.machine | | Component | [service.application](/normative#serviceapplication){target=_blank} | | Artifact | [docker.image](/normative#dockerimage){target=_blank} | -| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 0.5 | | Reason | Docker Compose is more specialized. | | Details | "community.docker.docker_container" task | -| Graph |
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(virtual.machine)hosthost
| +| Graph |
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost
| ### Rule #14 | Attribute | Value | @@ -610,26 +618,26 @@ This appendix contains the deployment technology rules. ### Rule #16 | Attribute | Value | | --- | --- | -| Identifier | service.application#tar.archive::ansible@*->virtual.machine | +| Identifier | service.application#tar.archive::ansible@*->remote.machine | | Component | [service.application](/normative#serviceapplication){target=_blank} | | Artifact | [tar.archive](/normative#tararchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(service.application)artifact(tar.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(service.application)artifact(tar.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #17 | Attribute | Value | | --- | --- | -| Identifier | service.application#zip.archive::ansible@*->virtual.machine | +| Identifier | service.application#zip.archive::ansible@*->remote.machine | | Component | [service.application](/normative#serviceapplication){target=_blank} | | Artifact | [zip.archive](/normative#ziparchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(service.application)artifact(zip.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(service.application)artifact(zip.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #18 | Attribute | Value | @@ -646,38 +654,38 @@ This appendix contains the deployment technology rules. ### Rule #19 | Attribute | Value | | --- | --- | -| Identifier | software.application#apt.package::ansible@*->virtual.machine | +| Identifier | software.application#apt.package::ansible@*->remote.machine | | Component | [software.application](/normative#softwareapplication){target=_blank} | | Artifact | [apt.package](/normative#aptpackage){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(software.application)artifact(apt.package)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(software.application)artifact(apt.package)host 1(*)host 2(remote.machine)hosthost
| ### Rule #20 | Attribute | Value | | --- | --- | -| Identifier | software.application#tar.archive::ansible@*->virtual.machine | +| Identifier | software.application#tar.archive::ansible@*->remote.machine | | Component | [software.application](/normative#softwareapplication){target=_blank} | | Artifact | [tar.archive](/normative#tararchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(software.application)artifact(tar.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(software.application)artifact(tar.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #21 | Attribute | Value | | --- | --- | -| Identifier | software.application#zip.archive::ansible@*->virtual.machine | +| Identifier | software.application#zip.archive::ansible@*->remote.machine | | Component | [software.application](/normative#softwareapplication){target=_blank} | | Artifact | [zip.archive](/normative#ziparchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(software.application)artifact(zip.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(software.application)artifact(zip.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #22 | Attribute | Value | @@ -696,13 +704,13 @@ This appendix contains the deployment technology rules. ### Rule #23 | Attribute | Value | | --- | --- | -| Identifier | docker.engine::terraform@virtual.machine | +| Identifier | docker.engine::terraform@remote.machine | | Component | [docker.engine](/normative#dockerengine){target=_blank} | -| Hosting | [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 0 | | Reason | Ansible is more specialized. Also using provisioners is a "last resort". | | Details | "remote-exec" provider | -| Graph |
component(docker.engine)host 1(virtual.machine)host
| +| Graph |
component(docker.engine)host 1(remote.machine)host
| ### Rule #24 | Attribute | Value | @@ -728,24 +736,24 @@ This appendix contains the deployment technology rules. ### Rule #26 | Attribute | Value | | --- | --- | -| Identifier | ingress::terraform@virtual.machine | +| Identifier | ingress::terraform@remote.machine | | Component | [ingress](/normative#ingress){target=_blank} | -| Hosting | [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(ingress)host 1(virtual.machine)host
| +| Graph |
component(ingress)host 1(remote.machine)host
| ### Rule #27 | Attribute | Value | | --- | --- | -| Identifier | mysql.database::terraform@mysql.dbms->docker.engine->virtual.machine | +| Identifier | mysql.database::terraform@mysql.dbms->docker.engine->remote.machine | | Component | [mysql.database](/normative#mysqldatabase){target=_blank} | -| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 0.5 | | Reason | Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. | | Details | | -| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(virtual.machine)hosthosthost
| +| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost
| ### Rule #28 | Attribute | Value | @@ -772,69 +780,73 @@ This appendix contains the deployment technology rules. ### Rule #30 | Attribute | Value | | --- | --- | -| Identifier | mysql.database::terraform@mysql.dbms->virtual.machine | +| Identifier | mysql.database::terraform@mysql.dbms->remote.machine | | Component | [mysql.database](/normative#mysqldatabase){target=_blank} | -| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 0.5 | | Reason | Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. | | Details | | -| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(virtual.machine)hosthost
| +| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(remote.machine)hosthost
| ### Rule #31 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::terraform@docker.engine->virtual.machine | +| Identifier | mysql.dbms#dbms.image::terraform@docker.engine->remote.machine | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | -| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | +| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 0.5 | | Reason | Docker Compose is more specialized. | | Details | "docker_container" and "docker_image" resources | -| Graph |
component(mysql.dbms)host 1(docker.engine)host 2(virtual.machine)hosthost
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost
| ### Rule #32 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::terraform@gcp.cloudsql | +| Identifier | mysql.dbms#dbms.image::terraform@gcp.cloudsql | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | | Hosting | [gcp.cloudsql](/normative#gcpcloudsql){target=_blank} | | Quality | 1 | | Reason | Terraform provides a declarative module. | | Details | "google_sql_database_instance" and "google_sql_user" resources | -| Graph |
component(mysql.dbms)host 1(gcp.cloudsql)host
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(gcp.cloudsql)host
| ### Rule #33 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::terraform@kubernetes.cluster | +| Identifier | mysql.dbms#dbms.image::terraform@kubernetes.cluster | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | | Hosting | [kubernetes.cluster](/normative#kubernetescluster){target=_blank} | | Quality | 0.5 | | Reason | Kubernetes is more specialized. | | Details | "kubernetes_deployment_v1" and "kubernetes_service_v1" resources | -| Graph |
component(mysql.dbms)host 1(kubernetes.cluster)host
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host
| ### Rule #34 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::terraform@virtual.machine | +| Identifier | mysql.dbms#dbms.image::terraform@remote.machine | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | -| Hosting | [virtual.machine](/normative#virtualmachine){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | +| Hosting | [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(mysql.dbms)host 1(virtual.machine)host
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(remote.machine)host
| ### Rule #35 | Attribute | Value | | --- | --- | -| Identifier | service.application#docker.image::terraform@docker.engine->virtual.machine | +| Identifier | service.application#docker.image::terraform@docker.engine->remote.machine | | Component | [service.application](/normative#serviceapplication){target=_blank} | | Artifact | [docker.image](/normative#dockerimage){target=_blank} | -| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 0.5 | | Reason | Docker Compose is more specialized. | | Details | "docker_container" and "docker_image" resources | -| Graph |
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(virtual.machine)hosthost
| +| Graph |
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost
| ### Rule #36 | Attribute | Value | @@ -863,26 +875,26 @@ This appendix contains the deployment technology rules. ### Rule #38 | Attribute | Value | | --- | --- | -| Identifier | service.application#tar.archive::terraform@*->virtual.machine | +| Identifier | service.application#tar.archive::terraform@*->remote.machine | | Component | [service.application](/normative#serviceapplication){target=_blank} | | Artifact | [tar.archive](/normative#tararchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(service.application)artifact(tar.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(service.application)artifact(tar.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #39 | Attribute | Value | | --- | --- | -| Identifier | service.application#zip.archive::terraform@*->virtual.machine | +| Identifier | service.application#zip.archive::terraform@*->remote.machine | | Component | [service.application](/normative#serviceapplication){target=_blank} | | Artifact | [zip.archive](/normative#ziparchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(service.application)artifact(zip.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(service.application)artifact(zip.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #40 | Attribute | Value | @@ -899,38 +911,38 @@ This appendix contains the deployment technology rules. ### Rule #41 | Attribute | Value | | --- | --- | -| Identifier | software.application#apt.archive::terraform@*->virtual.machine | +| Identifier | software.application#apt.archive::terraform@*->remote.machine | | Component | [software.application](/normative#softwareapplication){target=_blank} | | Artifact | [apt.archive](/normative#aptarchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(software.application)artifact(apt.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(software.application)artifact(apt.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #42 | Attribute | Value | | --- | --- | -| Identifier | software.application#tar.archive::terraform@*->virtual.machine | +| Identifier | software.application#tar.archive::terraform@*->remote.machine | | Component | [software.application](/normative#softwareapplication){target=_blank} | | Artifact | [tar.archive](/normative#tararchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(software.application)artifact(tar.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(software.application)artifact(tar.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #43 | Attribute | Value | | --- | --- | -| Identifier | software.application#zip.archive::terraform@*->virtual.machine | +| Identifier | software.application#zip.archive::terraform@*->remote.machine | | Component | [software.application](/normative#softwareapplication){target=_blank} | | Artifact | [zip.archive](/normative#ziparchive){target=_blank} | -| Hosting | * -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | * -> [remote.machine](/normative#remotemachine){target=_blank} | | 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 |
component(software.application)artifact(zip.archive)host 1(*)host 2(virtual.machine)hosthost
| +| Graph |
component(software.application)artifact(zip.archive)host 1(*)host 2(remote.machine)hosthost
| ### Rule #44 | Attribute | Value | @@ -971,13 +983,14 @@ This appendix contains the deployment technology rules. ### Rule #47 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::kubernetes@kubernetes.cluster | +| Identifier | mysql.dbms#dbms.image::kubernetes@kubernetes.cluster | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | | Hosting | [kubernetes.cluster](/normative#kubernetescluster){target=_blank} | | Quality | 1 | | Reason | Kubernetes is the underlying technology. | | Details | Kubernetes manifest generated and applied | -| Graph |
component(mysql.dbms)host 1(kubernetes.cluster)host
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(kubernetes.cluster)host
| ### Rule #48 | Attribute | Value | @@ -996,36 +1009,37 @@ This appendix contains the deployment technology rules. ### Rule #49 | Attribute | Value | | --- | --- | -| Identifier | mysql.database::compose@mysql.dbms->docker.engine->virtual.machine | +| Identifier | mysql.database::compose@mysql.dbms->docker.engine->remote.machine | | Component | [mysql.database](/normative#mysqldatabase){target=_blank} | -| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [mysql.dbms](/normative#mysqldbms){target=_blank} -> [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 0 | -| Reason | One-time use docker container ("fake Kubernetes job") with imperative parts, while declarative other technologies provide declarative modules. | +| Reason | One-time use docker container ("fake Kubernetes job") with imperative parts, while other technologies provide declarative modules. | | Details | | -| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(virtual.machine)hosthosthost
| +| Graph |
component(mysql.database)host 1(mysql.dbms)host 2(docker.engine)host 3(remote.machine)hosthosthost
| ### Rule #50 | Attribute | Value | | --- | --- | -| Identifier | mysql.dbms::compose@docker.engine->virtual.machine | +| Identifier | mysql.dbms#dbms.image::compose@docker.engine->remote.machine | | Component | [mysql.dbms](/normative#mysqldbms){target=_blank} | -| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Artifact | [dbms.image](/normative#dbmsimage){target=_blank} | +| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 1 | | Reason | Docker is the underlying technology. | | Details | docker-compose manifest generated and applied | -| Graph |
component(mysql.dbms)host 1(docker.engine)host 2(virtual.machine)hosthost
| +| Graph |
component(mysql.dbms)artifact(dbms.image)host 1(docker.engine)host 2(remote.machine)hosthost
| ### Rule #51 | Attribute | Value | | --- | --- | -| Identifier | service.application#docker.image::compose@docker.engine->virtual.machine | +| Identifier | service.application#docker.image::compose@docker.engine->remote.machine | | Component | [service.application](/normative#serviceapplication){target=_blank} | | Artifact | [docker.image](/normative#dockerimage){target=_blank} | -| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [virtual.machine](/normative#virtualmachine){target=_blank} | +| Hosting | [docker.engine](/normative#dockerengine){target=_blank} -> [remote.machine](/normative#remotemachine){target=_blank} | | Quality | 1 | | Reason | Docker is the underlying technology. | | Details | docker compose manifest generated and applied | -| Graph |
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(virtual.machine)hosthost
| +| Graph |
component(service.application)artifact(docker.image)host 1(docker.engine)host 2(remote.machine)hosthost
| diff --git a/docs/docs/variability4tosca/rules/technology-rules.yaml b/docs/docs/variability4tosca/rules/technology-rules.yaml index 063e1081f6..41b401cf87 100644 --- a/docs/docs/variability4tosca/rules/technology-rules.yaml +++ b/docs/docs/variability4tosca/rules/technology-rules.yaml @@ -1,7 +1,7 @@ ansible: - component: docker.engine hosting: - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. details: '"ansible.builtin.shell", "ansible.builtin.group", and "ansible.builtin.user" tasks' @@ -18,7 +18,7 @@ ansible: details: '"kubernetes.core.k8s" task' - component: ingress hosting: - - virtual.machine + - remote.machine weight: 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' @@ -26,15 +26,15 @@ ansible: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. - component: mysql.database hosting: - mysql.dbms - gcp.cloudsql - weight: 1 - reason: Primary use case due to the specialization of Ansible. + weight: 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. - component: mysql.database hosting: - mysql.dbms @@ -44,31 +44,35 @@ ansible: - component: mysql.database hosting: - mysql.dbms - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized details: '"community.docker.docker_container" task' - component: mysql.dbms + artifact: dbms.image hosting: - gcp.cloudsql weight: 1 reason: Primary use case due to the specialization of Ansible. details: '"google.cloud.gcp_sql_instance" and "google.cloud.gcp_sql_user" tasks' - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 0.5 reason: Kubernetes is more specialized. details: '"kubernetes.core.k8s" tasks' - component: mysql.dbms + artifact: dbms.image hosting: - - virtual.machine + - remote.machine weight: 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' @@ -76,7 +80,7 @@ ansible: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"community.docker.docker_container" task' @@ -98,7 +102,7 @@ ansible: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -106,7 +110,7 @@ ansible: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -121,7 +125,7 @@ ansible: artifact: apt.package hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -129,7 +133,7 @@ ansible: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -137,7 +141,7 @@ ansible: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -151,7 +155,7 @@ ansible: terraform: - component: docker.engine hosting: - - virtual.machine + - remote.machine weight: 0 reason: Ansible is more specialized. Also using provisioners is a "last resort". details: '"remote-exec" provider' @@ -168,7 +172,7 @@ terraform: details: '"kubernetes_service_v1" resource' - component: ingress hosting: - - virtual.machine + - remote.machine weight: 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' @@ -176,7 +180,7 @@ terraform: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. - component: mysql.database @@ -194,31 +198,35 @@ terraform: - component: mysql.database hosting: - mysql.dbms - - virtual.machine + - remote.machine weight: 0.5 reason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"docker_container" and "docker_image" resources' - component: mysql.dbms + artifact: dbms.image hosting: - gcp.cloudsql weight: 1 reason: Terraform provides a declarative module. details: '"google_sql_database_instance" and "google_sql_user" resources' - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 0.5 reason: Kubernetes is more specialized. details: '"kubernetes_deployment_v1" and "kubernetes_service_v1" resources' - component: mysql.dbms + artifact: dbms.image hosting: - - virtual.machine + - remote.machine weight: 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' @@ -226,7 +234,7 @@ terraform: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"docker_container" and "docker_image" resources' @@ -248,7 +256,7 @@ terraform: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -256,7 +264,7 @@ terraform: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -271,7 +279,7 @@ terraform: artifact: apt.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -279,7 +287,7 @@ terraform: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -287,7 +295,7 @@ terraform: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -312,6 +320,7 @@ kubernetes: weight: 0 reason: Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules. - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 1 @@ -329,13 +338,14 @@ compose: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 0 - reason: One-time use docker container ("fake Kubernetes job") with imperative parts, while declarative other technologies provide declarative modules. + reason: One-time use docker container ("fake Kubernetes job") with imperative parts, while other technologies provide declarative modules. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Docker is the underlying technology. details: docker-compose manifest generated and applied @@ -343,7 +353,7 @@ compose: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Docker is the underlying technology. details: docker compose manifest generated and applied diff --git a/examples/unfurl-technology---boutique---baseline-maintenance/tests/os-large/test.yaml b/examples/unfurl-technology---boutique---baseline-maintenance/tests/os-large/test.yaml index 3444d18b3e..c71224cf8e 100644 --- a/examples/unfurl-technology---boutique---baseline-maintenance/tests/os-large/test.yaml +++ b/examples/unfurl-technology---boutique---baseline-maintenance/tests/os-large/test.yaml @@ -76,7 +76,7 @@ merge: node_templates: analytics_component: - type: analytics.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: analytics.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: analytics application_port: 7001 diff --git a/examples/unfurl-technology---boutique---baseline-maintenance/tests/os-medium/test.yaml b/examples/unfurl-technology---boutique---baseline-maintenance/tests/os-medium/test.yaml index 24b713a13e..b07f15ce0e 100644 --- a/examples/unfurl-technology---boutique---baseline-maintenance/tests/os-medium/test.yaml +++ b/examples/unfurl-technology---boutique---baseline-maintenance/tests/os-medium/test.yaml @@ -76,7 +76,7 @@ merge: node_templates: analytics_component: - type: analytics.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: analytics.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: analytics application_port: 7001 diff --git a/examples/unfurl-technology---boutique---baseline-maintenance/variable-service-template.yaml b/examples/unfurl-technology---boutique---baseline-maintenance/variable-service-template.yaml index 3a6cddd046..f853ddd87d 100644 --- a/examples/unfurl-technology---boutique---baseline-maintenance/variable-service-template.yaml +++ b/examples/unfurl-technology---boutique---baseline-maintenance/variable-service-template.yaml @@ -684,7 +684,6 @@ topology_template: - mysql_password: {eval: '.::.requirements::[.name=database]::.target::database_password'} - mysql_table: 'cart' - mysql_ssl_mode: {eval: '.::.requirements::[.name=database]::.target::.requirements::[.name=host]::.target::dbms_ssl_mode'} - requirements: - database: cart_database_terraform - host: gcp_cloudrun @@ -726,6 +725,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: docker_engine + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 cart_dbms_kubernetes: type: mysql.dbms @@ -735,6 +738,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: kubernetes_cluster + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 cart_dbms_terraform: type: mysql.dbms @@ -744,6 +751,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---boutique---baseline-original/variable-service-template.yaml b/examples/unfurl-technology---boutique---baseline-original/variable-service-template.yaml index 3e4a25cc84..a2e48b7137 100644 --- a/examples/unfurl-technology---boutique---baseline-original/variable-service-template.yaml +++ b/examples/unfurl-technology---boutique---baseline-original/variable-service-template.yaml @@ -510,6 +510,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: docker_engine + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 cart_dbms_terraform: type: mysql.dbms @@ -519,6 +523,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/falco.agent.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/falco.agent.yaml index ac848e1319..da3b5990e9 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/falco.agent.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/falco.agent.yaml @@ -27,7 +27,7 @@ node_types: # ################################################################ - falco.agent~software.application#apt.package::ansible@*->virtual.machine: + falco.agent~software.application#apt.package::ansible@*->remote.machine: derived_from: falco.agent metadata: vintner_generated: 'true' @@ -249,7 +249,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - falco.agent~software.application#tar.archive::ansible@*->virtual.machine: + falco.agent~software.application#tar.archive::ansible@*->remote.machine: derived_from: falco.agent metadata: vintner_generated: 'true' @@ -466,7 +466,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - falco.agent~software.application#zip.archive::ansible@*->virtual.machine: + falco.agent~software.application#zip.archive::ansible@*->remote.machine: derived_from: falco.agent metadata: vintner_generated: 'true' @@ -686,7 +686,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - falco.agent~software.application#apt.archive::terraform@*->virtual.machine: + falco.agent~software.application#apt.archive::terraform@*->remote.machine: derived_from: falco.agent metadata: vintner_generated: 'true' @@ -883,7 +883,7 @@ node_types: - sudo bash /tmp/stop-falco.agent.sh - sudo bash /tmp/delete-falco.agent.sh when: destroy - falco.agent~software.application#tar.archive::terraform@*->virtual.machine: + falco.agent~software.application#tar.archive::terraform@*->remote.machine: derived_from: falco.agent metadata: vintner_generated: 'true' @@ -1066,7 +1066,7 @@ node_types: - sudo bash /tmp/stop-falco.agent.sh - sudo bash /tmp/delete-falco.agent.sh when: destroy - falco.agent~software.application#zip.archive::terraform@*->virtual.machine: + falco.agent~software.application#zip.archive::terraform@*->remote.machine: derived_from: falco.agent metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/node.agent.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/node.agent.yaml index d959d632d5..f466b8e592 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/node.agent.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/node.agent.yaml @@ -25,7 +25,7 @@ node_types: # ################################################################ - node.agent~service.application#docker.image::ansible@docker.engine->virtual.machine: + node.agent~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -268,7 +268,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - node.agent~service.application#tar.archive::ansible@*->virtual.machine: + node.agent~service.application#tar.archive::ansible@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -513,7 +513,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - node.agent~service.application#zip.archive::ansible@*->virtual.machine: + node.agent~service.application#zip.archive::ansible@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -855,7 +855,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - node.agent~software.application#apt.package::ansible@*->virtual.machine: + node.agent~software.application#apt.package::ansible@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -1077,7 +1077,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - node.agent~software.application#tar.archive::ansible@*->virtual.machine: + node.agent~software.application#tar.archive::ansible@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -1294,7 +1294,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - node.agent~software.application#zip.archive::ansible@*->virtual.machine: + node.agent~software.application#zip.archive::ansible@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -1514,7 +1514,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - node.agent~service.application#docker.image::terraform@docker.engine->virtual.machine: + node.agent~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -1728,7 +1728,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - node.agent~service.application#tar.archive::terraform@*->virtual.machine: + node.agent~service.application#tar.archive::terraform@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -1914,7 +1914,7 @@ node_types: - sudo bash /tmp/stop-node.agent.sh - sudo bash /tmp/delete-node.agent.sh when: destroy - node.agent~service.application#zip.archive::terraform@*->virtual.machine: + node.agent~service.application#zip.archive::terraform@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -2184,7 +2184,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - node.agent~software.application#apt.archive::terraform@*->virtual.machine: + node.agent~software.application#apt.archive::terraform@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -2381,7 +2381,7 @@ node_types: - sudo bash /tmp/stop-node.agent.sh - sudo bash /tmp/delete-node.agent.sh when: destroy - node.agent~software.application#tar.archive::terraform@*->virtual.machine: + node.agent~software.application#tar.archive::terraform@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -2564,7 +2564,7 @@ node_types: - sudo bash /tmp/stop-node.agent.sh - sudo bash /tmp/delete-node.agent.sh when: destroy - node.agent~software.application#zip.archive::terraform@*->virtual.machine: + node.agent~software.application#zip.archive::terraform@*->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' @@ -2823,7 +2823,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - node.agent~service.application#docker.image::compose@docker.engine->virtual.machine: + node.agent~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: node.agent metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/promtail.agent.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/promtail.agent.yaml index 54d3a56d89..29f3ed5c6c 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/promtail.agent.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/agents/promtail.agent.yaml @@ -25,7 +25,7 @@ node_types: # ################################################################ - promtail.agent~software.application#apt.package::ansible@*->virtual.machine: + promtail.agent~software.application#apt.package::ansible@*->remote.machine: derived_from: promtail.agent metadata: vintner_generated: 'true' @@ -247,7 +247,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - promtail.agent~software.application#tar.archive::ansible@*->virtual.machine: + promtail.agent~software.application#tar.archive::ansible@*->remote.machine: derived_from: promtail.agent metadata: vintner_generated: 'true' @@ -464,7 +464,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - promtail.agent~software.application#zip.archive::ansible@*->virtual.machine: + promtail.agent~software.application#zip.archive::ansible@*->remote.machine: derived_from: promtail.agent metadata: vintner_generated: 'true' @@ -684,7 +684,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - promtail.agent~software.application#apt.archive::terraform@*->virtual.machine: + promtail.agent~software.application#apt.archive::terraform@*->remote.machine: derived_from: promtail.agent metadata: vintner_generated: 'true' @@ -881,7 +881,7 @@ node_types: - sudo bash /tmp/stop-promtail.agent.sh - sudo bash /tmp/delete-promtail.agent.sh when: destroy - promtail.agent~software.application#tar.archive::terraform@*->virtual.machine: + promtail.agent~software.application#tar.archive::terraform@*->remote.machine: derived_from: promtail.agent metadata: vintner_generated: 'true' @@ -1064,7 +1064,7 @@ node_types: - sudo bash /tmp/stop-promtail.agent.sh - sudo bash /tmp/delete-promtail.agent.sh when: destroy - promtail.agent~software.application#zip.archive::terraform@*->virtual.machine: + promtail.agent~software.application#zip.archive::terraform@*->remote.machine: derived_from: promtail.agent metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/advertisement.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/advertisement.component.yaml index 4d9c9682f7..17c5f4a1e2 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/advertisement.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/advertisement.component.yaml @@ -62,7 +62,7 @@ node_types: # ################################################################ - advertisement.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + advertisement.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -316,7 +316,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - advertisement.component~service.application#tar.archive::ansible@*->virtual.machine: + advertisement.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -563,7 +563,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - advertisement.component~service.application#zip.archive::ansible@*->virtual.machine: + advertisement.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -911,7 +911,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - advertisement.component~software.application#apt.package::ansible@*->virtual.machine: + advertisement.component~software.application#apt.package::ansible@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -1133,7 +1133,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - advertisement.component~software.application#tar.archive::ansible@*->virtual.machine: + advertisement.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -1352,7 +1352,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - advertisement.component~software.application#zip.archive::ansible@*->virtual.machine: + advertisement.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -1574,7 +1574,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - advertisement.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + advertisement.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -1799,7 +1799,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - advertisement.component~service.application#tar.archive::terraform@*->virtual.machine: + advertisement.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -1986,7 +1986,7 @@ node_types: - sudo bash /tmp/stop-advertisement.component.sh - sudo bash /tmp/delete-advertisement.component.sh when: destroy - advertisement.component~service.application#zip.archive::terraform@*->virtual.machine: + advertisement.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -2261,7 +2261,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - advertisement.component~software.application#apt.archive::terraform@*->virtual.machine: + advertisement.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -2459,7 +2459,7 @@ node_types: - sudo bash /tmp/stop-advertisement.component.sh - sudo bash /tmp/delete-advertisement.component.sh when: destroy - advertisement.component~software.application#tar.archive::terraform@*->virtual.machine: + advertisement.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -2643,7 +2643,7 @@ node_types: - sudo bash /tmp/stop-advertisement.component.sh - sudo bash /tmp/delete-advertisement.component.sh when: destroy - advertisement.component~software.application#zip.archive::terraform@*->virtual.machine: + advertisement.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' @@ -2907,7 +2907,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - advertisement.component~service.application#docker.image::compose@docker.engine->virtual.machine: + advertisement.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: advertisement.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/analytics.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/analytics.component.yaml index 8f741f7193..5df71056bd 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/analytics.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/analytics.component.yaml @@ -69,7 +69,7 @@ node_types: # ################################################################ - analytics.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + analytics.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -333,7 +333,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - analytics.component~service.application#tar.archive::ansible@*->virtual.machine: + analytics.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -582,7 +582,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - analytics.component~service.application#zip.archive::ansible@*->virtual.machine: + analytics.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -934,7 +934,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - analytics.component~software.application#apt.package::ansible@*->virtual.machine: + analytics.component~software.application#apt.package::ansible@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -1156,7 +1156,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - analytics.component~software.application#tar.archive::ansible@*->virtual.machine: + analytics.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -1377,7 +1377,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - analytics.component~software.application#zip.archive::ansible@*->virtual.machine: + analytics.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -1601,7 +1601,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - analytics.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + analytics.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -1836,7 +1836,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - analytics.component~service.application#tar.archive::terraform@*->virtual.machine: + analytics.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -2025,7 +2025,7 @@ node_types: - sudo bash /tmp/stop-analytics.component.sh - sudo bash /tmp/delete-analytics.component.sh when: destroy - analytics.component~service.application#zip.archive::terraform@*->virtual.machine: + analytics.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -2304,7 +2304,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - analytics.component~software.application#apt.archive::terraform@*->virtual.machine: + analytics.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -2504,7 +2504,7 @@ node_types: - sudo bash /tmp/stop-analytics.component.sh - sudo bash /tmp/delete-analytics.component.sh when: destroy - analytics.component~software.application#tar.archive::terraform@*->virtual.machine: + analytics.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -2690,7 +2690,7 @@ node_types: - sudo bash /tmp/stop-analytics.component.sh - sudo bash /tmp/delete-analytics.component.sh when: destroy - analytics.component~software.application#zip.archive::terraform@*->virtual.machine: + analytics.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' @@ -2960,7 +2960,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - analytics.component~service.application#docker.image::compose@docker.engine->virtual.machine: + analytics.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: analytics.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/cart.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/cart.component.yaml index 51f2278599..c0464155f4 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/cart.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/cart.component.yaml @@ -90,7 +90,7 @@ node_types: # ################################################################ - cart.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + cart.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -379,7 +379,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - cart.component~service.application#tar.archive::ansible@*->virtual.machine: + cart.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -633,7 +633,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - cart.component~service.application#zip.archive::ansible@*->virtual.machine: + cart.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -995,7 +995,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - cart.component~software.application#apt.package::ansible@*->virtual.machine: + cart.component~software.application#apt.package::ansible@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -1217,7 +1217,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - cart.component~software.application#tar.archive::ansible@*->virtual.machine: + cart.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -1443,7 +1443,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - cart.component~software.application#zip.archive::ansible@*->virtual.machine: + cart.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -1672,7 +1672,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - cart.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + cart.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -1932,7 +1932,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - cart.component~service.application#tar.archive::terraform@*->virtual.machine: + cart.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -2126,7 +2126,7 @@ node_types: - sudo bash /tmp/stop-cart.component.sh - sudo bash /tmp/delete-cart.component.sh when: destroy - cart.component~service.application#zip.archive::terraform@*->virtual.machine: + cart.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -2415,7 +2415,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - cart.component~software.application#apt.archive::terraform@*->virtual.machine: + cart.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -2620,7 +2620,7 @@ node_types: - sudo bash /tmp/stop-cart.component.sh - sudo bash /tmp/delete-cart.component.sh when: destroy - cart.component~software.application#tar.archive::terraform@*->virtual.machine: + cart.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -2811,7 +2811,7 @@ node_types: - sudo bash /tmp/stop-cart.component.sh - sudo bash /tmp/delete-cart.component.sh when: destroy - cart.component~software.application#zip.archive::terraform@*->virtual.machine: + cart.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' @@ -3096,7 +3096,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - cart.component~service.application#docker.image::compose@docker.engine->virtual.machine: + cart.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: cart.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/checkout.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/checkout.component.yaml index 49d0bb1e84..aea1fa38ed 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/checkout.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/checkout.component.yaml @@ -123,7 +123,7 @@ node_types: # ################################################################ - checkout.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + checkout.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -417,7 +417,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - checkout.component~service.application#tar.archive::ansible@*->virtual.machine: + checkout.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -672,7 +672,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - checkout.component~service.application#zip.archive::ansible@*->virtual.machine: + checkout.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -1036,7 +1036,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - checkout.component~software.application#apt.package::ansible@*->virtual.machine: + checkout.component~software.application#apt.package::ansible@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -1258,7 +1258,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - checkout.component~software.application#tar.archive::ansible@*->virtual.machine: + checkout.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -1485,7 +1485,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - checkout.component~software.application#zip.archive::ansible@*->virtual.machine: + checkout.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -1715,7 +1715,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - checkout.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + checkout.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -1980,7 +1980,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - checkout.component~service.application#tar.archive::terraform@*->virtual.machine: + checkout.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -2175,7 +2175,7 @@ node_types: - sudo bash /tmp/stop-checkout.component.sh - sudo bash /tmp/delete-checkout.component.sh when: destroy - checkout.component~service.application#zip.archive::terraform@*->virtual.machine: + checkout.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -2466,7 +2466,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - checkout.component~software.application#apt.archive::terraform@*->virtual.machine: + checkout.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -2672,7 +2672,7 @@ node_types: - sudo bash /tmp/stop-checkout.component.sh - sudo bash /tmp/delete-checkout.component.sh when: destroy - checkout.component~software.application#tar.archive::terraform@*->virtual.machine: + checkout.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -2864,7 +2864,7 @@ node_types: - sudo bash /tmp/stop-checkout.component.sh - sudo bash /tmp/delete-checkout.component.sh when: destroy - checkout.component~software.application#zip.archive::terraform@*->virtual.machine: + checkout.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' @@ -3152,7 +3152,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - checkout.component~service.application#docker.image::compose@docker.engine->virtual.machine: + checkout.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: checkout.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/currency.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/currency.component.yaml index 8561c6ca89..012f22f4d7 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/currency.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/currency.component.yaml @@ -60,7 +60,7 @@ node_types: # ################################################################ - currency.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + currency.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -314,7 +314,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - currency.component~service.application#tar.archive::ansible@*->virtual.machine: + currency.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -561,7 +561,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - currency.component~service.application#zip.archive::ansible@*->virtual.machine: + currency.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -909,7 +909,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - currency.component~software.application#apt.package::ansible@*->virtual.machine: + currency.component~software.application#apt.package::ansible@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -1131,7 +1131,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - currency.component~software.application#tar.archive::ansible@*->virtual.machine: + currency.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -1350,7 +1350,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - currency.component~software.application#zip.archive::ansible@*->virtual.machine: + currency.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -1572,7 +1572,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - currency.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + currency.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -1797,7 +1797,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - currency.component~service.application#tar.archive::terraform@*->virtual.machine: + currency.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -1984,7 +1984,7 @@ node_types: - sudo bash /tmp/stop-currency.component.sh - sudo bash /tmp/delete-currency.component.sh when: destroy - currency.component~service.application#zip.archive::terraform@*->virtual.machine: + currency.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -2259,7 +2259,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - currency.component~software.application#apt.archive::terraform@*->virtual.machine: + currency.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -2457,7 +2457,7 @@ node_types: - sudo bash /tmp/stop-currency.component.sh - sudo bash /tmp/delete-currency.component.sh when: destroy - currency.component~software.application#tar.archive::terraform@*->virtual.machine: + currency.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -2641,7 +2641,7 @@ node_types: - sudo bash /tmp/stop-currency.component.sh - sudo bash /tmp/delete-currency.component.sh when: destroy - currency.component~software.application#zip.archive::terraform@*->virtual.machine: + currency.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' @@ -2905,7 +2905,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - currency.component~service.application#docker.image::compose@docker.engine->virtual.machine: + currency.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: currency.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/email.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/email.component.yaml index 865d2341f8..95f034392a 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/email.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/email.component.yaml @@ -60,7 +60,7 @@ node_types: # ################################################################ - email.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + email.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -314,7 +314,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - email.component~service.application#tar.archive::ansible@*->virtual.machine: + email.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -561,7 +561,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - email.component~service.application#zip.archive::ansible@*->virtual.machine: + email.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -909,7 +909,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - email.component~software.application#apt.package::ansible@*->virtual.machine: + email.component~software.application#apt.package::ansible@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -1131,7 +1131,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - email.component~software.application#tar.archive::ansible@*->virtual.machine: + email.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -1350,7 +1350,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - email.component~software.application#zip.archive::ansible@*->virtual.machine: + email.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -1572,7 +1572,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - email.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + email.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -1797,7 +1797,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - email.component~service.application#tar.archive::terraform@*->virtual.machine: + email.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -1984,7 +1984,7 @@ node_types: - sudo bash /tmp/stop-email.component.sh - sudo bash /tmp/delete-email.component.sh when: destroy - email.component~service.application#zip.archive::terraform@*->virtual.machine: + email.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -2259,7 +2259,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - email.component~software.application#apt.archive::terraform@*->virtual.machine: + email.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -2457,7 +2457,7 @@ node_types: - sudo bash /tmp/stop-email.component.sh - sudo bash /tmp/delete-email.component.sh when: destroy - email.component~software.application#tar.archive::terraform@*->virtual.machine: + email.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -2641,7 +2641,7 @@ node_types: - sudo bash /tmp/stop-email.component.sh - sudo bash /tmp/delete-email.component.sh when: destroy - email.component~software.application#zip.archive::terraform@*->virtual.machine: + email.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' @@ -2905,7 +2905,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - email.component~service.application#docker.image::compose@docker.engine->virtual.machine: + email.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: email.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/frontend.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/frontend.component.yaml index 4add40947e..a0319f538d 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/frontend.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/frontend.component.yaml @@ -139,7 +139,7 @@ node_types: # ################################################################ - frontend.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + frontend.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -448,7 +448,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - frontend.component~service.application#tar.archive::ansible@*->virtual.machine: + frontend.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -706,7 +706,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - frontend.component~service.application#zip.archive::ansible@*->virtual.machine: + frontend.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -1076,7 +1076,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - frontend.component~software.application#apt.package::ansible@*->virtual.machine: + frontend.component~software.application#apt.package::ansible@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -1298,7 +1298,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - frontend.component~software.application#tar.archive::ansible@*->virtual.machine: + frontend.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -1528,7 +1528,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - frontend.component~software.application#zip.archive::ansible@*->virtual.machine: + frontend.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -1761,7 +1761,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - frontend.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + frontend.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -2041,7 +2041,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - frontend.component~service.application#tar.archive::terraform@*->virtual.machine: + frontend.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -2239,7 +2239,7 @@ node_types: - sudo bash /tmp/stop-frontend.component.sh - sudo bash /tmp/delete-frontend.component.sh when: destroy - frontend.component~service.application#zip.archive::terraform@*->virtual.machine: + frontend.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -2536,7 +2536,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - frontend.component~software.application#apt.archive::terraform@*->virtual.machine: + frontend.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -2745,7 +2745,7 @@ node_types: - sudo bash /tmp/stop-frontend.component.sh - sudo bash /tmp/delete-frontend.component.sh when: destroy - frontend.component~software.application#tar.archive::terraform@*->virtual.machine: + frontend.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -2940,7 +2940,7 @@ node_types: - sudo bash /tmp/stop-frontend.component.sh - sudo bash /tmp/delete-frontend.component.sh when: destroy - frontend.component~software.application#zip.archive::terraform@*->virtual.machine: + frontend.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' @@ -3237,7 +3237,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - frontend.component~service.application#docker.image::compose@docker.engine->virtual.machine: + frontend.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: frontend.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/payment.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/payment.component.yaml index 0e0c206e0e..9c3930d058 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/payment.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/payment.component.yaml @@ -66,7 +66,7 @@ node_types: # ################################################################ - payment.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + payment.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -330,7 +330,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - payment.component~service.application#tar.archive::ansible@*->virtual.machine: + payment.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -579,7 +579,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - payment.component~service.application#zip.archive::ansible@*->virtual.machine: + payment.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -931,7 +931,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - payment.component~software.application#apt.package::ansible@*->virtual.machine: + payment.component~software.application#apt.package::ansible@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -1153,7 +1153,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - payment.component~software.application#tar.archive::ansible@*->virtual.machine: + payment.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -1374,7 +1374,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - payment.component~software.application#zip.archive::ansible@*->virtual.machine: + payment.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -1598,7 +1598,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - payment.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + payment.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -1833,7 +1833,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - payment.component~service.application#tar.archive::terraform@*->virtual.machine: + payment.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -2022,7 +2022,7 @@ node_types: - sudo bash /tmp/stop-payment.component.sh - sudo bash /tmp/delete-payment.component.sh when: destroy - payment.component~service.application#zip.archive::terraform@*->virtual.machine: + payment.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -2301,7 +2301,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - payment.component~software.application#apt.archive::terraform@*->virtual.machine: + payment.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -2501,7 +2501,7 @@ node_types: - sudo bash /tmp/stop-payment.component.sh - sudo bash /tmp/delete-payment.component.sh when: destroy - payment.component~software.application#tar.archive::terraform@*->virtual.machine: + payment.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -2687,7 +2687,7 @@ node_types: - sudo bash /tmp/stop-payment.component.sh - sudo bash /tmp/delete-payment.component.sh when: destroy - payment.component~software.application#zip.archive::terraform@*->virtual.machine: + payment.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' @@ -2957,7 +2957,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - payment.component~service.application#docker.image::compose@docker.engine->virtual.machine: + payment.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: payment.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/product.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/product.component.yaml index de3ce3eb90..9d9abcffbd 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/product.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/product.component.yaml @@ -66,7 +66,7 @@ node_types: # ################################################################ - product.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + product.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -320,7 +320,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - product.component~service.application#tar.archive::ansible@*->virtual.machine: + product.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -567,7 +567,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - product.component~service.application#zip.archive::ansible@*->virtual.machine: + product.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -915,7 +915,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - product.component~software.application#apt.package::ansible@*->virtual.machine: + product.component~software.application#apt.package::ansible@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -1137,7 +1137,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - product.component~software.application#tar.archive::ansible@*->virtual.machine: + product.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -1356,7 +1356,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - product.component~software.application#zip.archive::ansible@*->virtual.machine: + product.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -1578,7 +1578,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - product.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + product.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -1803,7 +1803,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - product.component~service.application#tar.archive::terraform@*->virtual.machine: + product.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -1990,7 +1990,7 @@ node_types: - sudo bash /tmp/stop-product.component.sh - sudo bash /tmp/delete-product.component.sh when: destroy - product.component~service.application#zip.archive::terraform@*->virtual.machine: + product.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -2265,7 +2265,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - product.component~software.application#apt.archive::terraform@*->virtual.machine: + product.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -2463,7 +2463,7 @@ node_types: - sudo bash /tmp/stop-product.component.sh - sudo bash /tmp/delete-product.component.sh when: destroy - product.component~software.application#tar.archive::terraform@*->virtual.machine: + product.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -2647,7 +2647,7 @@ node_types: - sudo bash /tmp/stop-product.component.sh - sudo bash /tmp/delete-product.component.sh when: destroy - product.component~software.application#zip.archive::terraform@*->virtual.machine: + product.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' @@ -2911,7 +2911,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - product.component~service.application#docker.image::compose@docker.engine->virtual.machine: + product.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: product.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/recommendation.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/recommendation.component.yaml index ff7675b6ee..de7faac16b 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/recommendation.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/recommendation.component.yaml @@ -76,7 +76,7 @@ node_types: # ################################################################ - recommendation.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + recommendation.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -335,7 +335,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - recommendation.component~service.application#tar.archive::ansible@*->virtual.machine: + recommendation.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -583,7 +583,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - recommendation.component~service.application#zip.archive::ansible@*->virtual.machine: + recommendation.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -933,7 +933,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - recommendation.component~software.application#apt.package::ansible@*->virtual.machine: + recommendation.component~software.application#apt.package::ansible@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -1155,7 +1155,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - recommendation.component~software.application#tar.archive::ansible@*->virtual.machine: + recommendation.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -1375,7 +1375,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - recommendation.component~software.application#zip.archive::ansible@*->virtual.machine: + recommendation.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -1598,7 +1598,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - recommendation.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + recommendation.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -1828,7 +1828,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - recommendation.component~service.application#tar.archive::terraform@*->virtual.machine: + recommendation.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -2016,7 +2016,7 @@ node_types: - sudo bash /tmp/stop-recommendation.component.sh - sudo bash /tmp/delete-recommendation.component.sh when: destroy - recommendation.component~service.application#zip.archive::terraform@*->virtual.machine: + recommendation.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -2293,7 +2293,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - recommendation.component~software.application#apt.archive::terraform@*->virtual.machine: + recommendation.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -2492,7 +2492,7 @@ node_types: - sudo bash /tmp/stop-recommendation.component.sh - sudo bash /tmp/delete-recommendation.component.sh when: destroy - recommendation.component~software.application#tar.archive::terraform@*->virtual.machine: + recommendation.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -2677,7 +2677,7 @@ node_types: - sudo bash /tmp/stop-recommendation.component.sh - sudo bash /tmp/delete-recommendation.component.sh when: destroy - recommendation.component~software.application#zip.archive::terraform@*->virtual.machine: + recommendation.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' @@ -2944,7 +2944,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - recommendation.component~service.application#docker.image::compose@docker.engine->virtual.machine: + recommendation.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: recommendation.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/shipping.component.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/shipping.component.yaml index b1158a84dc..8360699f3b 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/shipping.component.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/boutique/shipping.component.yaml @@ -60,7 +60,7 @@ node_types: # ################################################################ - shipping.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + shipping.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -314,7 +314,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - shipping.component~service.application#tar.archive::ansible@*->virtual.machine: + shipping.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -561,7 +561,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - shipping.component~service.application#zip.archive::ansible@*->virtual.machine: + shipping.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -909,7 +909,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - shipping.component~software.application#apt.package::ansible@*->virtual.machine: + shipping.component~software.application#apt.package::ansible@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -1131,7 +1131,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - shipping.component~software.application#tar.archive::ansible@*->virtual.machine: + shipping.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -1350,7 +1350,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - shipping.component~software.application#zip.archive::ansible@*->virtual.machine: + shipping.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -1572,7 +1572,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - shipping.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + shipping.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -1797,7 +1797,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - shipping.component~service.application#tar.archive::terraform@*->virtual.machine: + shipping.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -1984,7 +1984,7 @@ node_types: - sudo bash /tmp/stop-shipping.component.sh - sudo bash /tmp/delete-shipping.component.sh when: destroy - shipping.component~service.application#zip.archive::terraform@*->virtual.machine: + shipping.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -2259,7 +2259,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - shipping.component~software.application#apt.archive::terraform@*->virtual.machine: + shipping.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -2457,7 +2457,7 @@ node_types: - sudo bash /tmp/stop-shipping.component.sh - sudo bash /tmp/delete-shipping.component.sh when: destroy - shipping.component~software.application#tar.archive::terraform@*->virtual.machine: + shipping.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -2641,7 +2641,7 @@ node_types: - sudo bash /tmp/stop-shipping.component.sh - sudo bash /tmp/delete-shipping.component.sh when: destroy - shipping.component~software.application#zip.archive::terraform@*->virtual.machine: + shipping.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' @@ -2905,7 +2905,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - shipping.component~service.application#docker.image::compose@docker.engine->virtual.machine: + shipping.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: shipping.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/rules.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/rules.yaml index b7b69a380a..6f279bd251 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/rules.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/rules.yaml @@ -7,7 +7,7 @@ ansible: - component: docker.engine hosting: - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. details: '"ansible.builtin.shell", "ansible.builtin.group", and "ansible.builtin.user" tasks' @@ -24,7 +24,7 @@ ansible: details: '"kubernetes.core.k8s" task' - component: ingress hosting: - - virtual.machine + - remote.machine weight: 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' @@ -32,7 +32,7 @@ ansible: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. - component: mysql.database @@ -50,31 +50,35 @@ ansible: - component: mysql.database hosting: - mysql.dbms - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized details: '"community.docker.docker_container" task' - component: mysql.dbms + artifact: dbms.image hosting: - gcp.cloudsql weight: 1 reason: Primary use case due to the specialization of Ansible. details: '"google.cloud.gcp_sql_instance" and "google.cloud.gcp_sql_user" tasks' - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 0.5 reason: Kubernetes is more specialized. details: '"kubernetes.core.k8s" tasks' - component: mysql.dbms + artifact: dbms.image hosting: - - virtual.machine + - remote.machine weight: 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' @@ -82,7 +86,7 @@ ansible: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"community.docker.docker_container" task' @@ -104,7 +108,7 @@ ansible: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -112,7 +116,7 @@ ansible: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -127,7 +131,7 @@ ansible: artifact: apt.package hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -135,7 +139,7 @@ ansible: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -143,7 +147,7 @@ ansible: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -157,7 +161,7 @@ ansible: terraform: - component: docker.engine hosting: - - virtual.machine + - remote.machine weight: 0 reason: Ansible is more specialized. Also using provisioners is a "last resort". details: '"remote-exec" provider' @@ -174,7 +178,7 @@ terraform: details: '"kubernetes_service_v1" resource' - component: ingress hosting: - - virtual.machine + - remote.machine weight: 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' @@ -182,7 +186,7 @@ terraform: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. - component: mysql.database @@ -200,31 +204,35 @@ terraform: - component: mysql.database hosting: - mysql.dbms - - virtual.machine + - remote.machine weight: 0.5 reason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"docker_container" and "docker_image" resources' - component: mysql.dbms + artifact: dbms.image hosting: - gcp.cloudsql weight: 1 reason: Terraform provides a declarative module. details: '"google_sql_database_instance" and "google_sql_user" resources' - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 0.5 reason: Kubernetes is more specialized. details: '"kubernetes_deployment_v1" and "kubernetes_service_v1" resources' - component: mysql.dbms + artifact: dbms.image hosting: - - virtual.machine + - remote.machine weight: 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' @@ -232,7 +240,7 @@ terraform: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"docker_container" and "docker_image" resources' @@ -254,7 +262,7 @@ terraform: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -262,7 +270,7 @@ terraform: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -277,7 +285,7 @@ terraform: artifact: apt.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -285,7 +293,7 @@ terraform: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -293,7 +301,7 @@ terraform: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -318,6 +326,7 @@ kubernetes: weight: 0 reason: Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules. - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 1 @@ -335,13 +344,14 @@ compose: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 0 - reason: One-time use docker container ("fake Kubernetes job") with imperative parts, while declarative other technologies provide declarative modules. + reason: One-time use docker container ("fake Kubernetes job") with imperative parts, while other technologies provide declarative modules. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Docker is the underlying technology. details: docker-compose manifest generated and applied @@ -349,7 +359,7 @@ compose: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Docker is the underlying technology. details: docker compose manifest generated and applied diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/tosca-vintner-profile-core.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/tosca-vintner-profile-core.yaml index 52b8da3c39..e4c0368edc 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/tosca-vintner-profile-core.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/tosca-vintner-profile-core.yaml @@ -69,6 +69,9 @@ artifact_types: machine.image: derived_from: artifact description: expects image reference in "file" + dbms.image: + derived_from: artifact + description: expects image reference in "file" interface_types: interface: derived_from: tosca.interfaces.Root @@ -219,8 +222,23 @@ node_types: metadata: vintner_normative: 'true' vintner_abstract: 'true' - virtual.machine: + machine: derived_from: node + metadata: + vintner_normative: 'true' + vintner_abstract: 'true' + properties: + machine_name: + type: string + local.machine: + derived_from: machine + metadata: + vintner_normative: 'true' + capabilities: + host: + type: tosca.capabilities.Compute + remote.machine: + derived_from: machine metadata: vintner_normative: 'true' properties: @@ -257,36 +275,10 @@ node_types: connection: ssh host: eval: .parent::management_address + virtual.machine: + derived_from: remote.machine physical.machine: - derived_from: node - metadata: - vintner_normative: 'true' - properties: - machine_name: - type: string - ports: - type: list - entry_schema: - type: string - flavor: - type: string - default: m1.medium - network: - type: string - ssh_user: - type: string - ssh_key_name: - type: string - ssh_key_file: - type: string - attributes: - management_address: - type: string - application_address: - type: string - capabilities: - host: - type: tosca.capabilities.Compute + derived_from: remote.machine database: derived_from: node metadata: @@ -618,7 +610,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: LoadBalancer - ingress~ingress::ansible@virtual.machine: + ingress~ingress::ansible@remote.machine: derived_from: ingress metadata: vintner_generated: 'true' @@ -746,7 +738,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: LoadBalancer - ingress~ingress::terraform@virtual.machine: + ingress~ingress::terraform@remote.machine: derived_from: ingress metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/tosca-vintner-profile-extended.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/tosca-vintner-profile-extended.yaml index 2fdc7164fd..d438d48ded 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/tosca-vintner-profile-extended.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/lib/tosca-vintner-profile-extended.yaml @@ -401,9 +401,6 @@ node_types: type: string default: eval: .::dbms_name - dbms_version: - type: string - default: '5.7' dbms_password: type: string dbms_ssl_mode: @@ -461,7 +458,7 @@ node_types: # ################################################################ - nodejs.runtime~software.application#apt.package::ansible@*->virtual.machine: + nodejs.runtime~software.application#apt.package::ansible@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -683,7 +680,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - nodejs.runtime~software.application#tar.archive::ansible@*->virtual.machine: + nodejs.runtime~software.application#tar.archive::ansible@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -900,7 +897,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - nodejs.runtime~software.application#zip.archive::ansible@*->virtual.machine: + nodejs.runtime~software.application#zip.archive::ansible@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -1120,7 +1117,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - nodejs.runtime~software.application#apt.archive::terraform@*->virtual.machine: + nodejs.runtime~software.application#apt.archive::terraform@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -1317,7 +1314,7 @@ node_types: - sudo bash /tmp/stop-nodejs.runtime.sh - sudo bash /tmp/delete-nodejs.runtime.sh when: destroy - nodejs.runtime~software.application#tar.archive::terraform@*->virtual.machine: + nodejs.runtime~software.application#tar.archive::terraform@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -1500,7 +1497,7 @@ node_types: - sudo bash /tmp/stop-nodejs.runtime.sh - sudo bash /tmp/delete-nodejs.runtime.sh when: destroy - nodejs.runtime~software.application#zip.archive::terraform@*->virtual.machine: + nodejs.runtime~software.application#zip.archive::terraform@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -1683,7 +1680,7 @@ node_types: - sudo bash /tmp/stop-nodejs.runtime.sh - sudo bash /tmp/delete-nodejs.runtime.sh when: destroy - python.runtime~software.application#apt.package::ansible@*->virtual.machine: + python.runtime~software.application#apt.package::ansible@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -1905,7 +1902,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - python.runtime~software.application#tar.archive::ansible@*->virtual.machine: + python.runtime~software.application#tar.archive::ansible@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2122,7 +2119,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - python.runtime~software.application#zip.archive::ansible@*->virtual.machine: + python.runtime~software.application#zip.archive::ansible@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2342,7 +2339,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - python.runtime~software.application#apt.archive::terraform@*->virtual.machine: + python.runtime~software.application#apt.archive::terraform@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2539,7 +2536,7 @@ node_types: - sudo bash /tmp/stop-python.runtime.sh - sudo bash /tmp/delete-python.runtime.sh when: destroy - python.runtime~software.application#tar.archive::terraform@*->virtual.machine: + python.runtime~software.application#tar.archive::terraform@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2722,7 +2719,7 @@ node_types: - sudo bash /tmp/stop-python.runtime.sh - sudo bash /tmp/delete-python.runtime.sh when: destroy - python.runtime~software.application#zip.archive::terraform@*->virtual.machine: + python.runtime~software.application#zip.archive::terraform@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2905,7 +2902,7 @@ node_types: - sudo bash /tmp/stop-python.runtime.sh - sudo bash /tmp/delete-python.runtime.sh when: destroy - java.runtime~software.application#apt.package::ansible@*->virtual.machine: + java.runtime~software.application#apt.package::ansible@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3127,7 +3124,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - java.runtime~software.application#tar.archive::ansible@*->virtual.machine: + java.runtime~software.application#tar.archive::ansible@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3344,7 +3341,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - java.runtime~software.application#zip.archive::ansible@*->virtual.machine: + java.runtime~software.application#zip.archive::ansible@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3564,7 +3561,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - java.runtime~software.application#apt.archive::terraform@*->virtual.machine: + java.runtime~software.application#apt.archive::terraform@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3761,7 +3758,7 @@ node_types: - sudo bash /tmp/stop-java.runtime.sh - sudo bash /tmp/delete-java.runtime.sh when: destroy - java.runtime~software.application#tar.archive::terraform@*->virtual.machine: + java.runtime~software.application#tar.archive::terraform@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3944,7 +3941,7 @@ node_types: - sudo bash /tmp/stop-java.runtime.sh - sudo bash /tmp/delete-java.runtime.sh when: destroy - java.runtime~software.application#zip.archive::terraform@*->virtual.machine: + java.runtime~software.application#zip.archive::terraform@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -4127,7 +4124,7 @@ node_types: - sudo bash /tmp/stop-java.runtime.sh - sudo bash /tmp/delete-java.runtime.sh when: destroy - dotnet.runtime~software.application#apt.package::ansible@*->virtual.machine: + dotnet.runtime~software.application#apt.package::ansible@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -4349,7 +4346,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - dotnet.runtime~software.application#tar.archive::ansible@*->virtual.machine: + dotnet.runtime~software.application#tar.archive::ansible@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -4566,7 +4563,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - dotnet.runtime~software.application#zip.archive::ansible@*->virtual.machine: + dotnet.runtime~software.application#zip.archive::ansible@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -4786,7 +4783,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - dotnet.runtime~software.application#apt.archive::terraform@*->virtual.machine: + dotnet.runtime~software.application#apt.archive::terraform@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -4983,7 +4980,7 @@ node_types: - sudo bash /tmp/stop-dotnet.runtime.sh - sudo bash /tmp/delete-dotnet.runtime.sh when: destroy - dotnet.runtime~software.application#tar.archive::terraform@*->virtual.machine: + dotnet.runtime~software.application#tar.archive::terraform@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -5166,7 +5163,7 @@ node_types: - sudo bash /tmp/stop-dotnet.runtime.sh - sudo bash /tmp/delete-dotnet.runtime.sh when: destroy - dotnet.runtime~software.application#zip.archive::terraform@*->virtual.machine: + dotnet.runtime~software.application#zip.archive::terraform@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -5764,7 +5761,7 @@ node_types: - disable_on_destroy: false project: '{{ SELF.gcp_project }}' service: '{{ SELF.gcp_service }}' - docker.engine~docker.engine::ansible@virtual.machine: + docker.engine~docker.engine::ansible@remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -5809,7 +5806,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - docker.engine~software.application#apt.package::ansible@*->virtual.machine: + docker.engine~software.application#apt.package::ansible@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6031,7 +6028,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - docker.engine~software.application#tar.archive::ansible@*->virtual.machine: + docker.engine~software.application#tar.archive::ansible@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6250,7 +6247,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - docker.engine~software.application#zip.archive::ansible@*->virtual.machine: + docker.engine~software.application#zip.archive::ansible@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6472,7 +6469,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - docker.engine~docker.engine::terraform@virtual.machine: + docker.engine~docker.engine::terraform@remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6520,7 +6517,7 @@ node_types: - curl -sSL https://get.docker.com | sudo sh - sudo groupadd -f docker - sudo usermod -aG docker {{ SELF.os_ssh_user }} - docker.engine~software.application#apt.archive::terraform@*->virtual.machine: + docker.engine~software.application#apt.archive::terraform@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6718,7 +6715,7 @@ node_types: - sudo bash /tmp/stop-docker.engine.sh - sudo bash /tmp/delete-docker.engine.sh when: destroy - docker.engine~software.application#tar.archive::terraform@*->virtual.machine: + docker.engine~software.application#tar.archive::terraform@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6902,7 +6899,7 @@ node_types: - sudo bash /tmp/stop-docker.engine.sh - sudo bash /tmp/delete-docker.engine.sh when: destroy - docker.engine~software.application#zip.archive::terraform@*->virtual.machine: + docker.engine~software.application#zip.archive::terraform@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -7086,7 +7083,7 @@ node_types: - sudo bash /tmp/stop-docker.engine.sh - sudo bash /tmp/delete-docker.engine.sh when: destroy - mysql.dbms~mysql.dbms::ansible@docker.engine->virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::ansible@docker.engine->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7131,7 +7128,7 @@ node_types: - name: start container community.docker.docker_container: name: '{{ SELF.dbms_name }}' - image: mysql:{{ SELF.dbms_version }} + image: mysql:{{ ".artifacts::dbms_image::file" | eval }} network_mode: host env: MYSQL_ROOT_PASSWORD: '{{ SELF.dbms_password | string }}' @@ -7140,7 +7137,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - mysql.dbms~mysql.dbms::ansible@gcp.cloudsql: + mysql.dbms~mysql.dbms#dbms.image::ansible@gcp.cloudsql: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7191,7 +7188,7 @@ node_types: register: instance_info google.cloud.gcp_sql_instance: name: '{{ SELF.dbms_name }}' - database_version: MYSQL_{{ SELF.dbms_version | replace(".", "_") }} + database_version: MYSQL_{{ ".artifacts::dbms_image::file" | eval | replace(".", "_") }} settings: tier: db-f1-micro availability_type: REGIONAL @@ -7234,7 +7231,7 @@ node_types: ansible.builtin.shell: gcloud sql instances delete {{ SELF.dbms_name }} --quiet args: executable: /bin/bash - mysql.dbms~mysql.dbms::ansible@kubernetes.cluster: + mysql.dbms~mysql.dbms#dbms.image::ansible@kubernetes.cluster: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7310,7 +7307,7 @@ node_types: app: '{{ SELF.dbms_name }}' spec: containers: - - image: mysql:{{ SELF.dbms_version }} + - image: mysql:{{ ".artifacts::dbms_image::file" | eval }} name: '{{ SELF.dbms_name }}' env: - name: MYSQL_ROOT_PASSWORD @@ -7335,7 +7332,7 @@ node_types: app: '{{ SELF.dbms_name }}' type: ClusterIP delete: exit 0 - mysql.dbms~mysql.dbms::ansible@virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::ansible@remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7451,7 +7448,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - mysql.dbms~software.application#apt.package::ansible@*->virtual.machine: + mysql.dbms~software.application#apt.package::ansible@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7673,7 +7670,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - mysql.dbms~software.application#tar.archive::ansible@*->virtual.machine: + mysql.dbms~software.application#tar.archive::ansible@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7736,7 +7733,6 @@ node_types: content: |- DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" - name: copy management operation @@ -7895,7 +7891,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - mysql.dbms~software.application#zip.archive::ansible@*->virtual.machine: + mysql.dbms~software.application#zip.archive::ansible@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7961,7 +7957,6 @@ node_types: content: |- DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" - name: copy management operation @@ -8120,7 +8115,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - mysql.dbms~mysql.dbms::terraform@docker.engine->virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::terraform@docker.engine->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8200,8 +8195,8 @@ node_types: - MYSQL_ROOT_PASSWORD={{ SELF.dbms_password }} docker_image: image: - - name: mysql:{{ SELF.dbms_version }} - mysql.dbms~mysql.dbms::terraform@gcp.cloudsql: + - name: mysql:{{ ".artifacts::dbms_image::file" | eval }} + mysql.dbms~mysql.dbms#dbms.image::terraform@gcp.cloudsql: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8264,7 +8259,7 @@ node_types: resource: google_sql_database_instance: dbms: - - database_version: MYSQL_{{ SELF.dbms_version | replace(".", "_") }} + - database_version: MYSQL_{{ ".artifacts::dbms_image::file" | eval | replace(".", "_") }} deletion_protection: false name: '{{ SELF.dbms_name }}' root_password: '{{ SELF.dbms_password }}' @@ -8285,7 +8280,7 @@ node_types: instance: ${google_sql_database_instance.dbms.name} name: root password: ${google_sql_database_instance.dbms.root_password} - mysql.dbms~mysql.dbms::terraform@kubernetes.cluster: + mysql.dbms~mysql.dbms#dbms.image::terraform@kubernetes.cluster: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8363,7 +8358,7 @@ node_types: spec: - container: - name: '{{ SELF.dbms_name }}' - image: mysql:{{ SELF.dbms_version }} + image: mysql:{{ ".artifacts::dbms_image::file" | eval }} env: - name: MYSQL_ROOT_PASSWORD value: '{{ SELF.dbms_password }}' @@ -8382,7 +8377,7 @@ node_types: selector: app: '{{ SELF.dbms_name }}' type: ClusterIP - mysql.dbms~mysql.dbms::terraform@virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::terraform@remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8487,7 +8482,7 @@ node_types: remote-exec: - inline: - sudo bash /tmp/install-mysql-dbms.sh {{ SELF.dbms_password }} {{ SELF.application_port }} - mysql.dbms~software.application#apt.archive::terraform@*->virtual.machine: + mysql.dbms~software.application#apt.archive::terraform@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8571,7 +8566,6 @@ node_types: cat < {{ SELF.application_directory }}/.env DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" EOF>> @@ -8688,7 +8682,7 @@ node_types: - sudo bash /tmp/stop-mysql.dbms.sh - sudo bash /tmp/delete-mysql.dbms.sh when: destroy - mysql.dbms~software.application#tar.archive::terraform@*->virtual.machine: + mysql.dbms~software.application#tar.archive::terraform@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8749,7 +8743,6 @@ node_types: cat < {{ SELF.application_directory }}/.env DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" EOF>> @@ -8875,7 +8868,7 @@ node_types: - sudo bash /tmp/stop-mysql.dbms.sh - sudo bash /tmp/delete-mysql.dbms.sh when: destroy - mysql.dbms~software.application#zip.archive::terraform@*->virtual.machine: + mysql.dbms~software.application#zip.archive::terraform@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8936,7 +8929,6 @@ node_types: cat < {{ SELF.application_directory }}/.env DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" EOF>> @@ -9062,7 +9054,7 @@ node_types: - sudo bash /tmp/stop-mysql.dbms.sh - sudo bash /tmp/delete-mysql.dbms.sh when: destroy - mysql.dbms~mysql.dbms::kubernetes@kubernetes.cluster: + mysql.dbms~mysql.dbms#dbms.image::kubernetes@kubernetes.cluster: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -9138,7 +9130,7 @@ node_types: app: '{{ SELF.dbms_name }}' spec: containers: - - image: mysql:{{ SELF.dbms_version }} + - image: mysql:{{ ".artifacts::dbms_image::file" | eval }} name: '{{ SELF.dbms_name }}' env: - name: MYSQL_ROOT_PASSWORD @@ -9171,7 +9163,7 @@ node_types: ansible.builtin.pause: seconds: 10 delete: exit 0 - mysql.dbms~mysql.dbms::compose@docker.engine->virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::compose@docker.engine->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -9234,7 +9226,7 @@ node_types: services: application: container_name: '{{ SELF.dbms_name }}' - image: mysql:{{ SELF.dbms_version }} + image: mysql:{{ ".artifacts::dbms_image::file" | eval }} network_mode: host environment: MYSQL_ROOT_PASSWORD: '{{ SELF.dbms_password }}' @@ -9250,7 +9242,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - mysql.database~mysql.database::ansible@mysql.dbms->docker.engine->virtual.machine: + mysql.database~mysql.database::ansible@mysql.dbms->docker.engine->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' @@ -9476,7 +9468,7 @@ node_types: ansible.builtin.shell: pkill -f "kubectl port-forward service/{{ HOST.dbms_name }}" args: executable: /usr/bin/bash - mysql.database~mysql.database::ansible@mysql.dbms->virtual.machine: + mysql.database~mysql.database::ansible@mysql.dbms->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' @@ -9534,7 +9526,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - mysql.database~mysql.database::terraform@mysql.dbms->docker.engine->virtual.machine: + mysql.database~mysql.database::terraform@mysql.dbms->docker.engine->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' @@ -9761,7 +9753,7 @@ node_types: privileges: - ALL user: ${mysql_user.user.user} - mysql.database~mysql.database::terraform@mysql.dbms->virtual.machine: + mysql.database~mysql.database::terraform@mysql.dbms->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' @@ -9935,7 +9927,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - mysql.database~mysql.database::compose@mysql.dbms->docker.engine->virtual.machine: + mysql.database~mysql.database::compose@mysql.dbms->docker.engine->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/gcp/expected.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/gcp/expected.yaml index 6990f65cb8..a72ce7bcf1 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/gcp/expected.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/gcp/expected.yaml @@ -213,12 +213,16 @@ topology_template: - host: cart_dbms cart_dbms: - type: mysql.dbms~mysql.dbms::terraform@gcp.cloudsql + type: mysql.dbms~mysql.dbms#dbms.image::terraform@gcp.cloudsql properties: dbms_name: unfurl-technology-boutique-cart-dbms dbms_password: {get_input: dbms_password} requirements: - host: gcp_cloudsql + artifacts: + dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/kubernetes/expected.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/kubernetes/expected.yaml index 36abbe8984..aedf7cb34d 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/kubernetes/expected.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/kubernetes/expected.yaml @@ -222,12 +222,16 @@ topology_template: - host: cart_dbms cart_dbms: - type: mysql.dbms~mysql.dbms::kubernetes@kubernetes.cluster + type: mysql.dbms~mysql.dbms#dbms.image::kubernetes@kubernetes.cluster properties: dbms_name: unfurl-technology-boutique-cart-dbms dbms_password: {get_input: dbms_password} requirements: - host: kubernetes_cluster + artifacts: + dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-large/expected.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-large/expected.yaml index 3ec420d1e3..3a4f4dfbec 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-large/expected.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-large/expected.yaml @@ -52,7 +52,7 @@ topology_template: ################################################### frontend_component: - type: frontend.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: frontend.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: frontend application_port: 8080 @@ -83,7 +83,7 @@ topology_template: file: milesstoetzner/boutique-frontend:v8 frontend_ingress: - type: ingress~ingress::ansible@virtual.machine + type: ingress~ingress::ansible@remote.machine requirements: - application: frontend_component - host: virtual_machine @@ -95,7 +95,7 @@ topology_template: ################################################### checkout_component: - type: checkout.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: checkout.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: checkout application_port: 7003 @@ -129,7 +129,7 @@ topology_template: ################################################### email_component: - type: email.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: email.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: email application_port: 7005 @@ -149,7 +149,7 @@ topology_template: ################################################### payment_component: - type: payment.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: payment.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: payment application_port: 7006 @@ -171,7 +171,7 @@ topology_template: ################################################### currency_component: - type: currency.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: currency.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: currency application_port: 7004 @@ -191,7 +191,7 @@ topology_template: ################################################### shipping_component: - type: shipping.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: shipping.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: shipping application_port: 7009 @@ -211,7 +211,7 @@ topology_template: ################################################### cart_component: - type: cart.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: cart.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: cart application_port: 7070 @@ -233,7 +233,7 @@ topology_template: file: milesstoetzner/boutique-cart:v8 cart_database: - type: mysql.database~mysql.database::ansible@mysql.dbms->docker.engine->virtual.machine + type: mysql.database~mysql.database::ansible@mysql.dbms->docker.engine->remote.machine properties: database_name: cart database_user: cart @@ -242,12 +242,16 @@ topology_template: - host: cart_dbms cart_dbms: - type: mysql.dbms~mysql.dbms::compose@docker.engine->virtual.machine + type: mysql.dbms~mysql.dbms#dbms.image::compose@docker.engine->remote.machine properties: dbms_name: unfurl-technology-boutique-cart-dbms dbms_password: {get_input: dbms_password} requirements: - host: docker_engine + artifacts: + dbms_image: + type: dbms.image + file: 5.7 ################################################### # @@ -256,7 +260,7 @@ topology_template: ################################################### product_component: - type: product.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: product.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: product application_port: 7007 @@ -276,7 +280,7 @@ topology_template: ################################################### recommendation_component: - type: recommendation.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: recommendation.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: recommendation application_port: 7008 @@ -298,7 +302,7 @@ topology_template: ################################################### advertisement_component: - type: advertisement.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: advertisement.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: advertisement application_port: 7000 @@ -318,12 +322,12 @@ topology_template: ################################################### docker_engine: - type: docker.engine~docker.engine::ansible@virtual.machine + type: docker.engine~docker.engine::ansible@remote.machine requirements: - host: virtual_machine node_agent: - type: node.agent~service.application#tar.archive::ansible@*->virtual.machine + type: node.agent~service.application#tar.archive::ansible@*->remote.machine properties: application_name: node_exporter application_port: 9100 @@ -339,7 +343,7 @@ topology_template: - '--strip-components=1' promtail_agent: - type: promtail.agent~software.application#apt.package::ansible@*->virtual.machine + type: promtail.agent~software.application#apt.package::ansible@*->remote.machine properties: application_name: promtail requirements: @@ -354,7 +358,7 @@ topology_template: source: https://apt.grafana.com stable main falco_agent: - type: falco.agent~software.application#apt.package::ansible@*->virtual.machine + type: falco.agent~software.application#apt.package::ansible@*->remote.machine properties: application_name: falco requirements: diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-large/test.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-large/test.yaml index b22598fca6..616f52519b 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-large/test.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-large/test.yaml @@ -2,7 +2,7 @@ merge: topology_template: node_templates: analytics_component: - type: analytics.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: analytics.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: analytics application_port: 7001 diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-medium/expected.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-medium/expected.yaml index ce576c341f..57d339a9b8 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-medium/expected.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-medium/expected.yaml @@ -52,7 +52,7 @@ topology_template: ################################################### frontend_component: - type: frontend.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: frontend.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: frontend application_port: 8080 @@ -83,7 +83,7 @@ topology_template: file: milesstoetzner/boutique-frontend:v8 frontend_ingress: - type: ingress~ingress::ansible@virtual.machine + type: ingress~ingress::ansible@remote.machine requirements: - application: frontend_component - host: virtual_machine @@ -95,7 +95,7 @@ topology_template: ################################################### checkout_component: - type: checkout.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: checkout.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: checkout application_port: 7003 @@ -129,7 +129,7 @@ topology_template: ################################################### email_component: - type: email.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: email.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: email application_port: 7005 @@ -149,7 +149,7 @@ topology_template: ################################################### payment_component: - type: payment.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: payment.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: payment application_port: 7006 @@ -171,7 +171,7 @@ topology_template: ################################################### currency_component: - type: currency.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: currency.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: currency application_port: 7004 @@ -191,7 +191,7 @@ topology_template: ################################################### shipping_component: - type: shipping.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: shipping.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: shipping application_port: 7009 @@ -211,7 +211,7 @@ topology_template: ################################################### cart_component: - type: cart.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: cart.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: cart application_port: 7070 @@ -233,7 +233,7 @@ topology_template: file: milesstoetzner/boutique-cart:v8 cart_database: - type: mysql.database~mysql.database::ansible@mysql.dbms->docker.engine->virtual.machine + type: mysql.database~mysql.database::ansible@mysql.dbms->docker.engine->remote.machine properties: database_name: cart database_user: cart @@ -242,12 +242,16 @@ topology_template: - host: cart_dbms cart_dbms: - type: mysql.dbms~mysql.dbms::compose@docker.engine->virtual.machine + type: mysql.dbms~mysql.dbms#dbms.image::compose@docker.engine->remote.machine properties: dbms_name: unfurl-technology-boutique-cart-dbms dbms_password: {get_input: dbms_password} requirements: - host: docker_engine + artifacts: + dbms_image: + type: dbms.image + file: 5.7 ################################################### # @@ -256,7 +260,7 @@ topology_template: ################################################### product_component: - type: product.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: product.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: product application_port: 7007 @@ -276,7 +280,7 @@ topology_template: ################################################### recommendation_component: - type: recommendation.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: recommendation.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: recommendation application_port: 7008 @@ -298,7 +302,7 @@ topology_template: ################################################### advertisement_component: - type: advertisement.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: advertisement.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: advertisement application_port: 7000 @@ -318,12 +322,12 @@ topology_template: ################################################### docker_engine: - type: docker.engine~docker.engine::ansible@virtual.machine + type: docker.engine~docker.engine::ansible@remote.machine requirements: - host: virtual_machine node_agent: - type: node.agent~service.application#tar.archive::ansible@*->virtual.machine + type: node.agent~service.application#tar.archive::ansible@*->remote.machine properties: application_name: node_exporter application_port: 9100 @@ -339,7 +343,7 @@ topology_template: - '--strip-components=1' promtail_agent: - type: promtail.agent~software.application#apt.package::ansible@*->virtual.machine + type: promtail.agent~software.application#apt.package::ansible@*->remote.machine properties: application_name: promtail requirements: @@ -354,7 +358,7 @@ topology_template: source: https://apt.grafana.com stable main falco_agent: - type: falco.agent~software.application#apt.package::ansible@*->virtual.machine + type: falco.agent~software.application#apt.package::ansible@*->remote.machine properties: application_name: falco requirements: diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-medium/test.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-medium/test.yaml index b22598fca6..616f52519b 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-medium/test.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/tests/os-medium/test.yaml @@ -2,7 +2,7 @@ merge: topology_template: node_templates: analytics_component: - type: analytics.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: analytics.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: analytics application_port: 7001 diff --git a/examples/unfurl-technology---boutique---plus-maintenance-automated/variable-service-template.yaml b/examples/unfurl-technology---boutique---plus-maintenance-automated/variable-service-template.yaml index f18550f51c..acb1227bf0 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-automated/variable-service-template.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-automated/variable-service-template.yaml @@ -351,6 +351,10 @@ topology_template: - host: docker_engine - host: kubernetes_cluster - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---boutique---plus-maintenance-manual/tests/os-large/test.yaml b/examples/unfurl-technology---boutique---plus-maintenance-manual/tests/os-large/test.yaml index f3f81875ce..a9193da2cb 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-manual/tests/os-large/test.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-manual/tests/os-large/test.yaml @@ -5,7 +5,7 @@ merge: topology_template: node_templates: analytics_component: - type: analytics.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: analytics.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: analytics application_port: 7001 diff --git a/examples/unfurl-technology---boutique---plus-maintenance-manual/tests/os-medium/test.yaml b/examples/unfurl-technology---boutique---plus-maintenance-manual/tests/os-medium/test.yaml index c5a5d93579..0b41f2d63c 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-manual/tests/os-medium/test.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-manual/tests/os-medium/test.yaml @@ -5,7 +5,7 @@ merge: topology_template: node_templates: analytics_component: - type: analytics.component~service.application#docker.image::compose@docker.engine->virtual.machine + type: analytics.component~service.application#docker.image::compose@docker.engine->remote.machine properties: application_name: analytics application_port: 7001 diff --git a/examples/unfurl-technology---boutique---plus-maintenance-manual/variable-service-template.yaml b/examples/unfurl-technology---boutique---plus-maintenance-manual/variable-service-template.yaml index 52ee9f0b58..a1b7d5261d 100644 --- a/examples/unfurl-technology---boutique---plus-maintenance-manual/variable-service-template.yaml +++ b/examples/unfurl-technology---boutique---plus-maintenance-manual/variable-service-template.yaml @@ -420,6 +420,10 @@ topology_template: - host: docker_engine - host: kubernetes_cluster - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---boutique---plus-original-automated/variable-service-template.yaml b/examples/unfurl-technology---boutique---plus-original-automated/variable-service-template.yaml index d9a0489884..7ce6edf64c 100644 --- a/examples/unfurl-technology---boutique---plus-original-automated/variable-service-template.yaml +++ b/examples/unfurl-technology---boutique---plus-original-automated/variable-service-template.yaml @@ -351,6 +351,10 @@ topology_template: - host: docker_engine - host: kubernetes_cluster - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---boutique---plus-original-manual/variable-service-template.yaml b/examples/unfurl-technology---boutique---plus-original-manual/variable-service-template.yaml index dfa4b301d9..0cc76fcda3 100644 --- a/examples/unfurl-technology---boutique---plus-original-manual/variable-service-template.yaml +++ b/examples/unfurl-technology---boutique---plus-original-manual/variable-service-template.yaml @@ -378,6 +378,10 @@ topology_template: requirements: - host: docker_engine - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---shop---baseline-maintenance/variable-service-template.yaml b/examples/unfurl-technology---shop---baseline-maintenance/variable-service-template.yaml index 9e605bd65f..b1b66c65a4 100644 --- a/examples/unfurl-technology---shop---baseline-maintenance/variable-service-template.yaml +++ b/examples/unfurl-technology---shop---baseline-maintenance/variable-service-template.yaml @@ -257,6 +257,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: virtual_machine + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 mysql_dbms_terraform: type: mysql.dbms @@ -266,6 +270,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 mysql_dbms_kubernetes: type: mysql.dbms @@ -275,6 +283,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: kubernetes_cluster + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---shop---baseline-original/variable-service-template.yaml b/examples/unfurl-technology---shop---baseline-original/variable-service-template.yaml index 834ac88dee..600b1cfbaf 100644 --- a/examples/unfurl-technology---shop---baseline-original/variable-service-template.yaml +++ b/examples/unfurl-technology---shop---baseline-original/variable-service-template.yaml @@ -161,6 +161,7 @@ topology_template: - database_password: {get_input: database_password} requirements: - host: mysql_dbms_terraform + artifacts: mysql_dbms_ansible: type: mysql.dbms @@ -170,6 +171,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: virtual_machine + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 mysql_dbms_terraform: type: mysql.dbms @@ -179,6 +184,10 @@ topology_template: - dbms_password: {get_input: dbms_password} requirements: - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/lib/rules.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/lib/rules.yaml index 668a200aa5..6f279bd251 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/lib/rules.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/lib/rules.yaml @@ -7,7 +7,7 @@ ansible: - component: docker.engine hosting: - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. details: '"ansible.builtin.shell", "ansible.builtin.group", and "ansible.builtin.user" tasks' @@ -24,7 +24,7 @@ ansible: details: '"kubernetes.core.k8s" task' - component: ingress hosting: - - virtual.machine + - remote.machine weight: 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' @@ -32,7 +32,7 @@ ansible: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. - component: mysql.database @@ -50,31 +50,35 @@ ansible: - component: mysql.database hosting: - mysql.dbms - - virtual.machine + - remote.machine weight: 1 reason: Primary use case due to the specialization of Ansible. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized details: '"community.docker.docker_container" task' - component: mysql.dbms + artifact: dbms.image hosting: - gcp.cloudsql weight: 1 reason: Primary use case due to the specialization of Ansible. details: '"google.cloud.gcp_sql_instance" and "google.cloud.gcp_sql_user" tasks' - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 0.5 reason: Kubernetes is more specialized. details: '"kubernetes.core.k8s" tasks' - component: mysql.dbms + artifact: dbms.image hosting: - - virtual.machine + - remote.machine weight: 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' @@ -82,7 +86,7 @@ ansible: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"community.docker.docker_container" task' @@ -104,7 +108,7 @@ ansible: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -112,7 +116,7 @@ ansible: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -127,7 +131,7 @@ ansible: artifact: apt.package hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -135,7 +139,7 @@ ansible: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -143,7 +147,7 @@ ansible: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -157,7 +161,7 @@ ansible: terraform: - component: docker.engine hosting: - - virtual.machine + - remote.machine weight: 0 reason: Ansible is more specialized. Also using provisioners is a "last resort". details: '"remote-exec" provider' @@ -174,7 +178,7 @@ terraform: details: '"kubernetes_service_v1" resource' - component: ingress hosting: - - virtual.machine + - remote.machine weight: 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' @@ -182,7 +186,7 @@ terraform: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. - component: mysql.database @@ -200,31 +204,35 @@ terraform: - component: mysql.database hosting: - mysql.dbms - - virtual.machine + - remote.machine weight: 0.5 reason: Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"docker_container" and "docker_image" resources' - component: mysql.dbms + artifact: dbms.image hosting: - gcp.cloudsql weight: 1 reason: Terraform provides a declarative module. details: '"google_sql_database_instance" and "google_sql_user" resources' - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 0.5 reason: Kubernetes is more specialized. details: '"kubernetes_deployment_v1" and "kubernetes_service_v1" resources' - component: mysql.dbms + artifact: dbms.image hosting: - - virtual.machine + - remote.machine weight: 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' @@ -232,7 +240,7 @@ terraform: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 0.5 reason: Docker Compose is more specialized. details: '"docker_container" and "docker_image" resources' @@ -254,7 +262,7 @@ terraform: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -262,7 +270,7 @@ terraform: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -277,7 +285,7 @@ terraform: artifact: apt.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -285,7 +293,7 @@ terraform: artifact: tar.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -293,7 +301,7 @@ terraform: artifact: zip.archive hosting: - '*' - - virtual.machine + - remote.machine weight: 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' @@ -318,6 +326,7 @@ kubernetes: weight: 0 reason: Kubernetes Job with imperative parts, while declarative other technologies provide declarative modules. - component: mysql.dbms + artifact: dbms.image hosting: - kubernetes.cluster weight: 1 @@ -335,13 +344,14 @@ compose: hosting: - mysql.dbms - docker.engine - - virtual.machine + - remote.machine weight: 0 reason: One-time use docker container ("fake Kubernetes job") with imperative parts, while other technologies provide declarative modules. - component: mysql.dbms + artifact: dbms.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Docker is the underlying technology. details: docker-compose manifest generated and applied @@ -349,7 +359,7 @@ compose: artifact: docker.image hosting: - docker.engine - - virtual.machine + - remote.machine weight: 1 reason: Docker is the underlying technology. details: docker compose manifest generated and applied diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/lib/shop.component.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/lib/shop.component.yaml index 78b67b04a1..1b55d0ef12 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/lib/shop.component.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/lib/shop.component.yaml @@ -75,7 +75,7 @@ node_types: # ################################################################ - shop.component~service.application#docker.image::ansible@docker.engine->virtual.machine: + shop.component~service.application#docker.image::ansible@docker.engine->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -364,7 +364,7 @@ node_types: app: '{{ SELF.application_name }}' type: ClusterIP delete: exit 0 - shop.component~service.application#tar.archive::ansible@*->virtual.machine: + shop.component~service.application#tar.archive::ansible@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -618,7 +618,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - shop.component~service.application#zip.archive::ansible@*->virtual.machine: + shop.component~service.application#zip.archive::ansible@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -980,7 +980,7 @@ node_types: ansible.builtin.shell: gcloud app services delete {{ SELF.application_name }} --quiet args: executable: /bin/bash - shop.component~software.application#apt.package::ansible@*->virtual.machine: + shop.component~software.application#apt.package::ansible@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -1202,7 +1202,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - shop.component~software.application#tar.archive::ansible@*->virtual.machine: + shop.component~software.application#tar.archive::ansible@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -1428,7 +1428,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - shop.component~software.application#zip.archive::ansible@*->virtual.machine: + shop.component~software.application#zip.archive::ansible@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -1657,7 +1657,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - shop.component~service.application#docker.image::terraform@docker.engine->virtual.machine: + shop.component~service.application#docker.image::terraform@docker.engine->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -1917,7 +1917,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: ClusterIP - shop.component~service.application#tar.archive::terraform@*->virtual.machine: + shop.component~service.application#tar.archive::terraform@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -2111,7 +2111,7 @@ node_types: - sudo bash /tmp/stop-shop.component.sh - sudo bash /tmp/delete-shop.component.sh when: destroy - shop.component~service.application#zip.archive::terraform@*->virtual.machine: + shop.component~service.application#zip.archive::terraform@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -2400,7 +2400,7 @@ node_types: - bucket: ${google_storage_bucket.bucket.name} name: object.zip source: '{{ "project" | get_dir }}/ensemble/{{ ".artifacts::zip_archive::file" | eval }}' - shop.component~software.application#apt.archive::terraform@*->virtual.machine: + shop.component~software.application#apt.archive::terraform@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -2605,7 +2605,7 @@ node_types: - sudo bash /tmp/stop-shop.component.sh - sudo bash /tmp/delete-shop.component.sh when: destroy - shop.component~software.application#tar.archive::terraform@*->virtual.machine: + shop.component~software.application#tar.archive::terraform@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -2796,7 +2796,7 @@ node_types: - sudo bash /tmp/stop-shop.component.sh - sudo bash /tmp/delete-shop.component.sh when: destroy - shop.component~software.application#zip.archive::terraform@*->virtual.machine: + shop.component~software.application#zip.archive::terraform@*->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' @@ -3081,7 +3081,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - shop.component~service.application#docker.image::compose@docker.engine->virtual.machine: + shop.component~service.application#docker.image::compose@docker.engine->remote.machine: derived_from: shop.component metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/lib/tosca-vintner-profile-core.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/lib/tosca-vintner-profile-core.yaml index 52b8da3c39..e4c0368edc 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/lib/tosca-vintner-profile-core.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/lib/tosca-vintner-profile-core.yaml @@ -69,6 +69,9 @@ artifact_types: machine.image: derived_from: artifact description: expects image reference in "file" + dbms.image: + derived_from: artifact + description: expects image reference in "file" interface_types: interface: derived_from: tosca.interfaces.Root @@ -219,8 +222,23 @@ node_types: metadata: vintner_normative: 'true' vintner_abstract: 'true' - virtual.machine: + machine: derived_from: node + metadata: + vintner_normative: 'true' + vintner_abstract: 'true' + properties: + machine_name: + type: string + local.machine: + derived_from: machine + metadata: + vintner_normative: 'true' + capabilities: + host: + type: tosca.capabilities.Compute + remote.machine: + derived_from: machine metadata: vintner_normative: 'true' properties: @@ -257,36 +275,10 @@ node_types: connection: ssh host: eval: .parent::management_address + virtual.machine: + derived_from: remote.machine physical.machine: - derived_from: node - metadata: - vintner_normative: 'true' - properties: - machine_name: - type: string - ports: - type: list - entry_schema: - type: string - flavor: - type: string - default: m1.medium - network: - type: string - ssh_user: - type: string - ssh_key_name: - type: string - ssh_key_file: - type: string - attributes: - management_address: - type: string - application_address: - type: string - capabilities: - host: - type: tosca.capabilities.Compute + derived_from: remote.machine database: derived_from: node metadata: @@ -618,7 +610,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: LoadBalancer - ingress~ingress::ansible@virtual.machine: + ingress~ingress::ansible@remote.machine: derived_from: ingress metadata: vintner_generated: 'true' @@ -746,7 +738,7 @@ node_types: selector: app: '{{ SELF.application_name }}' type: LoadBalancer - ingress~ingress::terraform@virtual.machine: + ingress~ingress::terraform@remote.machine: derived_from: ingress metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/lib/tosca-vintner-profile-extended.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/lib/tosca-vintner-profile-extended.yaml index 2fdc7164fd..d438d48ded 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/lib/tosca-vintner-profile-extended.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/lib/tosca-vintner-profile-extended.yaml @@ -401,9 +401,6 @@ node_types: type: string default: eval: .::dbms_name - dbms_version: - type: string - default: '5.7' dbms_password: type: string dbms_ssl_mode: @@ -461,7 +458,7 @@ node_types: # ################################################################ - nodejs.runtime~software.application#apt.package::ansible@*->virtual.machine: + nodejs.runtime~software.application#apt.package::ansible@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -683,7 +680,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - nodejs.runtime~software.application#tar.archive::ansible@*->virtual.machine: + nodejs.runtime~software.application#tar.archive::ansible@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -900,7 +897,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - nodejs.runtime~software.application#zip.archive::ansible@*->virtual.machine: + nodejs.runtime~software.application#zip.archive::ansible@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -1120,7 +1117,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - nodejs.runtime~software.application#apt.archive::terraform@*->virtual.machine: + nodejs.runtime~software.application#apt.archive::terraform@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -1317,7 +1314,7 @@ node_types: - sudo bash /tmp/stop-nodejs.runtime.sh - sudo bash /tmp/delete-nodejs.runtime.sh when: destroy - nodejs.runtime~software.application#tar.archive::terraform@*->virtual.machine: + nodejs.runtime~software.application#tar.archive::terraform@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -1500,7 +1497,7 @@ node_types: - sudo bash /tmp/stop-nodejs.runtime.sh - sudo bash /tmp/delete-nodejs.runtime.sh when: destroy - nodejs.runtime~software.application#zip.archive::terraform@*->virtual.machine: + nodejs.runtime~software.application#zip.archive::terraform@*->remote.machine: derived_from: nodejs.runtime metadata: vintner_generated: 'true' @@ -1683,7 +1680,7 @@ node_types: - sudo bash /tmp/stop-nodejs.runtime.sh - sudo bash /tmp/delete-nodejs.runtime.sh when: destroy - python.runtime~software.application#apt.package::ansible@*->virtual.machine: + python.runtime~software.application#apt.package::ansible@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -1905,7 +1902,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - python.runtime~software.application#tar.archive::ansible@*->virtual.machine: + python.runtime~software.application#tar.archive::ansible@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2122,7 +2119,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - python.runtime~software.application#zip.archive::ansible@*->virtual.machine: + python.runtime~software.application#zip.archive::ansible@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2342,7 +2339,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - python.runtime~software.application#apt.archive::terraform@*->virtual.machine: + python.runtime~software.application#apt.archive::terraform@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2539,7 +2536,7 @@ node_types: - sudo bash /tmp/stop-python.runtime.sh - sudo bash /tmp/delete-python.runtime.sh when: destroy - python.runtime~software.application#tar.archive::terraform@*->virtual.machine: + python.runtime~software.application#tar.archive::terraform@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2722,7 +2719,7 @@ node_types: - sudo bash /tmp/stop-python.runtime.sh - sudo bash /tmp/delete-python.runtime.sh when: destroy - python.runtime~software.application#zip.archive::terraform@*->virtual.machine: + python.runtime~software.application#zip.archive::terraform@*->remote.machine: derived_from: python.runtime metadata: vintner_generated: 'true' @@ -2905,7 +2902,7 @@ node_types: - sudo bash /tmp/stop-python.runtime.sh - sudo bash /tmp/delete-python.runtime.sh when: destroy - java.runtime~software.application#apt.package::ansible@*->virtual.machine: + java.runtime~software.application#apt.package::ansible@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3127,7 +3124,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - java.runtime~software.application#tar.archive::ansible@*->virtual.machine: + java.runtime~software.application#tar.archive::ansible@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3344,7 +3341,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - java.runtime~software.application#zip.archive::ansible@*->virtual.machine: + java.runtime~software.application#zip.archive::ansible@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3564,7 +3561,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - java.runtime~software.application#apt.archive::terraform@*->virtual.machine: + java.runtime~software.application#apt.archive::terraform@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3761,7 +3758,7 @@ node_types: - sudo bash /tmp/stop-java.runtime.sh - sudo bash /tmp/delete-java.runtime.sh when: destroy - java.runtime~software.application#tar.archive::terraform@*->virtual.machine: + java.runtime~software.application#tar.archive::terraform@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -3944,7 +3941,7 @@ node_types: - sudo bash /tmp/stop-java.runtime.sh - sudo bash /tmp/delete-java.runtime.sh when: destroy - java.runtime~software.application#zip.archive::terraform@*->virtual.machine: + java.runtime~software.application#zip.archive::terraform@*->remote.machine: derived_from: java.runtime metadata: vintner_generated: 'true' @@ -4127,7 +4124,7 @@ node_types: - sudo bash /tmp/stop-java.runtime.sh - sudo bash /tmp/delete-java.runtime.sh when: destroy - dotnet.runtime~software.application#apt.package::ansible@*->virtual.machine: + dotnet.runtime~software.application#apt.package::ansible@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -4349,7 +4346,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - dotnet.runtime~software.application#tar.archive::ansible@*->virtual.machine: + dotnet.runtime~software.application#tar.archive::ansible@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -4566,7 +4563,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - dotnet.runtime~software.application#zip.archive::ansible@*->virtual.machine: + dotnet.runtime~software.application#zip.archive::ansible@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -4786,7 +4783,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - dotnet.runtime~software.application#apt.archive::terraform@*->virtual.machine: + dotnet.runtime~software.application#apt.archive::terraform@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -4983,7 +4980,7 @@ node_types: - sudo bash /tmp/stop-dotnet.runtime.sh - sudo bash /tmp/delete-dotnet.runtime.sh when: destroy - dotnet.runtime~software.application#tar.archive::terraform@*->virtual.machine: + dotnet.runtime~software.application#tar.archive::terraform@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -5166,7 +5163,7 @@ node_types: - sudo bash /tmp/stop-dotnet.runtime.sh - sudo bash /tmp/delete-dotnet.runtime.sh when: destroy - dotnet.runtime~software.application#zip.archive::terraform@*->virtual.machine: + dotnet.runtime~software.application#zip.archive::terraform@*->remote.machine: derived_from: dotnet.runtime metadata: vintner_generated: 'true' @@ -5764,7 +5761,7 @@ node_types: - disable_on_destroy: false project: '{{ SELF.gcp_project }}' service: '{{ SELF.gcp_service }}' - docker.engine~docker.engine::ansible@virtual.machine: + docker.engine~docker.engine::ansible@remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -5809,7 +5806,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - docker.engine~software.application#apt.package::ansible@*->virtual.machine: + docker.engine~software.application#apt.package::ansible@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6031,7 +6028,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - docker.engine~software.application#tar.archive::ansible@*->virtual.machine: + docker.engine~software.application#tar.archive::ansible@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6250,7 +6247,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - docker.engine~software.application#zip.archive::ansible@*->virtual.machine: + docker.engine~software.application#zip.archive::ansible@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6472,7 +6469,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - docker.engine~docker.engine::terraform@virtual.machine: + docker.engine~docker.engine::terraform@remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6520,7 +6517,7 @@ node_types: - curl -sSL https://get.docker.com | sudo sh - sudo groupadd -f docker - sudo usermod -aG docker {{ SELF.os_ssh_user }} - docker.engine~software.application#apt.archive::terraform@*->virtual.machine: + docker.engine~software.application#apt.archive::terraform@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6718,7 +6715,7 @@ node_types: - sudo bash /tmp/stop-docker.engine.sh - sudo bash /tmp/delete-docker.engine.sh when: destroy - docker.engine~software.application#tar.archive::terraform@*->virtual.machine: + docker.engine~software.application#tar.archive::terraform@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -6902,7 +6899,7 @@ node_types: - sudo bash /tmp/stop-docker.engine.sh - sudo bash /tmp/delete-docker.engine.sh when: destroy - docker.engine~software.application#zip.archive::terraform@*->virtual.machine: + docker.engine~software.application#zip.archive::terraform@*->remote.machine: derived_from: docker.engine metadata: vintner_generated: 'true' @@ -7086,7 +7083,7 @@ node_types: - sudo bash /tmp/stop-docker.engine.sh - sudo bash /tmp/delete-docker.engine.sh when: destroy - mysql.dbms~mysql.dbms::ansible@docker.engine->virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::ansible@docker.engine->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7131,7 +7128,7 @@ node_types: - name: start container community.docker.docker_container: name: '{{ SELF.dbms_name }}' - image: mysql:{{ SELF.dbms_version }} + image: mysql:{{ ".artifacts::dbms_image::file" | eval }} network_mode: host env: MYSQL_ROOT_PASSWORD: '{{ SELF.dbms_password | string }}' @@ -7140,7 +7137,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - mysql.dbms~mysql.dbms::ansible@gcp.cloudsql: + mysql.dbms~mysql.dbms#dbms.image::ansible@gcp.cloudsql: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7191,7 +7188,7 @@ node_types: register: instance_info google.cloud.gcp_sql_instance: name: '{{ SELF.dbms_name }}' - database_version: MYSQL_{{ SELF.dbms_version | replace(".", "_") }} + database_version: MYSQL_{{ ".artifacts::dbms_image::file" | eval | replace(".", "_") }} settings: tier: db-f1-micro availability_type: REGIONAL @@ -7234,7 +7231,7 @@ node_types: ansible.builtin.shell: gcloud sql instances delete {{ SELF.dbms_name }} --quiet args: executable: /bin/bash - mysql.dbms~mysql.dbms::ansible@kubernetes.cluster: + mysql.dbms~mysql.dbms#dbms.image::ansible@kubernetes.cluster: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7310,7 +7307,7 @@ node_types: app: '{{ SELF.dbms_name }}' spec: containers: - - image: mysql:{{ SELF.dbms_version }} + - image: mysql:{{ ".artifacts::dbms_image::file" | eval }} name: '{{ SELF.dbms_name }}' env: - name: MYSQL_ROOT_PASSWORD @@ -7335,7 +7332,7 @@ node_types: app: '{{ SELF.dbms_name }}' type: ClusterIP delete: exit 0 - mysql.dbms~mysql.dbms::ansible@virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::ansible@remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7451,7 +7448,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - mysql.dbms~software.application#apt.package::ansible@*->virtual.machine: + mysql.dbms~software.application#apt.package::ansible@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7673,7 +7670,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - mysql.dbms~software.application#tar.archive::ansible@*->virtual.machine: + mysql.dbms~software.application#tar.archive::ansible@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7736,7 +7733,6 @@ node_types: content: |- DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" - name: copy management operation @@ -7895,7 +7891,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - mysql.dbms~software.application#zip.archive::ansible@*->virtual.machine: + mysql.dbms~software.application#zip.archive::ansible@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -7961,7 +7957,6 @@ node_types: content: |- DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" - name: copy management operation @@ -8120,7 +8115,7 @@ node_types: - '--become' - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' - mysql.dbms~mysql.dbms::terraform@docker.engine->virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::terraform@docker.engine->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8200,8 +8195,8 @@ node_types: - MYSQL_ROOT_PASSWORD={{ SELF.dbms_password }} docker_image: image: - - name: mysql:{{ SELF.dbms_version }} - mysql.dbms~mysql.dbms::terraform@gcp.cloudsql: + - name: mysql:{{ ".artifacts::dbms_image::file" | eval }} + mysql.dbms~mysql.dbms#dbms.image::terraform@gcp.cloudsql: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8264,7 +8259,7 @@ node_types: resource: google_sql_database_instance: dbms: - - database_version: MYSQL_{{ SELF.dbms_version | replace(".", "_") }} + - database_version: MYSQL_{{ ".artifacts::dbms_image::file" | eval | replace(".", "_") }} deletion_protection: false name: '{{ SELF.dbms_name }}' root_password: '{{ SELF.dbms_password }}' @@ -8285,7 +8280,7 @@ node_types: instance: ${google_sql_database_instance.dbms.name} name: root password: ${google_sql_database_instance.dbms.root_password} - mysql.dbms~mysql.dbms::terraform@kubernetes.cluster: + mysql.dbms~mysql.dbms#dbms.image::terraform@kubernetes.cluster: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8363,7 +8358,7 @@ node_types: spec: - container: - name: '{{ SELF.dbms_name }}' - image: mysql:{{ SELF.dbms_version }} + image: mysql:{{ ".artifacts::dbms_image::file" | eval }} env: - name: MYSQL_ROOT_PASSWORD value: '{{ SELF.dbms_password }}' @@ -8382,7 +8377,7 @@ node_types: selector: app: '{{ SELF.dbms_name }}' type: ClusterIP - mysql.dbms~mysql.dbms::terraform@virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::terraform@remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8487,7 +8482,7 @@ node_types: remote-exec: - inline: - sudo bash /tmp/install-mysql-dbms.sh {{ SELF.dbms_password }} {{ SELF.application_port }} - mysql.dbms~software.application#apt.archive::terraform@*->virtual.machine: + mysql.dbms~software.application#apt.archive::terraform@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8571,7 +8566,6 @@ node_types: cat < {{ SELF.application_directory }}/.env DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" EOF>> @@ -8688,7 +8682,7 @@ node_types: - sudo bash /tmp/stop-mysql.dbms.sh - sudo bash /tmp/delete-mysql.dbms.sh when: destroy - mysql.dbms~software.application#tar.archive::terraform@*->virtual.machine: + mysql.dbms~software.application#tar.archive::terraform@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8749,7 +8743,6 @@ node_types: cat < {{ SELF.application_directory }}/.env DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" EOF>> @@ -8875,7 +8868,7 @@ node_types: - sudo bash /tmp/stop-mysql.dbms.sh - sudo bash /tmp/delete-mysql.dbms.sh when: destroy - mysql.dbms~software.application#zip.archive::terraform@*->virtual.machine: + mysql.dbms~software.application#zip.archive::terraform@*->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -8936,7 +8929,6 @@ node_types: cat < {{ SELF.application_directory }}/.env DBMS_NAME="{{ SELF.dbms_name }}" APPLICATION_NAME="{{ SELF.application_name }}" - DBMS_VERSION="{{ SELF.dbms_version }}" DBMS_PASSWORD="{{ SELF.dbms_password }}" DBMS_SSL_MODE="{{ SELF.dbms_ssl_mode }}" EOF>> @@ -9062,7 +9054,7 @@ node_types: - sudo bash /tmp/stop-mysql.dbms.sh - sudo bash /tmp/delete-mysql.dbms.sh when: destroy - mysql.dbms~mysql.dbms::kubernetes@kubernetes.cluster: + mysql.dbms~mysql.dbms#dbms.image::kubernetes@kubernetes.cluster: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -9138,7 +9130,7 @@ node_types: app: '{{ SELF.dbms_name }}' spec: containers: - - image: mysql:{{ SELF.dbms_version }} + - image: mysql:{{ ".artifacts::dbms_image::file" | eval }} name: '{{ SELF.dbms_name }}' env: - name: MYSQL_ROOT_PASSWORD @@ -9171,7 +9163,7 @@ node_types: ansible.builtin.pause: seconds: 10 delete: exit 0 - mysql.dbms~mysql.dbms::compose@docker.engine->virtual.machine: + mysql.dbms~mysql.dbms#dbms.image::compose@docker.engine->remote.machine: derived_from: mysql.dbms metadata: vintner_generated: 'true' @@ -9234,7 +9226,7 @@ node_types: services: application: container_name: '{{ SELF.dbms_name }}' - image: mysql:{{ SELF.dbms_version }} + image: mysql:{{ ".artifacts::dbms_image::file" | eval }} network_mode: host environment: MYSQL_ROOT_PASSWORD: '{{ SELF.dbms_password }}' @@ -9250,7 +9242,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - mysql.database~mysql.database::ansible@mysql.dbms->docker.engine->virtual.machine: + mysql.database~mysql.database::ansible@mysql.dbms->docker.engine->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' @@ -9476,7 +9468,7 @@ node_types: ansible.builtin.shell: pkill -f "kubectl port-forward service/{{ HOST.dbms_name }}" args: executable: /usr/bin/bash - mysql.database~mysql.database::ansible@mysql.dbms->virtual.machine: + mysql.database~mysql.database::ansible@mysql.dbms->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' @@ -9534,7 +9526,7 @@ node_types: - '--key-file={{ SELF.os_ssh_key_file }}' - '--user={{ SELF.os_ssh_user }}' delete: exit 0 - mysql.database~mysql.database::terraform@mysql.dbms->docker.engine->virtual.machine: + mysql.database~mysql.database::terraform@mysql.dbms->docker.engine->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' @@ -9761,7 +9753,7 @@ node_types: privileges: - ALL user: ${mysql_user.user.user} - mysql.database~mysql.database::terraform@mysql.dbms->virtual.machine: + mysql.database~mysql.database::terraform@mysql.dbms->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' @@ -9935,7 +9927,7 @@ node_types: args: executable: /usr/bin/bash delete: exit 0 - mysql.database~mysql.database::compose@mysql.dbms->docker.engine->virtual.machine: + mysql.database~mysql.database::compose@mysql.dbms->docker.engine->remote.machine: derived_from: mysql.database metadata: vintner_generated: 'true' diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/tests/elastic/expected.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/tests/elastic/expected.yaml index 358a43d2f6..de7586f390 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/tests/elastic/expected.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/tests/elastic/expected.yaml @@ -63,12 +63,16 @@ topology_template: - host: mysql_dbms mysql_dbms: - type: mysql.dbms~mysql.dbms::terraform@gcp.cloudsql + type: mysql.dbms~mysql.dbms#dbms.image::terraform@gcp.cloudsql properties: dbms_name: unfurl-technology-shop-dbms dbms_password: {get_input: dbms_password} requirements: - host: gcp_cloudsql + artifacts: + dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/tests/kubernetes/expected.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/tests/kubernetes/expected.yaml index 5bd29fb2bf..e79e12d9f6 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/tests/kubernetes/expected.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/tests/kubernetes/expected.yaml @@ -72,12 +72,16 @@ topology_template: - host: mysql_dbms mysql_dbms: - type: mysql.dbms~mysql.dbms::kubernetes@kubernetes.cluster + type: mysql.dbms~mysql.dbms#dbms.image::kubernetes@kubernetes.cluster properties: dbms_name: unfurl-technology-shop-dbms dbms_password: {get_input: dbms_password} requirements: - host: kubernetes_cluster + artifacts: + dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/tests/static-large/expected.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/tests/static-large/expected.yaml index 882bf6eec9..e9705e44a8 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/tests/static-large/expected.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/tests/static-large/expected.yaml @@ -52,7 +52,7 @@ topology_template: ################################################### shop: - type: shop.component~service.application#zip.archive::ansible@*->virtual.machine + type: shop.component~service.application#zip.archive::ansible@*->remote.machine properties: application_name: unfurl-technology-shop application_port: 3000 @@ -72,7 +72,7 @@ topology_template: file: files/shop.source.zip shop_ingress: - type: ingress~ingress::ansible@virtual.machine + type: ingress~ingress::ansible@remote.machine requirements: - application: shop - host: virtual_machine @@ -84,7 +84,7 @@ topology_template: ################################################### database: - type: mysql.database~mysql.database::ansible@mysql.dbms->virtual.machine + type: mysql.database~mysql.database::ansible@mysql.dbms->remote.machine properties: database_name: shop database_user: shop @@ -93,12 +93,16 @@ topology_template: - host: mysql_dbms mysql_dbms: - type: mysql.dbms~mysql.dbms::ansible@virtual.machine + type: mysql.dbms~mysql.dbms#dbms.image::ansible@remote.machine properties: dbms_name: unfurl-technology-shop-dbms dbms_password: {get_input: dbms_password} requirements: - host: virtual_machine + artifacts: + dbms_image: + type: dbms.image + file: 5.7 ################################################### # @@ -107,7 +111,7 @@ topology_template: ################################################### nodejs_runtime: - type: nodejs.runtime~software.application#apt.package::ansible@*->virtual.machine + type: nodejs.runtime~software.application#apt.package::ansible@*->remote.machine requirements: - host: virtual_machine diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/tests/static/expected.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/tests/static/expected.yaml index 96ff4e8fee..d5f55cd954 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/tests/static/expected.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/tests/static/expected.yaml @@ -52,7 +52,7 @@ topology_template: ################################################### shop: - type: shop.component~service.application#zip.archive::ansible@*->virtual.machine + type: shop.component~service.application#zip.archive::ansible@*->remote.machine properties: application_name: unfurl-technology-shop application_port: 3000 @@ -72,7 +72,7 @@ topology_template: file: files/shop.source.zip shop_ingress: - type: ingress~ingress::ansible@virtual.machine + type: ingress~ingress::ansible@remote.machine requirements: - application: shop - host: virtual_machine @@ -84,7 +84,7 @@ topology_template: ################################################### database: - type: mysql.database~mysql.database::ansible@mysql.dbms->virtual.machine + type: mysql.database~mysql.database::ansible@mysql.dbms->remote.machine properties: database_name: shop database_user: shop @@ -93,12 +93,16 @@ topology_template: - host: mysql_dbms mysql_dbms: - type: mysql.dbms~mysql.dbms::ansible@virtual.machine + type: mysql.dbms~mysql.dbms#dbms.image::ansible@remote.machine properties: dbms_name: unfurl-technology-shop-dbms dbms_password: {get_input: dbms_password} requirements: - host: virtual_machine + artifacts: + dbms_image: + type: dbms.image + file: 5.7 ################################################### # @@ -107,7 +111,7 @@ topology_template: ################################################### nodejs_runtime: - type: nodejs.runtime~software.application#apt.package::ansible@*->virtual.machine + type: nodejs.runtime~software.application#apt.package::ansible@*->remote.machine requirements: - host: virtual_machine diff --git a/examples/unfurl-technology---shop---plus-maintenance-automated/variable-service-template.yaml b/examples/unfurl-technology---shop---plus-maintenance-automated/variable-service-template.yaml index d29feed969..9287ccc499 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-automated/variable-service-template.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-automated/variable-service-template.yaml @@ -152,6 +152,10 @@ topology_template: - host: virtual_machine - host: kubernetes_cluster - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---shop---plus-maintenance-manual/variable-service-template.yaml b/examples/unfurl-technology---shop---plus-maintenance-manual/variable-service-template.yaml index d1fa42b669..208053aa70 100644 --- a/examples/unfurl-technology---shop---plus-maintenance-manual/variable-service-template.yaml +++ b/examples/unfurl-technology---shop---plus-maintenance-manual/variable-service-template.yaml @@ -181,6 +181,10 @@ topology_template: - host: virtual_machine - host: kubernetes_cluster - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---shop---plus-original-automated/variable-service-template.yaml b/examples/unfurl-technology---shop---plus-original-automated/variable-service-template.yaml index 3683693ea2..318ada7423 100644 --- a/examples/unfurl-technology---shop---plus-original-automated/variable-service-template.yaml +++ b/examples/unfurl-technology---shop---plus-original-automated/variable-service-template.yaml @@ -124,6 +124,10 @@ topology_template: requirements: - host: virtual_machine - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/examples/unfurl-technology---shop---plus-original-manual/variable-service-template.yaml b/examples/unfurl-technology---shop---plus-original-manual/variable-service-template.yaml index c17196bbb8..12857dcf76 100644 --- a/examples/unfurl-technology---shop---plus-original-manual/variable-service-template.yaml +++ b/examples/unfurl-technology---shop---plus-original-manual/variable-service-template.yaml @@ -141,6 +141,10 @@ topology_template: requirements: - host: virtual_machine - host: gcp_cloudsql + artifacts: + - dbms_image: + type: dbms.image + file: 5.7 ################################################### # diff --git a/src/normative/dialects/unfurl/core/nodes.ts b/src/normative/dialects/unfurl/core/nodes.ts index 4d9ac001b6..e4673e7986 100644 --- a/src/normative/dialects/unfurl/core/nodes.ts +++ b/src/normative/dialects/unfurl/core/nodes.ts @@ -89,7 +89,7 @@ const nodes: RecursivePartial = { }, }, }, - 'virtual.machine': { + 'remote.machine': { capabilities: { ...UnfurlSSHEndpointCapability(), }, diff --git a/src/normative/types/core/artifacts.ts b/src/normative/types/core/artifacts.ts index 1dd3cb0254..bcfce54c46 100644 --- a/src/normative/types/core/artifacts.ts +++ b/src/normative/types/core/artifacts.ts @@ -76,6 +76,13 @@ const artifacts: ArtifactTypeMap = { ...MetadataNormative(), }, }, + 'dbms.image': { + derived_from: 'artifact', + description: 'expects image reference in "file"', + metadata: { + ...MetadataNormative(), + }, + }, } export default artifacts diff --git a/src/normative/types/core/nodes.ts b/src/normative/types/core/nodes.ts index d262fc2e8d..87ab3080c6 100644 --- a/src/normative/types/core/nodes.ts +++ b/src/normative/types/core/nodes.ts @@ -114,45 +114,22 @@ const nodes: NodeTypeMap = { ...MetadataAbstract(), }, }, - 'virtual.machine': { + machine: { derived_from: 'node', metadata: { ...MetadataNormative(), + ...MetadataAbstract(), }, properties: { machine_name: { type: 'string', }, - ports: { - type: 'list', - entry_schema: { - type: 'string', - }, - }, - flavor: { - type: 'string', - default: 'm1.medium', - }, - network: { - type: 'string', - }, - ssh_user: { - type: 'string', - }, - ssh_key_name: { - type: 'string', - }, - ssh_key_file: { - type: 'string', - }, }, - attributes: { - management_address: { - type: 'string', - }, - application_address: { - type: 'string', - }, + }, + 'local.machine': { + derived_from: 'machine', + metadata: { + ...MetadataNormative(), }, capabilities: { host: { @@ -160,8 +137,8 @@ const nodes: NodeTypeMap = { }, }, }, - 'physical.machine': { - derived_from: 'node', + 'remote.machine': { + derived_from: 'machine', metadata: { ...MetadataNormative(), }, @@ -206,6 +183,12 @@ const nodes: NodeTypeMap = { }, }, }, + 'virtual.machine': { + derived_from: 'remote.machine', + }, + 'physical.machine': { + derived_from: 'remote.machine', + }, database: { derived_from: 'node', metadata: { diff --git a/src/normative/types/extended/nodes.ts b/src/normative/types/extended/nodes.ts index 0ababe3adc..e34208a827 100644 --- a/src/normative/types/extended/nodes.ts +++ b/src/normative/types/extended/nodes.ts @@ -455,10 +455,6 @@ const nodes: NodeTypeMap = { application_name: { type: 'string', }, - dbms_version: { - type: 'string', - default: '5.7', - }, dbms_password: { type: 'string', }, diff --git a/src/technologies/plugins/rules/.template.ts b/src/technologies/plugins/rules/.template.ts index 5a99a034ae..6bbabaaf22 100644 --- a/src/technologies/plugins/rules/.template.ts +++ b/src/technologies/plugins/rules/.template.ts @@ -7,7 +7,7 @@ const generator: ImplementationGenerator = { component: 'service.application', technology: 'ansible', artifact: 'zip.archive', - hosting: ['virtual.machine'], + hosting: ['remote.machine'], generate: (name, type) => { return { diff --git a/src/technologies/plugins/rules/generators/docker-engine/index.ts b/src/technologies/plugins/rules/generators/docker-engine/index.ts index 0f2f5c64b1..37846c4803 100644 --- a/src/technologies/plugins/rules/generators/docker-engine/index.ts +++ b/src/technologies/plugins/rules/generators/docker-engine/index.ts @@ -1,3 +1,3 @@ -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [virtualMachine] +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/docker-engine/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/docker-engine/remote-machine/ansible/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/docker-engine/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/docker-engine/remote-machine/ansible/index.ts index b147a934a5..dc02c1852c 100644 --- a/src/technologies/plugins/rules/generators/docker-engine/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/docker-engine/remote-machine/ansible/index.ts @@ -11,7 +11,7 @@ import { const generator: ImplementationGenerator = { component: 'docker.engine', technology: 'ansible', - hosting: ['virtual.machine'], + hosting: ['remote.machine'], weight: 1, reason: 'Primary use case due to the specialization of Ansible.', details: '"ansible.builtin.shell", "ansible.builtin.group", and "ansible.builtin.user" tasks', diff --git a/src/technologies/plugins/rules/generators/docker-engine/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/docker-engine/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/docker-engine/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/docker-engine/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/docker-engine/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/docker-engine/remote-machine/terraform/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/docker-engine/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/docker-engine/remote-machine/terraform/index.ts index e8d09a9ee4..f9b1661f7a 100644 --- a/src/technologies/plugins/rules/generators/docker-engine/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/docker-engine/remote-machine/terraform/index.ts @@ -10,7 +10,7 @@ import { const generator: ImplementationGenerator = { component: 'docker.engine', technology: 'terraform', - hosting: ['virtual.machine'], + hosting: ['remote.machine'], weight: 0, reason: 'Ansible is more specialized. Also using provisioners is a "last resort".', details: '"remote-exec" provider', diff --git a/src/technologies/plugins/rules/generators/index.ts b/src/technologies/plugins/rules/generators/index.ts index a15793f985..50b642f27e 100644 --- a/src/technologies/plugins/rules/generators/index.ts +++ b/src/technologies/plugins/rules/generators/index.ts @@ -5,7 +5,7 @@ import mysqlDatabase from './mysql-database' import mysqlDBMS from './mysql-dbms' import serviceApplication from './service-application' import softwareApplication from './software-application' -import virtualMachine from './virtual-machine' +import remoteMachine from './virtual-machine' export default [ dockerEngine, @@ -15,5 +15,5 @@ export default [ mysqlDBMS, serviceApplication, softwareApplication, - virtualMachine, + remoteMachine, ] diff --git a/src/technologies/plugins/rules/generators/ingress/index.ts b/src/technologies/plugins/rules/generators/ingress/index.ts index b220d71314..9d63bb2693 100644 --- a/src/technologies/plugins/rules/generators/ingress/index.ts +++ b/src/technologies/plugins/rules/generators/ingress/index.ts @@ -1,4 +1,4 @@ import kubernetesCluster from './kubernetes-cluster' -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [kubernetesCluster, virtualMachine] +export default [kubernetesCluster, remoteMachine] diff --git a/src/technologies/plugins/rules/generators/ingress/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/ingress/remote-machine/ansible/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/ingress/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/ingress/remote-machine/ansible/index.ts index ec988ff233..e2d839711e 100644 --- a/src/technologies/plugins/rules/generators/ingress/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/ingress/remote-machine/ansible/index.ts @@ -11,7 +11,7 @@ import { const generator: ImplementationGenerator = { component: 'ingress', technology: 'ansible', - hosting: ['virtual.machine'], + hosting: ['remote.machine'], weight: 1, reason: 'Primary use case due to the specialization of Ansible.', details: diff --git a/src/technologies/plugins/rules/generators/ingress/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/ingress/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/ingress/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/ingress/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/ingress/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/ingress/remote-machine/terraform/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/ingress/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/ingress/remote-machine/terraform/index.ts index 54f1fd778f..ab357213b3 100644 --- a/src/technologies/plugins/rules/generators/ingress/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/ingress/remote-machine/terraform/index.ts @@ -32,7 +32,7 @@ systemctl reload caddy const generator: ImplementationGenerator = { component: 'ingress', technology: 'terraform', - hosting: ['virtual.machine'], + hosting: ['remote.machine'], weight: 0, reason: 'Ansible is more specialized. Also using provisioners is a "last resort".', details: diff --git a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/index.ts b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/index.ts index 0f2f5c64b1..a6f4d21dc1 100644 --- a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/index.ts @@ -1,3 +1,3 @@ -import virtualMachine from './virtual-machine' +import remoteMachine from './virtual-machine' -export default [virtualMachine] +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/ansible/index.ts index bc51eade9b..5d8e6dc51c 100644 --- a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/ansible/index.ts @@ -19,7 +19,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.database', technology: 'ansible', - hosting: ['mysql.dbms', 'docker.engine', 'virtual.machine'], + hosting: ['mysql.dbms', 'docker.engine', 'remote.machine'], weight: 1, reason: 'Primary use case due to the specialization of Ansible.', diff --git a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/compose/index.ts b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/compose/index.ts index fd2c2040eb..7255c84f76 100644 --- a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/compose/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/compose/index.ts @@ -13,7 +13,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.database', technology: 'compose', - hosting: ['mysql.dbms', 'docker.engine', 'virtual.machine'], + hosting: ['mysql.dbms', 'docker.engine', 'remote.machine'], weight: 0, reason: 'One-time use docker container ("fake Kubernetes job") with imperative parts, while other technologies provide declarative modules.', diff --git a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/terraform/index.ts index 7890b2f4f4..02d9e84768 100644 --- a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/docker-engine/virtual-machine/terraform/index.ts @@ -12,7 +12,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.database', technology: 'terraform', - hosting: ['mysql.dbms', 'docker.engine', 'virtual.machine'], + hosting: ['mysql.dbms', 'docker.engine', 'remote.machine'], weight: 0.5, reason: 'Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.', diff --git a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/index.ts b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/index.ts index 44d708e610..c5f5b08145 100644 --- a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/index.ts @@ -1,6 +1,6 @@ import dockerEngine from './docker-engine' import gcpCloudSQL from './gcp-cloudsql' import kubernetesCluster from './kubernetes-cluster' -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [dockerEngine, gcpCloudSQL, kubernetesCluster, virtualMachine] +export default [dockerEngine, gcpCloudSQL, kubernetesCluster, remoteMachine] diff --git a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/remote-machine/ansible/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/remote-machine/ansible/index.ts index a925cb302d..aeb8bee861 100644 --- a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/remote-machine/ansible/index.ts @@ -11,7 +11,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.database', technology: 'ansible', - hosting: ['mysql.dbms', 'virtual.machine'], + hosting: ['mysql.dbms', 'remote.machine'], weight: 1, reason: 'Primary use case due to the specialization of Ansible.', diff --git a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/remote-machine/terraform/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/remote-machine/terraform/index.ts index 0e3ca1ac89..261dccce2c 100644 --- a/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-database/mysql-dbms/remote-machine/terraform/index.ts @@ -10,7 +10,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.database', technology: 'terraform', - hosting: ['mysql.dbms', 'virtual.machine'], + hosting: ['mysql.dbms', 'remote.machine'], weight: 0.5, reason: 'Terraform provides a declarative module. However, Terraform requires an SSH workaround. Ansible is more specialized.', diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/index.ts deleted file mode 100644 index 0f2f5c64b1..0000000000 --- a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import virtualMachine from './virtual-machine' - -export default [virtualMachine] diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/index.ts index 44d708e610..262cc087e7 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/index.ts @@ -1,6 +1,3 @@ -import dockerEngine from './docker-engine' -import gcpCloudSQL from './gcp-cloudsql' -import kubernetesCluster from './kubernetes-cluster' -import virtualMachine from './virtual-machine' +import mysqlDBMSimage from './mysql-dbms-image' -export default [dockerEngine, gcpCloudSQL, kubernetesCluster, virtualMachine] +export default [mysqlDBMSimage] diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/index.ts new file mode 100644 index 0000000000..a6f4d21dc1 --- /dev/null +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/index.ts @@ -0,0 +1,3 @@ +import remoteMachine from './virtual-machine' + +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/ansible/index.ts similarity index 96% rename from src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/ansible/index.ts index d0354e810c..8fc5ae80f0 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/ansible/index.ts @@ -11,7 +11,8 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'ansible', - hosting: ['docker.engine', 'virtual.machine'], + artifact: 'dbms.image', + hosting: ['docker.engine', 'remote.machine'], weight: 0.5, reason: 'Docker Compose is more specialized', details: '"community.docker.docker_container" task', @@ -61,7 +62,7 @@ const generator: ImplementationGenerator = { name: 'start container', 'community.docker.docker_container': { name: '{{ SELF.dbms_name }}', - image: 'mysql:{{ SELF.dbms_version }}', + image: 'mysql:{{ ".artifacts::dbms_image::file" | eval }}', network_mode: 'host', env: { MYSQL_ROOT_PASSWORD: '{{ SELF.dbms_password | string }}', diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/compose/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/compose/index.ts similarity index 97% rename from src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/compose/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/compose/index.ts index 6d32275a94..6dd097ca06 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/compose/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/compose/index.ts @@ -12,7 +12,8 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'compose', - hosting: ['docker.engine', 'virtual.machine'], + artifact: 'dbms.image', + hosting: ['docker.engine', 'remote.machine'], weight: 1, reason: 'Docker is the underlying technology.', details: 'docker-compose manifest generated and applied', @@ -80,7 +81,7 @@ const generator: ImplementationGenerator = { services: { application: { container_name: '{{ SELF.dbms_name }}', - image: 'mysql:{{ SELF.dbms_version }}', + image: 'mysql:{{ ".artifacts::dbms_image::file" | eval }}', network_mode: 'host', environment: { MYSQL_ROOT_PASSWORD: '{{ SELF.dbms_password }}', diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/terraform/index.ts similarity index 96% rename from src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/terraform/index.ts index b087c58dff..cea9c54f49 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/docker-engine/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/docker-engine/virtual-machine/terraform/index.ts @@ -11,7 +11,8 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'terraform', - hosting: ['docker.engine', 'virtual.machine'], + artifact: 'dbms.image', + hosting: ['docker.engine', 'remote.machine'], weight: 0.5, reason: 'Docker Compose is more specialized.', details: '"docker_container" and "docker_image" resources', @@ -100,7 +101,7 @@ const generator: ImplementationGenerator = { docker_image: { image: [ { - name: 'mysql:{{ SELF.dbms_version }}', + name: 'mysql:{{ ".artifacts::dbms_image::file" | eval }}', }, ], }, diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/gcp-cloudsql/ansible/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/gcp-cloudsql/ansible/index.ts similarity index 97% rename from src/technologies/plugins/rules/generators/mysql-dbms/gcp-cloudsql/ansible/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/gcp-cloudsql/ansible/index.ts index d20ba31430..ba1f11e739 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/gcp-cloudsql/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/gcp-cloudsql/ansible/index.ts @@ -10,6 +10,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'ansible', + artifact: 'dbms.image', hosting: ['gcp.cloudsql'], weight: 1, reason: 'Primary use case due to the specialization of Ansible.', @@ -69,7 +70,8 @@ const generator: ImplementationGenerator = { register: 'instance_info', 'google.cloud.gcp_sql_instance': { name: '{{ SELF.dbms_name }}', - database_version: 'MYSQL_{{ SELF.dbms_version | replace(".", "_") }}', + database_version: + 'MYSQL_{{ ".artifacts::dbms_image::file" | eval | replace(".", "_") }}', settings: { tier: 'db-f1-micro', availability_type: 'REGIONAL', diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/gcp-cloudsql/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/gcp-cloudsql/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/mysql-dbms/gcp-cloudsql/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/gcp-cloudsql/index.ts diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/gcp-cloudsql/terraform/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/gcp-cloudsql/terraform/index.ts similarity index 96% rename from src/technologies/plugins/rules/generators/mysql-dbms/gcp-cloudsql/terraform/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/gcp-cloudsql/terraform/index.ts index e6a022fd96..ebb08c30c0 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/gcp-cloudsql/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/gcp-cloudsql/terraform/index.ts @@ -9,6 +9,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'terraform', + artifact: 'dbms.image', hosting: ['gcp.cloudsql'], weight: 1, reason: 'Terraform provides a declarative module.', @@ -86,7 +87,8 @@ const generator: ImplementationGenerator = { google_sql_database_instance: { dbms: [ { - database_version: 'MYSQL_{{ SELF.dbms_version | replace(".", "_") }}', + database_version: + 'MYSQL_{{ ".artifacts::dbms_image::file" | eval | replace(".", "_") }}', deletion_protection: false, name: '{{ SELF.dbms_name }}', root_password: '{{ SELF.dbms_password }}', diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/index.ts new file mode 100644 index 0000000000..c5f5b08145 --- /dev/null +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/index.ts @@ -0,0 +1,6 @@ +import dockerEngine from './docker-engine' +import gcpCloudSQL from './gcp-cloudsql' +import kubernetesCluster from './kubernetes-cluster' +import remoteMachine from './remote-machine' + +export default [dockerEngine, gcpCloudSQL, kubernetesCluster, remoteMachine] diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/ansible/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/ansible/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/ansible/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/ansible/index.ts index d9d1e0eb0a..cc5b114360 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/ansible/index.ts @@ -9,6 +9,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'ansible', + artifact: 'dbms.image', hosting: ['kubernetes.cluster'], weight: 0.5, reason: 'Kubernetes is more specialized.', @@ -96,7 +97,7 @@ const generator: ImplementationGenerator = { spec: { containers: [ { - image: 'mysql:{{ SELF.dbms_version }}', + image: 'mysql:{{ ".artifacts::dbms_image::file" | eval }}', name: '{{ SELF.dbms_name }}', env: [ { diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/index.ts diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/kubernetes/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/kubernetes/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/kubernetes/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/kubernetes/index.ts index 53118ba71f..9b30cba97c 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/kubernetes/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/kubernetes/index.ts @@ -11,6 +11,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'kubernetes', + artifact: 'dbms.image', hosting: ['kubernetes.cluster'], weight: 1, reason: 'Kubernetes is the underlying technology.', @@ -94,7 +95,7 @@ const generator: ImplementationGenerator = { spec: { containers: [ { - image: 'mysql:{{ SELF.dbms_version }}', + image: 'mysql:{{ ".artifacts::dbms_image::file" | eval }}', name: '{{ SELF.dbms_name }}', env: [ { diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/terraform/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/terraform/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/terraform/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/terraform/index.ts index d114209c03..adeafe74d2 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/kubernetes-cluster/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/kubernetes-cluster/terraform/index.ts @@ -9,6 +9,7 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'terraform', + artifact: 'dbms.image', hosting: ['kubernetes.cluster'], weight: 0.5, reason: 'Kubernetes is more specialized.', @@ -106,7 +107,7 @@ const generator: ImplementationGenerator = { container: [ { name: '{{ SELF.dbms_name }}', - image: 'mysql:{{ SELF.dbms_version }}', + image: 'mysql:{{ ".artifacts::dbms_image::file" | eval }}', env: [ { name: 'MYSQL_ROOT_PASSWORD', diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/remote-machine/ansible/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/mysql-dbms/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/remote-machine/ansible/index.ts index 2c0a79d828..309d9c3a62 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/remote-machine/ansible/index.ts @@ -22,7 +22,8 @@ import { const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'ansible', - hosting: ['virtual.machine'], + artifact: 'dbms.image', + hosting: ['remote.machine'], weight: 1, reason: 'Primary use case due to the specialization of Ansible.', details: diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/mysql-dbms/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/mysql-dbms/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/remote-machine/terraform/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/mysql-dbms/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/remote-machine/terraform/index.ts index f8248b274f..e9ed192051 100644 --- a/src/technologies/plugins/rules/generators/mysql-dbms/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/mysql-dbms/mysql-dbms-image/remote-machine/terraform/index.ts @@ -53,7 +53,8 @@ systemctl restart mysql const generator: ImplementationGenerator = { component: 'mysql.dbms', technology: 'terraform', - hosting: ['virtual.machine'], + artifact: 'dbms.image', + hosting: ['remote.machine'], weight: 0, reason: 'Ansible is more specialized. Also using provisioners is a "last resort".', details: diff --git a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/index.ts b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/index.ts index 0f2f5c64b1..37846c4803 100644 --- a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/index.ts @@ -1,3 +1,3 @@ -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [virtualMachine] +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/ansible/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/ansible/index.ts index 994a3d6e4c..3389e62deb 100644 --- a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/ansible/index.ts @@ -13,7 +13,7 @@ const generator: ImplementationGenerator = { component: 'service.application', technology: 'ansible', artifact: 'docker.image', - hosting: ['docker.engine', 'virtual.machine'], + hosting: ['docker.engine', 'remote.machine'], weight: 0.5, reason: 'Docker Compose is more specialized.', details: '"community.docker.docker_container" task', diff --git a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/compose/index.ts b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/compose/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/compose/index.ts rename to src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/compose/index.ts index fae14ac57f..f5e3a4d010 100644 --- a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/compose/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/compose/index.ts @@ -15,7 +15,7 @@ const generator: ImplementationGenerator = { component: 'service.application', technology: 'compose', artifact: 'docker.image', - hosting: ['docker.engine', 'virtual.machine'], + hosting: ['docker.engine', 'remote.machine'], weight: 1, reason: 'Docker is the underlying technology.', details: 'docker compose manifest generated and applied', diff --git a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/terraform/index.ts similarity index 98% rename from src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/terraform/index.ts index ea160fc3a5..fa4ddaebaf 100644 --- a/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/docker-image/docker-engine/remote-machine/terraform/index.ts @@ -12,7 +12,7 @@ const generator: ImplementationGenerator = { component: 'service.application', technology: 'terraform', artifact: 'docker.image', - hosting: ['docker.engine', 'virtual.machine'], + hosting: ['docker.engine', 'remote.machine'], weight: 0.5, reason: 'Docker Compose is more specialized.', details: '"docker_container" and "docker_image" resources', diff --git a/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/index.ts b/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/index.ts index 0f2f5c64b1..37846c4803 100644 --- a/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/index.ts @@ -1,3 +1,3 @@ -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [virtualMachine] +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/remote-machine/ansible/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/remote-machine/ansible/index.ts index 87b8401476..384fd32707 100644 --- a/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/remote-machine/ansible/index.ts @@ -26,7 +26,7 @@ const generator: ImplementationGenerator = { component: 'service.application', technology: 'ansible', artifact, - hosting: ['*', 'virtual.machine'], + hosting: ['*', 'remote.machine'], weight: 1, reason: 'Primary use case due to the specialization of Ansible. Special integration for systemd.', details: diff --git a/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/remote-machine/terraform/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/remote-machine/terraform/index.ts index 0d41140670..57406379d0 100644 --- a/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/tar-archive/asterisk/remote-machine/terraform/index.ts @@ -26,7 +26,7 @@ class Generator extends GeneratorAbstract { component = 'service.application' technology = 'terraform' artifact = 'tar.archive' - hosting = ['*', 'virtual.machine'] + hosting = ['*', 'remote.machine'] weight = 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' diff --git a/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/index.ts b/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/index.ts index 0f2f5c64b1..37846c4803 100644 --- a/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/index.ts @@ -1,3 +1,3 @@ -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [virtualMachine] +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/remote-machine/ansible/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/remote-machine/ansible/index.ts index 0f54618f24..913ae206e2 100644 --- a/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/remote-machine/ansible/index.ts @@ -25,7 +25,7 @@ const generator: ImplementationGenerator = { component: 'service.application', technology: 'ansible', artifact, - hosting: ['*', 'virtual.machine'], + hosting: ['*', 'remote.machine'], weight: 1, reason: 'Primary use case due to the specialization of Ansible. Special integration for systemd.', details: diff --git a/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/remote-machine/terraform/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/remote-machine/terraform/index.ts index b20b646896..2386167efb 100644 --- a/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/service-application/zip-archive/asterisk/remote-machine/terraform/index.ts @@ -26,7 +26,7 @@ class Generator extends GeneratorAbstract { component = 'service.application' technology = 'terraform' artifact = 'zip.archive' - hosting = ['*', 'virtual.machine'] + hosting = ['*', 'remote.machine'] weight = 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' diff --git a/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/index.ts b/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/index.ts index 0f2f5c64b1..37846c4803 100644 --- a/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/index.ts @@ -1,3 +1,3 @@ -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [virtualMachine] +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/remote-machine/ansible/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/remote-machine/ansible/index.ts index a27df69fea..5cca2768b8 100644 --- a/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/remote-machine/ansible/index.ts @@ -18,7 +18,7 @@ const generator: ImplementationGenerator = { component: 'software.application', technology: 'ansible', artifact: 'apt.package', - hosting: ['*', 'virtual.machine'], + hosting: ['*', 'remote.machine'], weight: 1, reason: 'Primary use case due to the specialization of Ansible.', details: diff --git a/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/remote-machine/terraform/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/remote-machine/terraform/index.ts index a7d4f5f024..4a11d4c34f 100644 --- a/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/apt-package/asterisk/remote-machine/terraform/index.ts @@ -22,7 +22,7 @@ class Generator extends GeneratorAbstract { component = 'software.application' technology = 'terraform' artifact = 'apt.archive' - hosting = ['*', 'virtual.machine'] + hosting = ['*', 'remote.machine'] weight = 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' diff --git a/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/index.ts b/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/index.ts index 0f2f5c64b1..37846c4803 100644 --- a/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/index.ts @@ -1,3 +1,3 @@ -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [virtualMachine] +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/remote-machine/ansible/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/remote-machine/ansible/index.ts index 02a2b5b9ec..f38be0edb1 100644 --- a/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/remote-machine/ansible/index.ts @@ -25,7 +25,7 @@ const generator: ImplementationGenerator = { component: 'software.application', technology: 'ansible', artifact, - hosting: ['*', 'virtual.machine'], + hosting: ['*', 'remote.machine'], weight: 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: diff --git a/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/remote-machine/terraform/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/remote-machine/terraform/index.ts index ec9eaa023c..b0cb6e4020 100644 --- a/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/tar-archive/asterisk/remote-machine/terraform/index.ts @@ -25,7 +25,7 @@ class Generator extends GeneratorAbstract { component = 'software.application' technology = 'terraform' artifact = 'tar.archive' - hosting = ['*', 'virtual.machine'] + hosting = ['*', 'remote.machine'] weight = 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' diff --git a/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/index.ts b/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/index.ts index 0f2f5c64b1..37846c4803 100644 --- a/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/index.ts @@ -1,3 +1,3 @@ -import virtualMachine from './virtual-machine' +import remoteMachine from './remote-machine' -export default [virtualMachine] +export default [remoteMachine] diff --git a/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/virtual-machine/ansible/index.ts b/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/remote-machine/ansible/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/virtual-machine/ansible/index.ts rename to src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/remote-machine/ansible/index.ts index 9d89a2548f..b3e14b6ce4 100644 --- a/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/virtual-machine/ansible/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/remote-machine/ansible/index.ts @@ -24,7 +24,7 @@ const generator: ImplementationGenerator = { component: 'software.application', technology: 'ansible', artifact, - hosting: ['*', 'virtual.machine'], + hosting: ['*', 'remote.machine'], weight: 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: diff --git a/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/virtual-machine/index.ts b/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/remote-machine/index.ts similarity index 100% rename from src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/virtual-machine/index.ts rename to src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/remote-machine/index.ts diff --git a/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/virtual-machine/terraform/index.ts b/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/remote-machine/terraform/index.ts similarity index 99% rename from src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/virtual-machine/terraform/index.ts rename to src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/remote-machine/terraform/index.ts index 4270e56b94..90c8e85103 100644 --- a/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/virtual-machine/terraform/index.ts +++ b/src/technologies/plugins/rules/generators/software-application/zip-archive/asterisk/remote-machine/terraform/index.ts @@ -25,7 +25,7 @@ export class Generator extends GeneratorAbstract { component = 'software.application' technology = 'terraform' artifact = 'zip.archive' - hosting = ['*', 'virtual.machine'] + hosting = ['*', 'remote.machine'] weight = 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'