Cuando se implementa en vSphere con Cloud Assembly, puede asignar una dirección IP estática, pero debe tener cuidado de no introducir conflictos entre los comandos de inicialización de cloudConfig y las especificaciones de personalización.
Diseños de muestra
Los siguientes diseños aplican de forma segura una dirección IP estática sin que haya conflictos entre los comandos de inicialización de la plantilla de nube y las especificaciones de personalización. Todos contienen la configuración de red assignment: static
.
Diseño | Código de plantilla de nube de muestra |
---|---|
Asignar una dirección IP estática a una máquina Linux que no tiene código cloud-init |
resources: wpnet: type: Cloud.Network properties: name: wpnet networkType: public constraints: - tag: sqa DBTier: type: Cloud.vSphere.Machine properties: flavor: small image: linux-template networks: - name: '${wpnet.name}' assignment: static network: '${resource.wpnet.id}' |
Asignar una dirección IP estática a una máquina Linux con código cloud-init que no contiene comandos de asignación de red. NOTA: La especificación de personalización de vSphere se aplica si establece la propiedad customizeGuestOs en verdadera u omite la propiedad customizeGuestOs. |
Muestra de Ubuntu resources: wpnet: type: Cloud.Network properties: name: wpnet networkType: public constraints: - tag: sqa DBTier: type: Cloud.vSphere.Machine properties: flavor: small image: ubuntu-template customizeGuestOs: true cloudConfig: | #cloud-config ssh_pwauth: yes chpasswd: list: | root:Pa$$w0rd expire: false write_files: - path: /tmpFile.txt content: | ${resource.wpnet.dns} runcmd: - hostnamectl set-hostname --pretty ${self.resourceName} - touch /etc/cloud/cloud-init.disabled networks: - name: '${wpnet.name}' assignment: static network: '${resource.wpnet.id}' Muestra de CentOS resources: wpnet: type: Cloud.Network properties: name: wpnet networkType: public constraints: - tag: sqa DBTier: type: Cloud.vSphere.Machine properties: flavor: small image: centos-template customizeGuestOs: true cloudConfig: | #cloud-config write_files: - path: /test.txt content: | deploying in power off. then rebooting. networks: - name: '${wpnet.name}' assignment: static network: '${resource.wpnet.id}' |
Asignar una dirección IP estática a una máquina Linux con código cloud-init que contiene comandos de asignación de red. La propiedad customizeGuestOs debe ser falsa. |
Muestra de Ubuntu resources: wpnet: type: Cloud.Network properties: name: wpnet networkType: public constraints: - tag: sqa DBTier: type: Cloud.vSphere.Machine properties: flavor: small image: ubuntu-template customizeGuestOs: false cloudConfig: | #cloud-config write_files: - path: /etc/netplan/99-installer-config.yaml content: | network: version: 2 renderer: networkd ethernets: ens160: addresses: - ${resource.DBTier.networks[0].address}/${resource.wpnet.prefixLength} gateway4: ${resource.wpnet.gateway} nameservers: search: ${resource.wpnet.dnsSearchDomains} addresses: ${resource.wpnet.dns} runcmd: - netplan apply - hostnamectl set-hostname --pretty ${self.resourceName} - touch /etc/cloud/cloud-init.disabled networks: - name: '${wpnet.name}' assignment: static network: '${resource.wpnet.id}' Muestra de CentOS resources: wpnet: type: Cloud.Network properties: name: wpnet networkType: public constraints: - tag: sqa DBTier: type: Cloud.vSphere.Machine properties: flavor: small image: centos-template customizeGuestOs: false cloudConfig: | #cloud-config ssh_pwauth: yes chpasswd: list: | root:VMware1! expire: false runcmd: - nmcli con add type ethernet con-name 'custom ens192' ifname ens192 ip4 ${self.networks[0].address}/${resource.wpnet.prefixLength} gw4 ${resource.wpnet.gateway} - nmcli con mod 'custom ens192' ipv4.dns "${join(resource.wpnet.dns,' ')}" - nmcli con mod 'custom ens192' ipv4.dns-search "${join(resource.wpnet.dnsSearchDomains,',')}" - nmcli con down 'System ens192' ; nmcli con up 'custom ens192' - nmcli con del 'System ens192' - hostnamectl set-hostname --static `dig -x ${self.networks[0].address} +short | cut -d "." -f 1` - hostnamectl set-hostname --pretty ${self.resourceName} - touch /etc/cloud/cloud-init.disabled networks: - name: '${wpnet.name}' assignment: static network: '${resource.wpnet.id}' |
Al basar la implementación en una imagen de referencia, asigne una dirección IP estática a una máquina Linux con código cloud-init que contiene comandos de asignación de red. La propiedad customizeGuestOs debe ser falsa. Además, la plantilla de nube no debe incluir la propiedad ovfProperties, que bloquea la personalización. |
resources: wpnet: type: Cloud.Network properties: name: wpnet networkType: public constraints: - tag: sqa DBTier: type: Cloud.vSphere.Machine properties: flavor: small imageRef: 'https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.ova' customizeGuestOs: false cloudConfig: | #cloud-config ssh_pwauth: yes chpasswd: list: | root:Pa$$w0rd ubuntu:Pa$$w0rd expire: false write_files: - path: /etc/netplan/99-netcfg-vrac.yaml content: | network: version: 2 renderer: networkd ethernets: ens192: dhcp4: no dhcp6: no addresses: - ${resource.DBTier.networks[0].address}/${resource.wpnet.prefixLength} gateway4: ${resource.wpnet.gateway} nameservers: search: ${resource.wpnet.dnsSearchDomains} addresses: ${resource.wpnet.dns} runcmd: - netplan apply - hostnamectl set-hostname --pretty ${self.resourceName} - touch /etc/cloud/cloud-init.disabled networks: - name: '${wpnet.name}' assignment: static network: '${resource.wpnet.id}' |
Diseños que no funcionan o pueden producir resultados no deseados
- El código cloud-init no contiene comandos de asignación de red y la propiedad customizeGuestOs es falsa.
Ni los comandos de inicialización ni las especificaciones de personalización están presentes para configurar los ajustes de red.
- El código cloud-init no contiene comandos de asignación de red y se establece la propiedad ovfProperties.
Los comandos de inicialización no están presentes, pero ovfProperties bloqueó la especificación de personalización.
- El código cloud-init contiene comandos de asignación de red y la propiedad customizeGuestOs no se encuentra o está establecida en verdadera.
La aplicación de la especificación de personalización entra en conflicto con los comandos de inicialización.
Otras soluciones alternativas para cloud-init y especificaciones de personalización
Cuando se implementa en vSphere, también se puede personalizar una imagen como solución alternativa para conflictos entre cloud-init y especificación de personalización. Consulte el siguiente repositorio externo para obtener más información.