Wanneer u vanuit Automation Assemblerimplementeert in vSphere, kunt u een statisch IP-adres toewijzen, maar moet u ervoor zorgen dat er geen conflicten ontstaan tussen de cloudConfig-initialisatieopdrachten en aanpassingsspecificaties.
Voorbeeldontwerpen
De volgende ontwerpen passen op veilige wijze een statisch IP-adres toe zonder conflicten tussen initialisatieopdrachten voor cloudsjablonen en aanpassingsspecificaties. Ze bevatten allemaal de netwerkinstelling assignment: static.
| Ontwerp | Voorbeeld van een cloudsjablooncode |
|---|---|
| Een statisch IP-adres toewijzen aan een Linux-machine zonder cloud-init-code |
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}'
|
| Wijs een statisch IP-adres toe aan een Linux-machine met cloud-init-code die geen opdrachten voor netwerktoewijzing bevat. OPMERKING: de vSphere-aanpassingsspecificatie wordt toegepast, ongeacht of u de eigenschap customizeGuestOs op waar instelt of de eigenschap customizeGuestOs weglaat. |
Ubuntu-voorbeeld 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}'
CentOS-voorbeeld 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}'
|
| Wijs een statisch IP-adres toe aan een Linux-machine met cloud-init-code die netwerktoewijzingsopdrachten bevat. De eigenschap customizeGuestOs moet onwaar zijn. |
Ubuntu-voorbeeld 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}'
CentOS-voorbeeld 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}'
|
| Wanneer u de implementatie baseert op een verwezen image, wijst u een statisch IP-adres toe aan een Linux-machine met cloud-init-code die netwerktoewijzingsopdrachten bevat. De eigenschap customizeGuestOs moet onwaar zijn. Bovendien mag de cloudsjabloon de eigenschap ovfProperties niet bevatten, omdat deze aanpassing blokkeert. |
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}'
|
Aanpassingen voor dag 2
Net als een eerste implementatie kan een actie voor dag 2 ook een netwerkconfiguratie bevatten. Als u aanpassing tijdens acties voor dag 2 wilt overslaan, voegt u de volgende eigenschap toe:
customizeGuestOsDay2: false
Ontwerpen die niet werken of ongewenste resultaten kunnen opleveren
- De cloud-init-code bevat geen netwerktoewijzingsopdrachten en de eigenschap customizeGuestOs is onwaar.
Er zijn geen initialisatieopdrachten en aanpassingsspecificaties aanwezig om de netwerkinstellingen te configureren.
- De cloud-init-code bevat geen netwerktoewijzingsopdrachten en de eigenschap ovfProperties is ingesteld.
Initialisatieopdrachten zijn niet aanwezig, maar ovfProperties heeft de aanpassingsspecificatie geblokkeerd.
- De cloud-init-code bevat netwerktoewijzingsopdrachten en de eigenschap customizeGuestOs ontbreekt of is ingesteld op waar.
Toepassing van de aanpassingsspecificatie is in strijd met initialisatieopdrachten.
Andere tijdelijke oplossingen voor cloud-init en aanpassingsspecificaties
Wanneer u implementeert op vSphere, kunt u ook een image aanpassen om conflicten met cloud-init en aanpassingsspecificaties te vermijden. Zie de volgende externe opslagplaats voor meer informatie.