Preskočite na sadržaj

Konfiguracija cloud slike korištenjem cloud-inita

Slike operacijskih sustava namijenje za korištenje u oblaku sadrže sustav cloud-init koji omogućuje postavljanje:

  • zadanih lokalnih i regionalnih postavki
  • imena domaćina
  • zaporki korisnika
  • SSH ključeva koji se mogu koristiti za prijavu
  • diskova koji će biti montirani

Takve slike nude Arch Linux, Fedora, Debian, Ubuntu, BSD-i i brojni drugi.

Hint

Upute u nastavku namijenjene su za Ubuntu. Za Arch Linux ćemo koristiti upute sa stranice cloud-init na ArchWikiju te po potrebi postavljati lock_passwd: False i password: asdf1234. Dodatno, xorriso se izravno koristi za generiranje ISO 9660 slike umjesto cloud-localds.

Kako bismo postavili zaporku korisnika, koristit ćemo alat cloud-localds iz paketa cloud-utils. Taj alat služi za pripremu slike diska u odgovarajućem formatu za cloud-init izvod podataka (engl. data source, odakle dolazi ds u localds) NoCloud (dokumentacija). Taj će se disk uključiti prilikom stvaranja virtualnog stroja u posljednjem koraku kao drugi disk i cloud-init će ga očitati prilikom prvog pokretanja. Alat cloud-localds kod pokretanja bez argumenata pokazuje pomoć pri korištenju:

$ cloud-localds
Usage: cloud-localds [ options ] output user-data [meta-data]

   Create a disk for cloud-init to utilize nocloud

   options:
     -h | --help             show usage
     -d | --disk-format D    disk format to output. default: raw
                             can be anything supported by qemu-img or
                             tar, tar-seed-local, tar-seed-net
     -H | --hostname    H    set hostname in metadata to H
     -f | --filesystem  F    filesystem format (vfat or iso), default: iso9660

     -i | --interfaces  F    write network interfaces file into metadata
     -N | --network-config F write network config file to local datasource
     -m | --dsmode      M    add 'dsmode' ('local' or 'net') to the metadata
                             default in cloud-init is 'net', meaning network is
                             required.
     -V | --vendor-data F    vendor-data file
     -v | --verbose          increase verbosity

   Note, --dsmode, --hostname, and --interfaces are incompatible
   with metadata.

   Example:
    * cat my-user-data
      #cloud-config
      password: passw0rd
      chpasswd: { expire: False }
      ssh_pwauth: True
    * echo "instance-id: $(uuidgen || echo i-abcdefg)" > my-meta-data
    * cloud-localds my-seed.img my-user-data my-meta-data
    * kvm -net nic -net user,hostfwd=tcp::2222-:22 \
         -drive file=disk1.img,if=virtio -drive file=my-seed.img,if=virtio
    * ssh -p 2222 ubuntu@localhost
must provide output, userdata

Pripremimo datoteku user-data tako da je oblika:

#cloud-config
password: asdf1234
chpasswd: { expire: False }
ssh_pwauth: True

Ovom datotekom u konfiguraciji oblaka (cloud-config) koju će cloud-init čitati postavljamo zaporku (password) na asdf1234, označavamo da zaporka nije istekla (chpasswd: { expire: False }) i dozvoljavamo prijavu putem SSH korištenjem zaporke ssh_pwauth: True.

Tip

Dodatne primjere konfiguracije moguće je pronaći u dijelu Cloud config examples službene dokumentacije cloud-inita.

Stvorimo sliku diska naredbom:

$ cloud-localds user-data.img user-data

Ponovimo instalaciju Ubuntua s novom kopijom slike. U posljednjem koraku ćemo iskoristiti mogućnost prilagodbe konfiguracije uključivanjem kvačice pored Customize configuration before install. U dijalogu koji dobijemo odabrati ćemo Add Hardware pa u odjeljku Storage na kartici Details odabrati Select or create custom storage. Klikom na gumb Manage... dobivamo Locate or create storage volume gdje možemo iskoristiti gumb Browse Local kako bismo pronašli upravo stvoreni user-data.img.

Nakon pokretanja Ubuntua moći ćemo se prijaviti sa s korisničkim imenom ubuntu i postavljenom zaporkom.

Author: Vedran Miletić