Voor meer flexibiliteit kunt u expressies aan cloudsjablooncode toevoegen in Cloud Assembly.
Hoe expressies werken
Cloud Assembly-expressies gebruiken de construct ${expressie}, zoals in de volgende voorbeelden wordt weergegeven.
De volgende codevoorbeelden zijn ingekort tot de belangrijkste regels. De volledige, niet-bewerkte cloudsjabloon wordt aan het einde weergegeven.
Voorbeelden
Tijdens de implementatie kan de gebruiker de versleutelde sleutel plakken die nodig is voor externe toegang:
inputs:
sshKey:
type: string
maxLength: 500
resources:
frontend:
type: Cloud.Machine
properties:
remoteAccess:
authentication: publicPrivateKey
sshKey: '${input.sshKey}'
Voor het implementeren in VMware Cloud on AWS de mapnaam instellen op de vereiste naam van Workload:
inputs:
environment:
type: string
enum:
- AWS
- vSphere
- Azure
- VMC
- GCP
default: vSphere
resources:
frontend:
type: Cloud.Machine
properties:
folderName: '${input.environment == "VMC" ? "Workload" : ""}'
Tijdens het implementeren tagt u de machine met de tag env (in kleine letters) die overeenkomt met de geselecteerde omgeving:
inputs:
environment:
type: string
enum:
- AWS
- vSphere
- Azure
- VMC
- GCP
default: vSphere
resources:
frontend:
type: Cloud.Machine
properties:
constraints:
- tag: '${"env:" + to_lower(input.environment)}'
Stel het aantal machines in het front-endcluster in op één (klein) of twee (groot). Houd er rekening mee dat het grote cluster wordt ingesteld op basis van eliminatie:
inputs:
envsize:
type: string
enum:
- Small
- Large
resources:
frontend:
type: Cloud.Machine
properties:
count: '${input.envsize == "Small" ? 1 : 2}'
Machines aan hetzelfde standaardnetwerk koppelen door te binden aan de eigenschap die is gevonden in de netwerkresource:
resources:
frontend:
type: Cloud.Machine
properties:
networks:
- network: '${resource.Cloud_Network_1.name}'
apitier:
type: Cloud.Machine
properties:
networks:
- network: '${resource.Cloud_Network_1.name}'
Cloud_Network_1:
type: Cloud.Network
properties:
name: Default
networkType: existing
Toegangsreferenties versleutelen die zijn verzonden naar de API:
resources:
apitier:
type: Cloud.Machine
properties:
cloudConfig: |
#cloud-config
runcmd:
- export apikey=${base64_encode(input.username:input.password)}
- curl -i -H 'Accept:application/json' -H 'Authorization:Basic :$apikey' http://example.com
Het adres van de API-machine detecteren:
resources:
frontend:
type: Cloud.Machine
properties:
cloudConfig: |
runcmd:
- echo ${resource.apitier.networks[0].address}
apitier:
type: Cloud.Machine
properties:
networks:
- network: '${resource.Cloud_Network_1.name}'
Cloudsjabloon voltooien
inputs:
environment:
type: string
enum:
- AWS
- vSphere
- Azure
- VMC
- GCP
default: vSphere
sshKey:
type: string
maxLength: 500
envsize:
type: string
enum:
- Small
- Large
resources:
frontend:
type: Cloud.Machine
properties:
folderName: '${input.environment == "VMC" ? "Workload" : ""}'
image: ubuntu
flavor: medium
count: '${input.envsize == "Small" ? 1 : 2}'
remoteAccess:
authentication: publicPrivateKey
sshKey: '${input.sshKey}'
cloudConfig: |
packages:
- nginx
runcmd:
- echo ${resource.apitier.networks[0].address}
constraints:
- tag: '${"env:" + to_lower(input.environment)}'
networks:
- network: '${resource.Cloud_Network_1.name}'
apitier:
type: Cloud.Machine
properties:
folderName: '${input.environment == "VMC" ? "Workload" : ""}'
image: ubuntu
flavor: small
cloudConfig: |
#cloud-config
runcmd:
- export apikey=${base64_encode(input.username:input.password)}
- curl -i -H 'Accept:application/json' -H 'Authorization:Basic :$apikey' http://example.com
remoteAccess:
authentication: publicPrivateKey
sshKey: '${input.sshKey}'
constraints:
- tag: '${"env:" + to_lower(input.environment)}'
networks:
- network: '${resource.Cloud_Network_1.name}'
Cloud_Network_1:
type: Cloud.Network
properties:
name: Default
networkType: existing
constraints:
- tag: '${"env:" + to_lower(input.environment)}'