Luku 1 · 1.9
Oma cloud-init: VPS:n automaattinen määritys ensimmäisellä käynnistyksellä
cloud-initillä annat asennuksen yhteydessä tiedoston, jonka VPS suorittaa itse ensimmäisellä käynnistyksellä. Näin palvelin asentaa heti vakiopakettisi, luo oman käyttäjäsi ja suorittaa komentosi. Tämä on kätevää, jos asennat usein uudelleen tai haluat aloittaa aina samasta pohjasta. Et tarvitse siihen API:a etkä päätettä.
Mihin sen voi täyttää?
- Avaa VPS-näkymä kohdasta Omat tuotteet.
- Uusi VPS: näet lohkon Asenna VPS:si (katso VPS-palvelimen asennus: käyttöjärjestelmä, salasana ja SSH-avain). Uudelleenasennus: valitse välilehti Lisäasetukset ja napsauta kohdassa Uudelleenasennus painiketta Asenna uudelleen... (katso Uudelleenasennus tai ISO-levyn liittäminen).
- Valitse käyttöjärjestelmä ja anna root-salasana sekä tarvittaessa SSH-avaimesi tavalliseen tapaan.
- Napsauta SSH-avaimen alla kohtaa Oma cloud-init. Kenttä avautuu.
- Liitä tiedostosi kenttään.
- Napsauta asennuspainiketta, esimerkiksi Asenna: Debian 13, tai uudelleenasennuksessa Poista kaikki ja asenna uudelleen.
Root-salasana tai SSH-avain tarvitaan edelleen, myös omaa cloud-initiä käytettäessä. Niillä pääset aina sisään, myös konsolin kautta (katso Konsoli: VPS selaimessasi).
Mitä tiedostossa saa olla?
Kenttä ottaa vastaan user-datan, eli tiedoston, jonka cloud-init lukee ensimmäisellä käynnistyksellä. Ensimmäinen rivi määrää, mistä on kyse:
| Ensimmäinen rivi | Mikä se on? |
|---|---|
#cloud-config | Asetukset YAML-muodossa: paketit, käyttäjät, tiedostot, komennot. Tätä käytät yleensä. |
#!, esimerkiksi #!/bin/bash | Skripti. Se ajetaan kerran root-käyttäjänä ensimmäisen käynnistyksen lopussa. |
#cloud-boothook | Skripti, joka ajetaan hyvin aikaisin käynnistyksessä, joka käynnistyksellä uudelleen. Vain edistyneille. |
## template: jinja | Malli, jossa on cloud-initin muuttujia. Sen alla olevalla rivillä on silloin #cloud-config tai #!. |
- Enintään 256 KB, ja vain tekstiä (UTF-8).
- YAML-muodossa sisennykset tehdään välilyönneillä, ei koskaan sarkaimilla.
- Verkon (IPv4 ja IPv6) hoitaa WebOké. Omaa network-configia ei käytetä, joten älä lisää tiedostoon verkkoasetuksia.
Esimerkki
Tämä tiedosto päivittää kaikki paketit, asentaa htopin ja fail2banin, luo käyttäjän anna SSH-avaimellasi ja sudo-oikeuksilla, antaa palvelimelle oman nimen ja asettaa aikavyöhykkeen:
#cloud-config
hostname: web1
fqdn: web1.example.com
package_update: true
package_upgrade: true
packages:
- htop
- fail2ban
users:
- default
- name: anna
shell: /bin/bash
sudo: "ALL=(ALL) NOPASSWD:ALL"
ssh_authorized_keys:
- ssh-ed25519 AAAAC3Nza... anna@laptop
runcmd:
- timedatectl set-timezone Europe/Amsterdam
Korvaa avain omalla julkisella avaimellasi (katso SSH-avaimen luominen Windowsissa, Macissa ja Linuxissa). Rivi - default säilyttää oletuskäyttäjän, joten lomakkeen root-salasana ja SSH-avain toimivat normaalisti. Ensimmäisen käynnistyksen jälkeen kirjaudut sisään komennolla ssh anna@203.0.113.10. Miten sen jälkeen estät root-kirjautumisen ja määrität fail2banin, kerrotaan artikkeleissa Salasanalla ja rootina kirjautumisen poistaminen käytöstä ja fail2ban arvausyrityksiä vastaan.
Vinkki: Esimerkki on tarkoitettu Debianille ja Ubuntulle. AlmaLinuxissa ja Rocky Linuxissa htop ja fail2ban ovat lisälähteessä EPEL. Jätä niissä packages pois ja lisää kohtaan runcmd ensin dnf install -y epel-release ja sen jälkeen dnf install -y htop fail2ban.
Mitä WebOké antaa itse mukaan?
WebOké antaa aina mukaan isäntänimen, root-salasanan (vain tiivisteenä) ja SSH-avaimesi. Oma tiedostosi yhdistetään näihin. Jos asetat itse users, password, chpasswd tai ssh_authorized_keys, omasi menevät WebOkén antamien edelle.
Huomaa: Jos asetat itse ssh_authorized_keys tai password tiedostosi ylimmälle tasolle, ne korvaavat lomakkeen avaimen ja salasanan. Lisää silloin itse avain, jolla haluat kirjautua, muuten pääset sisään enää vain konsolin kautta.
Onnistuiko?
cloud-init ajetaan kerran, ensimmäisellä käynnistyksellä asennuksen jälkeen. Se voi kestää muutaman minuutin pidempään kuin itse asennus, varsinkin jos paketteja asennetaan. Kirjaudu sisään ja tarkista:
anna@web1:~$ cloud-init status --long
anna@web1:~$ sudo tail -n 30 /var/log/cloud-init-output.log
anna@web1:~$ sudo cloud-init schema --system
cloud-init status --longnäyttäästatus: done, kun kaikki on valmista,running, kun ajo on vielä kesken, jaerror, jos jokin meni pieleen, virheen kanssa. Komennollacloud-init status --waitodotat, kunnes se on valmis.- Tiedostossa
/var/log/cloud-init-output.logon pakettien, komentojen ja skriptien tuloste. Lisätietoja on tiedostossa/var/log/cloud-init.log. cloud-init schema --systemtarkistaa tiedostosi virheiden varalta. Jos YAML ei ole kunnossa, cloud-init ohittaa osat, joita se ei ymmärrä, ilman että asennus epäonnistuu.
Menikö jotain pieleen? Korjaa se käsin palvelimella, tai muokkaa tiedostoasi ja asenna uudelleen. Uudelleenasennus kuitenkin poistaa kaiken VPS:ltäsi.
Hyvä tietää
- Toimii kaikilla luettelon käyttöjärjestelmillä: Ubuntu 24.04 ja 26.04, Debian 12 ja 13, AlmaLinux 9 ja 10 sekä Rocky Linux 9 ja 10.
- Tiedostosi välitetään salattuna, eikä sitä tallenneta VPS:n tehtävähistoriaan. Älä silti lisää siihen salasanoja tai muita salaisuuksia, joita et tarvitse.
- Kaikki mahdollisuudet löytyvät cloud-initin dokumentaatiosta osoitteesta docs.cloud-init.io.
Huomaa: cloud-initisi sisältö on omalla vastuullasi. Tuki ei tarkista tiedostoasi eikä auta sen kirjoittamisessa tai korjaamisessa.
