Ao implantar no vSphere no Automation Assembler, você pode atribuir um endereço IP estático, mas deve tomar cuidado para não introduzir conflitos entre os comandos de inicialização cloudConfig e especificações de personalização.
Designs de amostra
Os designs a seguir aplicam com segurança um endereço IP estático sem nenhum conflito entre os comandos de inicialização do modelo de nuvem e especificações de personalização. Todos contêm a configuração de rede assignment: static
.
Projetar | Amostra de código de modelo de nuvem |
---|---|
Atribuir um endereço IP estático a uma máquina Linux que não possui 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}' |
Atribua um endereço IP estático a uma máquina Linux com código cloud-init que não contenha comandos de atribuição de rede. OBSERVAÇÃO: a especificação de personalização do vSphere será aplicada se você definir a propriedade customizeGuestOs como true ou omitir a propriedade customizeGuestOs. |
Amostra do 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}' Amostra do 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}' |
Atribua um endereço IP estático a uma máquina Linux com código cloud-init que contenha comandos de atribuição de rede. A propriedade customizeGuestOs deve ser false. |
Amostra do 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}' Amostra do 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}' |
Ao basear a implantação em uma imagem referenciada, atribua um endereço IP estático a uma máquina Linux com código cloud-init que contenha comandos de atribuição de rede. A propriedade customizeGuestOs deve ser false. Além disso, o modelo de nuvem não deve incluir a propriedade ovfProperties, que bloqueia a personalização. |
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}' |
Personalizações de dia 2
Como uma implantação inicial, uma ação de Dia 2 também pode incluir a configuração de rede. Para ignorar a personalização durante ações de Dia 2, adicione a seguinte propriedade:
customizeGuestOsDay2: false
Designs que não funcionam ou podem produzir resultados indesejados
- O código cloud-init não contém comandos de atribuição de rede, e a propriedade customizeGuestOs é false.
Nem os comandos de inicialização, nem especificações de personalização estão presentes para definir as configurações de rede.
- O código cloud-init não contém comandos de atribuição de rede, e a propriedade ovfProperties está definida.
Comandos de inicialização não estão presentes, mas ovfProperties bloqueou a especificação da personalização.
- O código cloud-init contém comandos de atribuição de rede, e a propriedade customizeGuestOs está ausente ou definida como true.
A aplicação da especificação de personalização entra em conflito com os comandos de inicialização.
Outras soluções alternativas para cloud-init e especificações de personalização
Ao implantar no vSphere, você também pode personalizar uma imagem para solucionar conflitos de cloud-init e especificações de personalização. Consulte o seguinte repositório externo para obter mais informações.