Я пытаюсь создать VirtualBox .коробка
образ Ubuntu Server 20.04 с упаковщик
. Ящик позже будет использоваться Vagrant. Я хочу иметь одного пользователя (бродяга
) с привилегиями root, который входит в систему через SSH с парой открытого/закрытого ключа.
Файлы конфигурации следующие:
Ubuntu2004.pkr.hcl:
источник "virtualbox-iso" "autogenerated_1" {
boot_command = ["<enter><wait2><enter><wait><f6><esc><wait>", "autoinstall<wait2> ds=nocloud;", "<wait><enter>"]
boot_wait = "2 с"
cd_files = ["./http/пользовательские данные", "./http/метаданные"]
cd_label = "cidata"
размер_диска = 8192
guest_additions_path = "VBoxGuestAdditions_{{ .Version }}.iso"
guest_os_type = "Ubuntu_64"
безголовый = ложь
http_directory = "http"
iso_checksum = "sha256:f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98"
iso_urls = ["https://releases.ubuntu.com/focal/ubuntu-20.04.3-live-server-amd64.iso"]
shutdown_command = "echo 'ubuntu'|sudo -S shutdown -P сейчас"
ssh_handshake_attempts = "200"
ssh_password = «убунту»
ssh_порт = 22
ssh_username = "убунту"
ssh_wait_timeout = "10000 с"
vboxmanage = [["modifyvm", "{{ .Name }}", "--memory", "1024"], ["modifyvm", "{{ .Name }}", "--cpus", "1 "]]
virtualbox_version_file = ".vbox_version"
vm_name = "упаковщик-ubuntu-20.04-amd64"
}
строить {
источники = ["source.virtualbox-iso.autogenerated_1"]
поставщик "файл" {
назначение = "/home/vagrant/authorized_keys"
source = "/home/user/.ssh/virtual_id_ed25519"
}
поставщик "файл" {
назначение = "/home/vagrant/.ssh/authorized_keys"
source = "/home/user/.ssh/virtual_id_ed25519"
}
поставщик "оболочки" {
скрипты = ["скрипты/init.sh", "скрипты/cleanup.sh"]
}
постпроцессор "бродяга" {
уровень_компрессии = "8"
вывод = "ubuntu-20.04-<нет значения>.box"
}
}
yaml конфигурации облака выглядит следующим образом:
./http/данные пользователя:
#cloud-config
автоустановка:
версия: 1
локаль: en_US
клавиатура:
макет: en
вариант: мы
сеть:
сеть:
версия: 2
Ethernet:
enp0s3:
DHCP4: правда
место хранения:
макет:
имя: лвм
личность:
имя хоста: ubuntu-сервер
имя пользователя: убунту
пароль: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
СШ:
сервер установки: да
группы:
- Ubuntu: [корень, система]
- облачные пользователи
пользователи:
- По умолчанию
- имя: бродяга
ssh_authorized_keys:
- ssh-ed25519 <<мой открытый ключ>>
судо: ВСЕ = (ВСЕ) NOPASSWD: ВСЕ
группы: sudo, пользователи, администратор
lock_passwd: правда
оболочка: /bin/bash
данные пользователя:
отключить_корень: ложь
пакеты:
- openssh-сервер
- необходимо для сборки
поздние команды:
- echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu
Я явно загружаю открытый ключ на изображение с двумя файл
поставщики. Это необходимо?
Конфигурация в данные пользователя
должны следовать документация.
Когда Vagrant запускает машину, она не может войти в систему с помощью SSH. Если я вручную войду на сервер напрямую (с убунту
пользователя), я вижу, что пользователя нет бродяга
, т.е. получить пароль | бродяга
ничего не возвращает.
Так,
- Как мне настроить облачный конфиг, чтобы после создания ящика я мог войти под пользователем
бродяга
а с ключами SSH (без паролей)?
- Нужен ли мне пользователь
убунту
? Если нет, то как я могу удалить его?
- Что это
личность
часть в данные пользователя
делает? Могу ли я удалить пароль оттуда, использовать ключи SSH и не заморачиваться с созданием явным образом нового пользователя с ключами SSH?
Я надеюсь, что эти вещи можно сделать внутри файлов конфигурации, а не через сценарии оболочки.