LINUX.ORG.RU

Не работает cloud init

 ,


0

2

Здравствуйте! Конфиг main.tf

terraform {
  required_providers {
    libvirt = {
      source = "dmacvicar/libvirt"
      version = "0.6.14"
    }
  }
}

provider "libvirt" {
   uri = "qemu:///system"
}

resource "libvirt_domain" "default" {
  name = "test"
disk {
    volume_id = "${libvirt_volume.ubuntu_vm02_qcow2.id}"
  }

graphics {
    type        = "vnc"
    listen_type = "address"
    listen_address = "192.168.1.250"
  }
}

resource "libvirt_volume" "ubuntu_vm02_qcow2" {
  name = "ubuntu_vm02.qcow2"
  pool = "vhdd"
  source = "http://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
  format = "qcow2"

}

resource "libvirt_cloudinit_disk" "commoninit" {
  name = "commoninit.iso"
  pool = "iso"
  user_data = data.template_file.user_data.rendered
}


data "template_file" "user_data" {
  template = file("add_user.yaml")
}

Код файла add_user.yaml

system_info:
  default_user:
    name: Ubuntu
    plain_text_passwd: 'ubuntu'
    home: /home/ubuntu
    shell: /bin/bash
    lock_passwd: True
    gecos: Ubuntu
    groups: [adm, audio, cdrom, dialout, floppy, video, plugdev, dip, netdev]

Виртуальная машина поднимается, но когда я пытаюсь зайти под Ubuntu с пароелм ubuntu. Меня не пускает.

Где может быть ошибка?


в cloud-init много где

  1. конкретно про пользователей сказано, что при наличии пользователя в системе многие его параметры из cidata будут проигнорированы. на центоси заметнее, на убунте тоже бывает

  2. посмотри /etc/cloud/cloud.cfg.d/ . В обычной (не cloud) убунте инсталлятор создаёт там файлы, запрещающие менять некоторые области (пользователи, сеть, ещё что-то было)

  3. если в списке групп есть несуществующая, конфиг будет молча отброшен

  4. cloud-init кэширует часть данных в /var/lib/cloud/instances/

и если ты что-то поменяешь, без смены имени в meta или без удаления /var/lib/cloud новые версии не применятся

общий совет по отладке:

sudo DI_LOG=stderr /usr/lib/cloud-init/ds-identify --force
sudo cloud-init clean --logs
sudo cloud-init init --local
sudo cloud-init init
router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)

В файле add_user.yaml. Правильно (согласно документации - сам не проверял) так:

users:
  - name: Ubuntu
    plain_text_passwd: 'ubuntu'
    home: /home/ubuntu
    shell: /bin/bash
    lock_passwd: False
    gecos: Ubuntu
    groups: adm, audio, cdrom, dialout, floppy, video, plugdev, dip, netdev
    sudo: ALL=(ALL) ALL

Т.е. были такие ошибки:

  • lock_passwd: True означает, что пароль надо делать невозможным к использованию - поэтому и не пускало
  • отсутствовал ключ sudo - без него у тебя не будет sudo
  • groups - это должна быть строка, а не список
  • структура верхнего уровня названа неправильно: system_info.default_user относится к cloud.cfg, а не к user_data

Правильная дока тут: https://cloudinit.readthedocs.io/en/latest/topics/modules.html#users-and-groups

AEP ★★★★★
()

Впервые вижу чтобы системное имя пользователя было с заглавными символами. Обычно на это ругань.

Может поменять ‘name: Ubuntu’ на ‘name: ubuntu’?

Flotsky ★★
()