Încerc să creez un VirtualBox .cutie
imaginea Ubuntu Server 20.04 cu ambalator
. Cutia urmează să fie folosită ulterior de Vagrant. Vreau să am un singur utilizator (vagabond
) cu privilegii de rădăcină care se conectează prin SSH cu pereche de chei publice/private.
Fișierele de configurare sunt după cum urmează:
ubuntu2004.pkr.hcl:
sursă „virtualbox-iso” „autogenerated_1” {
boot_command = ["<enter><wait2><enter><wait><f6><esc><wait>", "autoinstall<wait2> ds=nocloud;", "<wait><enter>"]
boot_wait = "2s"
cd_files = ["./http/user-data", "./http/meta-data"]
cd_label = "citata"
dimensiunea_disc = 8192
guest_additions_path = "VBoxGuestAdditions_{{ .Versiune }}.iso"
guest_os_type = „Ubuntu_64”
fără cap = fals
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 now"
ssh_handshake_attempts = „200”
ssh_password = "ubuntu"
ssh_port = 22
ssh_username = "ubuntu"
ssh_wait_timeout = "10000s"
vboxmanage = [["modifyvm", "{{ .Name }}", "--memory", "1024"], ["modifyvm", "{{ .Name }}", "--cpus", "1 "]]
virtualbox_version_file = ".vbox_version"
vm_name = „packer-ubuntu-20.04-amd64”
}
construi {
surse = ["source.virtualbox-iso.autogenerated_1"]
provider „fișier” {
destinație = "/home/vagrant/authorized_keys"
sursă = „/home/user/.ssh/virtual_id_ed25519”
}
provider „fișier” {
destinație = "/home/vagrant/.ssh/authorized_keys"
sursă = „/home/user/.ssh/virtual_id_ed25519”
}
furnizorul „shell” {
scripturi = ["scripts/init.sh", "scripts/cleanup.sh"]
}
post-procesor „vagrant” {
compression_level = "8"
ieșire = "ubuntu-20.04-<fără valoare>.box"
}
}
Yaml-config cloud este după cum urmează:
./http/user-data:
#cloud-config
autoinstalare:
versiunea: 1
local: ro_US
tastatură:
layout: en
varianta: noi
reţea:
reţea:
versiunea: 2
ethernet:
enp0s3:
dhcp4: adevărat
depozitare:
aspect:
nume: lvm
identitate:
Nume gazdă: ubuntu-server
nume de utilizator: ubuntu
parola: „$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0”
ssh:
server de instalare: da
grupuri:
- ubuntu: [root, sys]
- utilizatori cloud
utilizatori:
- Mod implicit
- nume: vagabond
ssh_authorized_keys:
- ssh-ed25519 <<my-public-key>>
sudo: ALL=(ALL) NOPASSWD:ALL
grupuri: sudo, utilizatori, admin
lock_passwd: adevărat
shell: /bin/bash
datele utilizatorului:
disable_root: false
pachete:
- openssh-server
- esențial pentru construcție
comenzi întârziate:
- echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu
Încarc în mod explicit cheia publică la imaginea cu cele două fişier
furnizorii. Este acest lucru necesar?
Configurația în datele utilizatorului
ar trebui să urmeze documentație.
Când Vagrant pornește aparatul, acesta nu se poate conecta cu SSH. Dacă mă conectez manual la server direct (cu ubuntu
utilizator), văd că nu există niciun utilizator vagabond
, adică getent passwd | grep vagabond
nu returneaza nimic.
Asa de,
- Cum ar trebui să configurez cloud-config, astfel încât după crearea casetei să mă pot conecta cu utilizatorul
vagabond
și cu chei SSH (fără parole)?
- Am nevoie de utilizator
ubuntu
? Dacă nu, cum îl pot elimina?
- Ce este
identitate
parte la datele utilizatorului
face? Pot să elimin parola de acolo, să folosesc chei SSH și să nu mă obosesc să creez în mod explicit un nou utilizator cu chei SSH?
Sper că aceste lucruri se pot face în interiorul fișierelor de configurare și nu prin intermediul scripturilor shell.