![Cloud Init com Flatcar Linux – A configuração não se aplica ao passar o arquivo personalizado?](https://rvso.com/image/756228/Cloud%20Init%20com%20Flatcar%20Linux%20%E2%80%93%20A%20configura%C3%A7%C3%A3o%20n%C3%A3o%20se%20aplica%20ao%20passar%20o%20arquivo%20personalizado%3F.png)
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 cicustom
linha e simplesmente confiar nas ipconfig0
outras 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.yml
arquivo. 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 cicustom
e, 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-configdrive
unidade 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.service
ao 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.ign
EDIT 4 com o provedor Telmate.
EDITAR 7: ----------------------------------------------- -----------
Esses qm
comandos 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.yml
para cicustom
dentro do proxmox_vm_qemu
recurso não parece estar funcionando.