Bei der Bereitstellung auf vSphere in Cloud Assembly können Sie eine statische IP-Adresse zuweisen, müssen jedoch darauf achten, dass keine Konflikte zwischen cloudConfig-Initialisierungsbefehlen und Anpassungsspezifikationen entstehen.
Beispieldesigns
In den folgenden Designs wird auf sichere Art und Weise eine statische IP-Adresse angewendet, ohne dass Konflikte zwischen Initialisierungsbefehlen für Cloud-Vorlagen und Anpassungsspezifikationen auftreten. Alle enthalten die Netzwerkeinstellung assignment: static
.
Design | Beispiel für Cloud-Vorlagencode |
---|---|
Zuweisen einer statischen IP-Adresse zu einer Linux-Maschine, für die kein cloud-init-Code verfügbar ist |
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}' |
Weisen Sie einer Linux-Maschine mit cloud-init-Code, der keine Netzwerkzuweisungsbefehle enthält, eine statische IP-Adresse zu. HINWEIS: Die vSphere-Anpassungsspezifikation wird angewendet, unabhängig davon, ob Sie die Eigenschaft „customizeGuestOs“ auf „true“ festlegen oder die Eigenschaft „customizeGuestOs“ weglassen. |
Ubuntu-Beispiel 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-Beispiel 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}' |
Weisen Sie einer Linux-Maschine mit cloud-init-Code, der Netzwerkzuweisungsbefehle enthält, eine statische IP-Adresse zu. Die Eigenschaft „customizeGuestOs“muss „false“ sein. |
Ubuntu-Beispiel 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-Beispiel 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}' |
Wenn die Bereitstellung auf einem referenzierten Image beruht, weisen Sie einer Linux-Maschine mit cloud-init-Code, der Netzwerkzuweisungsbefehle enthält, eine statische IP-Adresse zu. Die Eigenschaft „customizeGuestOs“muss „false“ sein. Darüber hinaus darf die Cloud-Vorlage nicht die Eigenschaft „ovfProperties“ enthalten, die die Anpassung blockiert. |
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}' |
Designs, die nicht funktionieren oder zu unerwünschten Ergebnissen führen können
- Der cloud-init-Code enthält keine Netzwerkzuweisungsbefehle, und die Eigenschaft „customizeGuestOs“ ist „false“.
Es sind weder Initialisierungsbefehle noch Anpassungsspezifikationen zum Konfigurieren der Netzwerkeinstellungen vorhanden.
- Der cloud-init-Code enthält keine Netzwerkzuweisungsbefehle, und die Eigenschaft „ovfProperties“ ist festgelegt.
Initialisierungsbefehle sind nicht vorhanden, aber „ovfProperties“ hat die Anpassungsspezifikation blockiert.
- Der cloud-init-Code enthält Netzwerkzuweisungsbefehle, und die Eigenschaft „customizeGuestOs“ fehlt oder ist auf „true“ festgelegt.
Die Anwendung der Anpassungsspezifikation steht in Konflikt mit Initialisierungsbefehlen.
Andere Problemumgehungen für cloud-init und Anpassungsspezifikationen
Bei der Bereitstellung in vSphere können Sie ein Image auch so anpassen, dass Konflikte mit cloud-init und Anpassungsspezifikationen umgangen werden können. Weitere Informationen finden Sie im folgenden externen Repository.