В проектах облачных шаблонов и развертываниях можно использовать ресурсы сети, безопасности и подсистемы балансировки нагрузки.
Общие данные о параметрах кода проекта облачного шаблона см. в разделе Схема типов ресурсов vRealize Automation.
Здесь приведены примеры ресурсов сетей, безопасности и подсистем балансировки нагрузки в стандартных проектах облачных шаблонов.
Сети
| Сценарий ресурсов | Пример кода проекта облачного шаблона |
|---|---|
| Компьютер vSphere с несколькими сетевыми адаптерами, подключенными к сетям vSphere и NSX, с назначением IP-адреса DHCP | resources:
demo-machine:
type: Cloud.vSphere.Machine
properties:
image: ubuntu
flavor: small
networks:
- network: ${resource["demo-vSphere-Network"].id}
deviceIndex: 0
- network: ${resource["demo-NSX-Network"].id}
deviceIndex: 1
demo-vSphere-Network:
type: Cloud.vSphere.Network
properties:
networkType: existing
demo-NSX-Network:
type: Cloud.NSX.Network
properties:
networkType: outbound
|
Частная сеть NSX, использующая свойство vlanIds, чтобы указать массив из трех сетей VLAN — 123, 456 и 7 |
formatVersion: 1
inputs: {}
resources:
Cloud_Machine_1:
type: Cloud.Machine
properties:
image: test
flavor: test
networks:
- network: '${resource.Cloud_NSX_Network_1.id}'
Cloud_NSX_Network_1:
type: Cloud.NSX.Network
properties:
networkType: private
vlanIds:
- 123
- 456
- 7
|
| Добавление частной сети со статическим IP-адресом для развертывания ВМ Azure | formatVersion: 1
inputs: {}
resources:
Cloud_Azure_Machine_1:
type: Cloud.Machine
properties:
image: photon
flavor: Standard_B1ls
networks:
- network: '${resource.Cloud_Network_1.id}'
assignment: static
address: 10.0.0.45
assignPublicIpAddress: false
Cloud_Network_1:
type: Cloud.Network
properties:
networkType: existing
|
| Назначение статического IP-адреса можно использовать с vRealize Automation IPAM (внутренним продуктом, поставляемым с vRealize Automation, или внешним продуктом на основе комплекта SDK IPAM в vRealize Automation, например для одного из подключаемых модулей Infoblox, доступных в VMware Marketplace). Другие варианты использования |
resources:
demo_vm:
type: Cloud.vSphere.Machine
properties:
image: 'photon'
cpuCount: 1
totalMemoryMB: 1024
networks:
- network: ${resource.demo_nw.id}
assignment: static
demo_nw:
type: Cloud.vSphere.Network
properties:
networkType: existing |
Добавьте или измените правила переадресации портов NAT и DNAT в ресурсе Cloud.NSX.NAT для существующего развертывания. |
resources:
gw:
type: Cloud.NSX.Gateway
properties:
networks:
- ${resource.akout.id}
nat:
type: Cloud.NSX.Nat
properties:
networks:
- ${resource.akout.id}
natRules:
- translatedInstance: ${resource.centos.networks[0].id}
index: 0
protocol: TCP
kind: NAT44
type: DNAT
sourceIPs: any
sourcePorts: 80
translatedPorts: 8080
destinationPorts: 8080
description: edit
- translatedInstance: ${resource.centos.networks[0].id}
index: 1
protocol: TCP
kind: NAT44
type: DNAT
sourceIPs: any
sourcePorts: 90
translatedPorts: 9090
destinationPorts: 9090
description: add
gateway: ${resource.gw.id}
centos:
type: Cloud.vSphere.Machine
properties:
image: WebTinyCentOS65x86
flavor: small
customizationSpec: Linux
networks:
- network: ${resource.akout.id}
assignment: static
akout:
type: Cloud.NSX.Network
properties:
networkType: outbound
constraints:
- tag: nsxt-nat-1-M2
|
| Компьютер в общедоступном облаке для использования внутреннего IP-адреса вместо общедоступного IP-адреса. В этом примере используется конкретный идентификатор сети. Примечание. Вариант |
resources:
wf_proxy:
type: Cloud.Machine
properties:
image: ubuntu 16.04
flavor: small
constraints:
- tag: 'platform:vsphere'
networks:
- network: '${resource.wf_net.id}'
assignPublicIpAddress: false |
| Маршрутизируемая сеть с использованием типа сетевого ресурса NSX. |
Cloud_NSX_Network_1:
type: Cloud.NSX.Network
properties:
networkType: routed |
| Добавьте тег к ресурсу сетевого адаптера компьютера в облачном шаблоне. | formatVersion: 1
inputs: {}
resources:
Cloud_Machine_1:
type: Cloud.vSphere.Machine
properties:
flavor: small
image: ubuntu
networks:
- name: '${resource.Cloud_Network_1.name}'
deviceIndex: 0
tags:
- key: 'nic0'
value: null
- key: internal
value: true
- name: '${resource.Cloud_Network_2.name}'
deviceIndex: 1
tags:
- key: 'nic1'
value: null
- key: internal
value: false |
| Отметьте тегом логические коммутаторы NSX-T для исходящей сети. Теги поддерживаются для NSX-T и VMware Cloud on AWS. Дополнительные сведения об этом сценарии см. в статье блога сообщества Создание тегов в NSX с помощью Cloud Assembly. |
Cloud_NSX_Network_1:
type: Cloud.NSX.Network
properties:
networkType: outbound
tags:
- key: app
value: opencart
|
Группы безопасности
| Сценарий ресурсов | Пример кода проекта облачного шаблона |
|---|---|
| Существующая группа безопасности с тегом ограничения, применяемым к сетевому адаптеру компьютера. Чтобы использовать существующую группу безопасности, введите значение existing для свойства securityGroupType . Для выделения существующих групп безопасности с помощью тегов ограничений ресурсу Cloud.SecurityGroup можно назначить теги. В проекте облачного шаблона нельзя использовать группы безопасности, которые не содержат теги. Теги ограничений необходимо установить для ресурсов группы безопасности |
formatVersion: 1
inputs: {}
resources:
allowSsh_sg:
type: Cloud.SecurityGroup
properties:
securityGroupType: existing
constraints:
- tag: allowSsh
compute:
type: Cloud.Machine
properties:
image: centos
flavor: small
networks:
- network: '${resource.prod-net.id}'
securityGroups:
- '${resource.allowSsh_sg.id}'
prod-net:
type: Cloud.Network
properties:
networkType: existing |
| Группа безопасности по требованию с двумя правилами брандмауэра, показывающими варианты доступа |
resources:
Cloud_SecurityGroup_1:
type: Cloud.SecurityGroup
properties:
securityGroupType: new
rules:
- ports: 5000
source: 'fc00:10:000:000:000:56ff:fe89:48b4'
access: Allow
direction: inbound
name: allow_5000
protocol: TCP
- ports: 7000
source: 'fc00:10:000:000:000:56ff:fe89:48b4'
access: Deny
direction: inbound
name: deny_7000
protocol: TCP
Cloud_vSphere_Machine_1:
type: Cloud.vSphere.Machine
properties:
image: photon
cpuCount: 1
totalMemoryMB: 256
networks:
- network: '${resource.Cloud_Network_1.id}'
assignIPv6Address: true
assignment: static
securityGroups:
- '${resource.Cloud_SecurityGroup_1.id}'
Cloud_Network_1:
type: Cloud.Network
properties:
networkType: existing
|
|
Сложный облачный шаблон с двумя группами безопасности, содержащий следующие элементы:
Этот пример показывает различные комбинации протоколов и портов, служб, значений IP CIDR для источника и назначения, диапазон IP-адресов в качестве источника или назначения, а также параметры для any, IPv6 и (::/0). Для сетевых адаптеров компьютеров можно указать подключенную сеть и группы безопасности. Кроме того, можно указать индекс или IP-адрес сетевого адаптера. |
formatVersion: 1
inputs: {}
resources:
DEMO_ESG : existing security group - security group 1)
type: Cloud.SecurityGroup
properties:
constraints:
- tag: BlockAll
securityGroupType: existing (designation of existing for security group 1)
DEMO_ODSG: (on-demand security group - security group 2))
type: Cloud.SecurityGroup
properties:
rules: (multiple firewall rules in this section)
- name: IN-ANY (rule 1)
source: any
service: any
direction: inbound
access: Deny
- name: IN-SSH (rule 2)
source: any
service: SSH
direction: inbound
access: Allow
- name: IN-SSH-IP (rule 3)
source: 33.33.33.1-33.33.33.250
protocol: TCP
ports: 223
direction: inbound
access: Allow
- name: IPv-6-ANY-SOURCE (rule 4)
source: '::/0'
protocol: TCP
ports: 223
direction: inbound
access: Allow
- name: IN-SSH-IP (rule 5)
source: 44.44.44.1/24
protocol: UDP
ports: 22-25
direction: inbound
access: Allow
- name: IN-EXISTING-SG (rule 6)
source: '${resource["DEMO_ESG"].id}'
protocol: ICMPv6
direction: inbound
access: Allow
- name: OUT-ANY (rule 7)
destination: any
service: any
direction: outbound
access: Deny
- name: OUT-TCP-IPv6 (rule 8)
destination: '2001:0db8:85a3::8a2e:0370:7334/64'
protocol: TCP
ports: 22
direction: outbound
access: Allow
- name: IPv6-ANY-DESTINATION (rule 9)
destination: '::/0'
protocol: UDP
ports: 23
direction: outbound
access: Allow
- name: OUT-UDP-SERVICE (rule 10)
destination: any
service: NTP
direction: outbound
access: Allow
securityGroupType: new (designation of on-demand for security group 2)
DEMO_VC_MACHINE: (machine resource)
type: Cloud.vSphere.Machine
properties:
image: PHOTON
cpuCount: 1
totalMemoryMB: 1024
networks: (Machine network NICs)
- network: '${resource.DEMO_NW.id}'
securityGroups:
- '${resource.DEMO_ODSG.id}'
- '${resource.DEMO_ESG.id}'
DEMO_NETWORK: (network resource)
type: Cloud.vSphere.Network
properties:
networkType: existing
constraints:
- tag: nsx62 |
Подсистемы балансировки нагрузки
| Сценарий ресурсов | Пример кода проекта облачного шаблона |
|---|---|
| Укажите уровень и алгоритм ведения журнала балансировки нагрузки, а также его размер. |
Пример подсистемы балансировки нагрузки NSX, где показано использование уровня ведения журнала, алгоритма и размера: resources:
Cloud_LoadBalancer_1:
type: Cloud.NSX.LoadBalancer
properties:
name: myapp-lb
network: '${appnet-public.name}'
instances: '${wordpress.id}'
routes:
- protocol: HTTP port: '80'
loggingLevel: CRITICAL
algorithm: LEAST_CONNECTION
type: MEDIUM
|
| Свяжите подсистему балансировки нагрузки с именованным компьютером или его сетевым адаптером. Чтобы добавить компьютер в пул подсистемы балансировки нагрузки, можно указать либо В первом примере в развертывании используется параметр Во втором примере в развертывании используется параметр В третьем примере показаны оба параметра, используемые в одном и том же варианте |
Для определения идентификатора компьютера или идентификатора сети компьютеров можно использовать свойство
instances.
|
Добавьте параметры проверки работоспособности в подсистему балансировки нагрузки NSX. К дополнительным вариантам относятся httpMethod, requestBody и responseBody. |
myapp-lb: type: Cloud.NSX.LoadBalancer properties: name: myapp-lb network: '${appnet-public.name}' instances: '${wordpress.id}' routes: - protocol: HTTP port: '80' algorithm: ROUND_ROBIN instanceProtocol: HTTP instancePort: '80' healthCheckConfiguration: protocol: HTTP port: '80' urlPath: /mywordpresssite/wp-admin/install.php intervalSeconds: 60 timeoutSeconds: 10 unhealthyThreshold: 10 healthyThreshold: 2 connectionLimit: '50' connectionRateLimit: '50' maxConnections: '500' minConnections: '' internetFacing: true{code} |
| Сеть по требованию с подсистемой балансировки нагрузки с одним плечом. |
inputs: {}
resources:
mp-existing:
type: Cloud.Network
properties:
name: mp-existing
networkType: existing
mp-wordpress:
type: Cloud.vSphere.Machine
properties:
name: wordpress
count: 2
flavor: small
image: tiny
customizationSpec: Linux
networks:
- network: '${resource["mp-private"].id}'
mp-private:
type: Cloud.NSX.Network
properties:
name: mp-private
networkType: private
constraints:
- tag: nsxt
mp-wordpress-lb:
type: Cloud.LoadBalancer
properties:
name: wordpress-lb
internetFacing: false
network: '${resource.mp-existing.id}'
instances: '${resource["mp-wordpress"].id}'
routes:
- protocol: HTTP
port: '80'
instanceProtocol: HTTP
instancePort: '80'
healthCheckConfiguration:
protocol: HTTP
port: '80'
urlPath: /index.pl
intervalSeconds: 60
timeoutSeconds: 30
unhealthyThreshold: 5
healthyThreshold: 2
|
| Существующая сеть с подсистемой балансировки нагрузки. |
formatVersion: 1
inputs:
count:
type: integer
default: 1
resources:
ubuntu-vm:
type: Cloud.Machine
properties:
name: ubuntu
flavor: small
image: tiny
count: '${input.count}'
networks:
- network: '${resource.Cloud_NSX_Network_1.id}'
Provider_LoadBalancer_1:
type: Cloud.LoadBalancer
properties:
name: OC-LB
routes:
- protocol: HTTP
port: '80'
instanceProtocol: HTTP
instancePort: '80'
healthCheckConfiguration:
protocol: HTTP
port: '80'
urlPath: /index.html
intervalSeconds: 60
timeoutSeconds: 5
unhealthyThreshold: 5
healthyThreshold: 2
network: '${resource.Cloud_NSX_Network_1.id}'
internetFacing: false
instances: '${resource["ubuntu-vm"].id}'
Cloud_NSX_Network_1:
type: Cloud.NSX.Network
properties:
networkType: existing
constraints:
- tag: nsxt24prod |
Подробнее
- vRealize Automation Cloud Assembly Load Balancer with NSX-T Deep Dive (Подсистема балансировки нагрузки vRealize Automation Cloud Assembly с NSX-T Deep Dive)
- Автоматизация сети с помощью Cloud Assembly и NSX — часть 1 (включая использование облачных учетных записей NSX-T и vCenter и CIDR сети)
- Автоматизация сети с помощью Cloud Assembly и NSX — часть 2 (включая использование существующей сети и исходящей сети)
- Автоматизация сети с помощью Cloud Assembly и NSX — часть 3 (включая использование существующих групп безопасности и групп безопасности по требованию)
- Автоматизация сети с помощью Cloud Assembly и NSX — часть 4 (включая использование существующей подсистемы балансировки нагрузки и подсистемы балансировки нагрузки по требованию)