Puncte:3

Ubuntu Server 20.04 cloud-config adăugarea utilizatorului nu face nimic

drapel be

Î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,

  1. 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)?
  2. Am nevoie de utilizator ubuntu? Dacă nu, cum îl pot elimina?
  3. 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.

Puncte:4
drapel jp

Dacă aveți un identitate secțiunea apoi utilizatorii secțiunea nu se obișnuiește. Nu este documentat în acest fel, așa că este probabil o eroare.

Exemple

O configurație de autoinstalare ca aceasta va crea doar ruttiger utilizator cu o parolă.

#cloud-config
autoinstalare:
  identitate:
    nume gazdă: șablon-focallive
    parola: $6$.c38i4RIqZeF4RtR$hRu2RFep/.6DziHLnRqGOEImb15JT2i.K/F9ojBkK/79zqY30Ll2/xx6QClQfdelLe.ZjpeVYfE8xBBcyLspa/
    nume de utilizator: ruttiger
  datele utilizatorului:
    utilizatori:
      - nume: vagabond
        ssh_authorized_keys:
          - ssh-rsa EXPANDAT
        lock_passwd: adevărat
        shell: /bin/bash
        grupuri: [adm,sudo]
        sudo: ALL=(ALL) NOPASSWD:ALL

O configurație de autoinstalare ca aceasta va crea vagabond utilizator cu autentificare cu cheie SSH. (Nu va fi niciunul ubuntu utilizator creat. Nu este necesar.)

#cloud-config
autoinstalare:
  datele utilizatorului:
    utilizatori:
      - nume: vagabond
        ssh_authorized_keys:
          - ssh-rsa EXPANDAT
        lock_passwd: adevărat
        shell: /bin/bash
        grupuri: [adm,sudo]
        sudo: ALL=(ALL) NOPASSWD:ALL

Cum functioneazã

Programul de instalare creează fișierul /target/etc/cloud/cloud.cfg.d/99-installer.cfg. Acest fișier conține configurația utilizatorului (și altele). Când sistemul instalat pornește pentru prima dată, cloud-init va include configurația din acest fișier și va crea utilizatorul(i).

Note

Am testat folosind Ubuntu 20.04.3 (subicitatea 21.08.2).

Această linie din sursă pare să fie acolo unde utilizatorii configurația este înlocuită de configurația furnizată în identitate secțiune.

drapel be
Mulțumesc! Asta mi-a rezolvat problema perfect,

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.