
Estoy usandoTelmate'sProveedor de Terraform paraProxmoxy tratando de desplegarVagón planomáquinas virtuales Linux usandoInicio de la nubepasando archivos a través decostumbre. Basado en suejemplo, He creado el siguiente archivo Terraform:
variable "pve_user" {
}
variable "pve_password" {
}
variable "pve_host" {
}
provider "proxmox" {
pm_tls_insecure = true
pm_api_url = "https://SNIP/api2/json"
pm_user = "SNIP"
pm_password = "SNIP"
pm_parallel = 4
}
resource "null_resource" "cloud_init_config_files" {
connection {
type = "ssh"
user = var.pve_user
password = var.pve_password
host = var.pve_host
}
provisioner "file" {
source = "./templates/cloud-config.yml"
destination = "/var/lib/vz/snippets/cloud-config.yml"
}
}
resource "proxmox_vm_qemu" "k8s-masters" {
depends_on = [
null_resource.cloud_init_config_files
]
count = 1
name = "VM-${count.index}"
clone = "VM-Template"
full_clone = true
target_node = "192.168.20.10"
pool = "VM"
cores = 2
sockets = 1
memory = 10240
network {
id = 0
model = "virtio"
bridge = "vmbr0"
tag = 50
}
disk {
id = 0
type = "scsi"
size = 30
storage = "Pool"
storage_type = "zfspool"
backup = true
iothread = true
}
onboot = true
agent = 1
os_type = "cloud-init"
ssh_user = "core"
cicustom = "user=local:snippets/cloud-config.yml"
ipconfig0 = "ip=192.168.50.10/24,gw=192.168.50.1"
sshkeys = "ssh-rsa SNIP"
ssh_private_key = <<EOF
-----BEGIN RSA PRIVATE KEY-----
SNIP
-----END RSA PRIVATE KEY-----
EOF
}
Después de ejecutar terraform apply
, la VM se crea correctamente y Flatcar se inicia. Sin embargo, si se conecta a la consola a través de Proxmox, la VM muestra que la dirección IP se recibió a través de DHCP en lugar de la que proporcioné. Además, la clave SSH no funciona, por lo que no puedo conectarme a la VM para solucionar el problema.
Si comento la cicustom
línea y simplemente confío en ipconfig0
las otras opciones normales, aparece la VM y mi clave SSH de hecho funciona. Sin embargo, la dirección IP especificada todavía no se utiliza; la VM simplemente usa uno proporcionado por DHCP. A pesar de poder acceder a la VM, todavía quiero usar un archivo de configuración de Cloud Init personalizado para poder tener acceso a opciones de configuración más potentes.
Probé varias combinaciones de mi cloud-config.yml
archivo. Incluyendo cosas tan simples como:
hostname: test
a cosas más detalladas como:
storage:
files:
- path: /opt/file1
filesystem: root
contents:
inline: Hello, world!
mode: 0644
user:
id: 500
group:
id: 501
passwd:
users:
- name: core
ssh_authorized_keys:
- ssh-rsa SNIP
A pesar de todo esto, mis claves SSH nunca funcionan después de pasarles algo cicustom
y, basándose en el hecho de que el nombre de host nunca se manipula, supongo que Cloud Init simplemente no recibe el archivo de configuración personalizado. He intentado pasar en ambosConfiguración de Linux de encendido y contenedorarchivos formateados.
¿Flatcar Linux no funciona con Proxmox/cicustom? Buscar en Google cosas como "flatcar" "proxmox"
, "coreos" "proxmox"
, "container linux" "proxmox"
, "flatcar" "cicustom"
etc. no parece arrojar muchos resultados. Supongo que no hay mucha gente que une los sistemas operativos nativos de la nube con el bare metal. jejeje
Lo que surge, sin embargo, eseste guión interesante. Las líneas 104-132 analizan la creación de una plantilla Flatcar/CoreOS para Proxmox. Entonces, ¿alguien más ha hecho esto antes, al menos? ¿Quién sabe si luego pasaron un archivo de configuración de inicio de nube personalizado?
¿Algunas ideas?
EDITAR: ------------------------------------------------ ------------
Se agregaron registros de user-configdrive
la unidad systemd cuando no se pasacicustom
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Checking availability of "cloud-drive"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Fetching user-data from datasource of type "cloud-drive"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Attempting to read from "/media/configdrive/openstack/latest/user_data"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 line 6: warning: unrecognized key "chpasswd"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 line 9: warning: incorrect type for "users[0]" (want struct)
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 line 10: warning: unrecognized key "package_upgrade"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Fetching meta-data from datasource of type "cloud-drive"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Attempting to read from "/media/configdrive/openstack/latest/meta_data.json"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Attempting to read from "/media/configdrive/openstack/content/0000"
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Parsing user-data as cloud-config
Aug 20 16:22:17 localhost coreos-cloudinit[831]: 2020/08/20 16:22:17 Merging cloud-config from meta-data and user-data
Aug 20 16:22:17 VM-0 coreos-cloudinit[831]: 2020/08/20 16:22:17 Set hostname to VM-0
Aug 20 16:22:17 VM-0 coreos-cloudinit[831]: 2020/08/20 16:22:17 Authorized SSH keys for core user
Aug 20 16:22:17 VM-0 coreos-cloudinit[831]: 2020/08/20 16:22:17 Failed to apply cloud-config: Invalid option to manage_etc_hosts
Aug 20 16:22:17 VM-0 systemd[1]: user-configdrive.service: Main process exited, code=exited, status=1/FAILURE
EDITAR 2: ----------------------------------------------- -----------
Se agregó el contenido de los archivos a los que hace referencia la unidad Systemd anterior.
core@VM-0 ~ $ cat /media/configdrive/openstack/latest/user_data
#cloud-config
hostname: VM-0
manage_etc_hosts: true
ssh_authorized_keys:
- REDACTED
chpasswd:
expire: False
users:
- default
package_upgrade: true
Como usted señaló, manage_etc_hosts
Proxmox lo establece en verdadero aquí.
core@VM-0 ~ $ cat /media/configdrive/openstack/content/0000
auto lo
iface lo inet loopback
dns_nameservers 192.168.1.100
dns_search example.com
auto eth0
iface eth0 inet static
address 192.168.50.10
netmask 255.255.255.0
gateway 192.168.50.1
Esta sección contiene toda la configuración de red correcta; sin embargo, DHCP la anula, por lo que se ignora.
core@VM-0 ~ $ cat /media/configdrive/openstack/latest/meta_data.json
{
"uuid": "e61563c9057e9162c4e14d111fea171379170532",
"network_config": { "content_path": "/content/0000" }
}
EDITAR 3: ----------------------------------------------- -----------
Agregué mi intento de crear un archivo Cloud Init personalizado.
manage_etc_hosts: false
hostname: "test"
ssh_authorized_keys:
- REDACTED
EDITAR 4: ----------------------------------------------- -----------
Seguíesta guíaBásicamente, lograr lo mismo directamente con qemu en lugar de usar Proxmox. Usando:
Este cloud-config.ign
:
{
"ignition": { "version": "2.2.0" },
"passwd": {
"users": [
{
"name": "core",
"sshAuthorizedKeys": [
"REDACTED"
]
}
]
},
"storage": {
"files": [{
"filesystem": "root",
"path": "/etc/hostname",
"mode": 420,
"contents": { "source": "data:,test" }
}]
}
}
O esto cloud-config.yml
:
hostname: test
passwd:
users:
- name: tj
ssh_authorized_keys:
- REDACTED
ambos producen el mismo resultado. Una máquina virtual no conectable que gira con el nombre de host localhost
.
- Aquíson los registros que se produjeron utilizando
cloud-config.ign
. - Aquíson los registros que se produjeron utilizando
cloud-config.yml
.
EDITAR 5: ----------------------------------------------- -----------
Estos registros se producen user-configdrive.service
cuando se utiliza el proveedor de Telmate contra una plantilla Flatcar.
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Checking availability of "cloud-drive"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Fetching user-data from datasource of type "cloud-drive"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Attempting to read from "/media/configdrive/openstack/latest/user_data"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Fetching meta-data from datasource of type "cloud-drive"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Attempting to read from "/media/configdrive/openstack/latest/meta_data.json"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: 2020/08/21 21:41:50 Attempting to read from "/media/configdrive/openstack/content/0000"
Aug 21 21:41:50 localhost coreos-cloudinit[795]: Detected an Ignition config. Exiting...
Aug 21 21:41:50 localhost systemd[1]: Started Load cloud-config from /media/configdrive.
EDITAR 6: ----------------------------------------------- -----------
Aquíes el diario completo de Systemd desde el primer resultado después de usar cloud-config.ign
en EDIT 4 con el proveedor de Telmate.
EDITAR 7: ----------------------------------------------- -----------
Estos qm
comandos producen una VM Flatcar funcional usando cicustom
.
qm create 101 --name test --cores 2 --memory 2048 --net0 "virtio,bridge=vmbr0"
qm set 101 --net0 "virtio,bridge=vmbr0,tag=50"
qm importdisk 101 /mnt/RAIDPool_Templates/template/iso/flatcar_production_qemu_image.img FlashPool
qm set 101 --scsihw virtio-scsi-pci --scsi0 FlashPool:vm-101-disk-0 --ide2 FlashPool:cloudinit --boot c --bootdisk scsi0 --serial0 /dev/tty0 --ipconfig0 ip=dhcp --citype configdrive2
qm set 101 --cicustom user=RAIDPool_Templates:snippets/user-data.yml
qm start 101
ssh -i ~/.ssh/sol.milkyway.kubernetes [email protected]
datos de usuario.yml:
#cloud-config
hostname: test
manage_etc_hosts: true
ssh_authorized_keys:
- ssh-rsa REDACTED
chpasswd:
expire: False
users:
- default
package_upgrade: true
Sin embargo, pasar lo mismo user-data.yml
dentro cicustom
del proxmox_vm_qemu
recurso no parece funcionar.