Quando si esegue la distribuzione in vSphere in Automation Assembler, è possibile assegnare un indirizzo IP statico, ma è necessario evitare conflitti tra i comandi di inizializzazione di cloudConfig e le specifiche della personalizzazione.
Progettazioni di esempio
Le seguenti progettazioni applicano un indirizzo IP statico senza creare alcun conflitto tra i comandi di inizializzazione del modello cloud e le specifiche della personalizzazione. Tutti contengono l'impostazione di rete assignment: static
.
Progettazione | Codice del modello cloud di esempio |
---|---|
Assegnazione di un indirizzo IP statico a una macchina Linux che non dispone di codice 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}' |
Assegnare un indirizzo IP statico a una macchina Linux con un codice cloud-init che non contiene comandi di assegnazione di rete. NOTA: la specifica di personalizzazione di vSphere viene applicata se si imposta la proprietà customizeGuestOs su true o se si omette la proprietà customizeGuestOs. |
Esempio di 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}' Esempio di 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}' |
Assegnare un indirizzo IP statico a una macchina Linux con codice cloud-init che contiene comandi di assegnazione di rete. La proprietà customizeGuestOs deve essere false. |
Esempio di 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}' Esempio di 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}' |
Quando la distribuzione è basata su un'immagine di riferimento, assegnare un indirizzo IP statico a una macchina Linux con il codice cloud-init che contiene i comandi di assegnazione di rete. La proprietà customizeGuestOs deve essere false. Il modello cloud non deve inoltre includere la proprietà ovfProperties, che blocca la personalizzazione. |
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}' |
Personalizzazioni del giorno 2
Come una distribuzione iniziale, anche un'azione giorno 2 potrebbe includere la configurazione di rete. Per ignorare la personalizzazione durante le azioni giorno 2, aggiungere la proprietà seguente:
customizeGuestOsDay2: false
Progettazioni che non funzionano o possono generare risultati indesiderati
- Il codice cloud-init non contiene comandi di assegnazione di rete e la proprietà customizeGuestOs è false.
Non sono presenti né comandi di inizializzazione né specifiche di personalizzazione per configurare le impostazioni di rete.
- Il codice cloud-init non contiene comandi di assegnazione di rete e la proprietà ovfProperties è impostata.
I comandi di inizializzazione non sono presenti, ma ovfProperties ha bloccato la specifica di personalizzazione.
- Il codice cloud-init contiene i comandi di assegnazione di rete e la proprietà customizeGuestOs non è presente o è impostata su true.
L'applicazione della specifica di personalizzazione è in conflitto con i comandi di inizializzazione.
Altre soluzioni per cloud-init e specifiche di personalizzazione
Quando si esegue la distribuzione in vSphere, è inoltre possibile personalizzare un'immagine per risolvere i conflitti delle specifiche di personalizzazione e di cloud-init. Per ulteriori informazioni, vedere il repository esterno seguente.