Cloud Init com Flatcar Linux – A configuração não se aplica ao passar o arquivo personalizado?

Cloud Init com Flatcar Linux – A configuração não se aplica ao passar o arquivo personalizado?

estou a usarTelmate'sProvedor Terraform paraProxmoxe tentando implantarVagão planomáquinas virtuais Linux usandoInicialização na nuvempassando arquivos viacicustom. Com base em seusexemplo, criei o seguinte arquivo 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
}

Após a execução terraform apply, a VM é criada com sucesso e o Flatcar é inicializado. Se você se conectar ao console via Proxmox, entretanto, a VM mostrará que o endereço IP é recebido via DHCP em vez daquele que forneci. Além disso, a chave SSH não funciona, por isso não consigo me conectar à VM para solucionar problemas.

Se eu comentar a cicustomlinha e simplesmente confiar nas ipconfig0outras opções normais, a VM aparece e minha chave SSH de fato funciona. No entanto, o endereço IP especificado ainda não é utilizado; a VM usa apenas um fornecido pelo DHCP. Apesar de poder acessar a VM, ainda quero usar um arquivo de configuração personalizado do Cloud Init para ter acesso a opções de configuração mais poderosas.

Eu tentei várias combinações do meu cloud-config.ymlarquivo. Incluindo coisas tão simples como:

hostname: test

para coisas mais detalhadas 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

Apesar de tudo isso, minhas chaves SSH nunca funcionam depois que eu passo algo para cicustome, com base no fato de que o nome do host nunca é manipulado, presumo que o Cloud Init simplesmente não esteja recebendo o arquivo de configuração personalizado. Eu tentei passar em ambosConfiguração do Ignition e Container Linuxarquivos formatados.

O Flatcar Linux está quebrado com Proxmox/cicustom? Pesquisar no Google coisas como "flatcar" "proxmox", "coreos" "proxmox", "container linux" "proxmox", "flatcar" "cicustom"etc não parece gerar muitos resultados. Acho que não há muitas pessoas por aí conectando sistemas operacionais Cloud Native com bare metal. hehehe

O que surge, no entanto, éesse roteiro interessante. As linhas 104-132 discutem a criação de um modelo Flatcar/CoreOS para Proxmox. Então alguém já fez isso antes, pelo menos? Quem sabe se eles passaram um arquivo de configuração de inicialização de nuvem personalizado posteriormente?

Alguma ideia?

EDITAR: ------------------------------------------------ ------------

Adicionados logs da user-configdriveunidade systemd quando não passandocicustom

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

EDIÇÃO 2: ----------------------------------------------- -----------

Adicionado o conteúdo dos arquivos referenciados pela unidade Systemd acima.

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 você apontou, manage_etc_hostsé definido como verdadeiro aqui pelo Proxmox.

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 seção contém todas as configurações de rede corretas, porém todas são substituídas pelo DHCP e, portanto, são ignoradas.

core@VM-0 ~ $ cat /media/configdrive/openstack/latest/meta_data.json
{
     "uuid": "e61563c9057e9162c4e14d111fea171379170532",
     "network_config": { "content_path": "/content/0000" }
}

EDITAR 3: ----------------------------------------------- -----------

Adicionada minha tentativa de criar um arquivo Cloud Init personalizado

manage_etc_hosts: false
hostname: "test"
ssh_authorized_keys:
  - REDACTED

EDIÇÃO 4: ----------------------------------------------- -----------

eu seguieste guiabasicamente realizar a mesma coisa diretamente com o qemu em vez de usar o Proxmox. Usando:

Esse 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" }
    }]
  }
}

Ou isto cloud-config.yml:

hostname: test
passwd:
  users:
    - name: tj
      ssh_authorized_keys:
        - REDACTED

ambos produzem o mesmo resultado. Uma máquina virtual não conectável que gira com o nome do host localhost.

  • Aquisão os logs que foram produzidos usando cloud-config.ign.
  • Aquisão os logs que foram produzidos usando cloud-config.yml.

EDITAR 5: ----------------------------------------------- -----------

Esses logs são produzidos user-configdrive.serviceao usar o provedor Telmate em um modelo 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: ----------------------------------------------- -----------

Aquié todo o diário do Systemd desde a primeira saída após usar o cloud-config.ignEDIT 4 com o provedor Telmate.

EDITAR 7: ----------------------------------------------- -----------

Esses qmcomandos produzem uma 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]

dados do usuário.yml:

#cloud-config
hostname: test
manage_etc_hosts: true
ssh_authorized_keys:
  - ssh-rsa REDACTED
chpasswd:
  expire: False
users:
  - default
package_upgrade: true

Passar o mesmo user-data.ymlpara cicustomdentro do proxmox_vm_qemurecurso não parece estar funcionando.

informação relacionada