Lors d'un déploiement sur vSphere dans Cloud Assembly, vous pouvez attribuer une adresse IP statique, mais vous devez éviter d'introduire des conflits entre les commandes d'initialisation cloudConfig et les spécifications de personnalisation.
Exemples de conception
Les conceptions suivantes appliquent en toute sécurité une adresse IP statique sans conflit entre les commandes d'initialisation de modèle de cloud et les spécifications de personnalisation. Elle contient toutes le paramètre de réseau assignment: static
.
Concevoir | Exemple de code de modèle de cloud |
---|---|
Attribuer une adresse IP statique à une machine Linux sans code 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}' |
Attribuer une adresse IP statique à une machine Linux avec un code cloud-init qui ne contient pas de commandes d'attribution réseau. REMARQUE : la spécification de personnalisation de vSphere est appliquée que vous définissiez la propriété customizeGuestOs sur true ou omettiez la propriété customizeGuestOs. |
Exemple 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}' Exemple 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}' |
Attribuez une adresse IP statique à une machine Linux avec un code cloud-init contenant des commandes d'attribution réseau. La propriété customizeGuestOs doit être false. |
Exemple 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}' Exemple 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}' |
Lorsque vous basez le déploiement sur une image référencée, attribuez une adresse IP statique à une machine Linux avec un code cloud-init contenant des commandes d'attribution réseau. La propriété customizeGuestOs doit être false. En outre, le modèle de cloud ne doit pas inclure la propriété ovfProperties, ce qui bloque la personnalisation. |
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}' |
Conceptions qui ne fonctionnent pas ou qui peuvent produire des résultats indésirables
- Le code cloud-init ne contient pas de commandes d'attribution réseau et la propriété customizeGuestOs est false.
Ni les commandes d'initialisation ni la spécification de personnalisation ne sont présentes pour configurer les paramètres réseau.
- Le code cloud-init ne contient pas de commandes d'attribution réseau et la propriété ovfProperties est définie.
Les commandes d'initialisation ne sont pas présentes, mais ovfProperties a bloqué la spécification de personnalisation.
- Le code cloud-init contient des commandes d'attribution réseau et la propriété customizeGuestOs est manquante ou définie sur true.
L'application de la spécification de personnalisation est en conflit avec les commandes d'initialisation.
Autres solutions pour cloud-init et les spécifications de personnalisation
Lors d'un déploiement sur vSphere, vous pouvez également personnaliser une image pour résoudre les conflits de cloud-init et de spécifications de personnalisation. Pour plus d'informations, reportez-vous au référentiel externe suivant.