Problemă
După construirea unui șablon Ubuntu 20.04 (a încercat și 21.04) cu Packer, nu pot seta noi setări atunci când instanțiez șablonul cu Terraform. Această configurație nu a avut probleme cu Debian 10.
Ambalator
{
„constructori”: [
{
„CPU-uri”: „{{user `vm-cpu-num`}}”,
„RAM”: „{{user `vm-mem-size`}}”,
„RAM_reserve_all”: adevărat,
"boot_command": [
„<esc><esc><esc><esc>e<wait>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
„<del><del><del><del><del><del><del><del>”,
"linux /casper/vmlinuz --- autoinstall ds=\"nocloud-net;seedfrom=http://{{.HTTPIP}}:{{.HTTPPort}}/\"<enter><wait>",
"initrd /casper/initrd<enter><wait>",
"boot<enter>",
„<introdu><f10><așteptați>”
],
"boot_wait": "3s",
"boot_order": "disc, cdrom",
"cluster": "{{user `cluster`}}",
"convert_to_template": "adevărat",
"datastore": "{{user `datastore`}}",
"disk_controller_type": "pvscsi",
„folder”: „{{utilizator `folder`}}”,
"guest_os_type": "ubuntu64Guest",
"gazdă": "{{utilizator `gazdă`}}",
"http_directory": "http",
"http_port_min": "8000",
"http_port_max": "8000",
"insecure_connection": "adevărat",
"iso_paths": ["{{user `iso-paths`}}"],
„adaptoare_rețea”: [
{
"network": "{{utilizator `network`}}",
"network_card": "vmxnet3"
}
],
"parolă": "{{user `vcenter-password`}}",
"shutdown_command": "echo '{{user `ssh-username`}}' | sudo -S shutdown -P now",
"ssh_username": "{{user `ssh-username`}}",
"ssh_password": "{{user `ssh-password`}}",
"ssh_timeout": "20m",
"ssh_handshake_attempts": "50",
„depozitare”: [
{
"disk_size": "{{user `vm-disk-1-size`}}",
„disk_thin_provisioned”: adevărat
}
],
"type": "vsphere-iso",
"nume utilizator": "{{user `vcenter-username`}}",
"vcenter_server": "{{user `vcenter-server`}}",
"vm_name": "{{user `vm-name`}}"
}
],
„furnizori”: [
{
"tip": "coaja",
"inline": ["curl -sSL https://raw.githubusercontent.com/vmware/cloud-init-vmware-guestinfo/master/install.sh | sudo sh -"]
},
{
"tip": "coaja",
"inline": ["mkdir $HOME/.ssh && echo {{ user `ssh-key` }} > $HOME/.ssh/authorized_keys"]
},
{
"tip": "ansible",
„playbook_file”: „../../ansible/packer.yml”
},
{
"in linie": [
„Echo „Build Template Packer -- Complete””
],
"type": "coaja"
}
]
}
fișier de date utilizator distribuit de către packer
#cloud-config
autoinstalare:
versiunea: 1
local: ro_US
pachete:
- open-vm-tools
- python-is-python3
- cloud-init
tastatură:
layout: en
varianta: noi
reţea:
reţea:
versiunea: 2
ethernet:
ens192:
dhcp4: adevărat
dhcp-identifier: mac
depozitare:
aspect:
nume: lvm
identitate:
Nume gazdă: ubuntu
nume de utilizator: ubuntu
parola: $6$rounds=4096$8dkK1P/oE$2DGKKt0wLlTVJ7USY.0jN9du8FetmEr51yjPyeiR.zKE3DGFcitNL/nF1l62BLJNR87lQZixObuXYny.Mf17K1
ssh:
server de instalare: da
datele utilizatorului:
disable_root: false
comenzi întârziate:
- „sed -i „s/dhcp4: true/&\n dhcp-identifier: mac/” /target/etc/netplan/00-installer-config.yaml”
- echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu
scriptul de curățare numit de Ansible provisioner
#!/bin/sh
set -e
# cloud init: mutați fișiere și modificați permisiunile
#mv /tmp/cloud-init/* /etc/cloud/cloud.cfg.d/
chown -R root:root /etc/cloud/cloud.cfg.d/
# curățați datele cloud-init
rm -rf /var/lib/cloud/*
ln -s /var/lib/cloud/instances /var/lib/cloud/instance
# curățați jurnalele de inițiere în cloud
rm -rf /var/log/cloud-init*
# curățați fișierele tmp
rm -rf /tmp/cloud-init
trunchiați -s 0 /etc/machine-id
rm /var/lib/dbus/machine-id
ln -s /etc/machine-id /var/lib/dbus/machine-id
Terraform
principal.tf
resursă „vsphere_virtual_machine” „vm” {
nume = "${var.hostname}"
#resource_pool_id = "${data.vsphere_compute_cluster.cluster.resource_pool_id}"
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
datastore_id = „${data.vsphere_datastore.datastore.id}”
num_cpus = var.vm_cpus
memorie = var.vm_ram
guest_id = „${data.vsphere_virtual_machine.template.guest_id}”
scsi_type = „${data.vsphere_virtual_machine.template.scsi_type}”
interfata retea {
network_id = „${data.vsphere_network.network.id}”
adapter_type = „${data.vsphere_virtual_machine.template.network_interface_types[0]}”
}
disc {
etichetă = „disc0”
dimensiune = "${var.os_disk_size}"
eagerly_scrub = "${data.vsphere_virtual_machine.template.disks.0.eagerly_scrub}"
thin_provisioned = „${data.vsphere_virtual_machine.template.disks.0.thin_provisioned}”
}
„disc” dinamic {
for_each = var.data_disk ? [1] :[]
continut {
#Toate câmpurile din resursa vsphere_virtual_disk sunt momentan imuabile și forțează o nouă resursă dacă este modificată.
etichetă = „disc1”
atașare = adevărat
cale = „${vsphere_virtual_disk.data-disk[0].vmdk_path}”
unit_number = 1
datastore_id = „${data.vsphere_datastore.datastore.id}”
}
}
extra_config = {
"guestinfo.metadata" = base64gzip(templatefile ("${path.module}/templates/metadata.tmpl", { hostname = var.hostname }))
"guestinfo.metadata.encoding" = "base64"
„guestinfo.userdata” = base64gzip(templatefile(„${path.module}/templates/userdata.tmpl”, {
hostname = var.hostname,
domain = var.domain
}))
"guestinfo.userdata.encoding" = "base64"
}
clona {
template_uuid = „${data.vsphere_virtual_machine.template.id}”
}
}
userdata.tmpl
#cloud-config
preserve_hostname: false
manage_etc_hosts: adevărat
prefer_fqdn_over_hostname: adevărat
fqdn: „${hostname}.${domain}”
runcmd:
- echo hello > /root/hello
- atingeți /root/lol
Cloud-init v. 21.2-3-g899bfaa9-0ubuntu2~21.04.1 terminat la Mar, 28 Sep 2021 15:55:02 +0000. Sursă de date DataSourceNone. Mai sus 19,12 secunde
2021-09-28 15:55:02,449 - cc_final_message.py[AVERTISMENT]: sursă de date alternativă folosită