Host laitteisto

Virtuaalikone

Harjoitus 1: Hei Ansiblen maailma (Karvinen 2026a)

x) Tiivistelmä

Karvinen 2026: SSH public key (Karvinen 2026b)

Karvinen 2026: Hello Ansible (Karvinen 2026c)

a) Paikallista (Karvinen 2026a)

Asennetaan Debian 13 paikalliselle koneelle virtuaalikoneeksi. Tein tämän jo h0 kohdassa edellisessä tehtävässä (Partanen 2026), josta sen voi käydä katsomassa. TLDR; Asensin Debian 13 Oraclen VirtualBoxiin.

b) Sshecrets (Karvinen 2026a) ja c) Pubkey (Karvinen 2026a)

Joudun käyttämään virtuaali palvelinta, koska jostain syystä virtuaalikone windows sekä linux (cachyos) koneilla ei halunnut toimia. Virtuaalikone jäätyy sisäänkirjautumisen aikana, eikä edes uuden virtuaalikoneen asennus auttanut. Todennäköisesti syynä on mahdollisesti kernel päivitys, jonka tein edellisenä päivänä. Pitää yrittää ensi kerraksi saada lokaali virtuaalikone toimimaan. Saan tehtävät kuitenkin tehtyä virtuaali palvelimella. EDIT 28.10.2026: Ongelma oli audio asetuksissa. Kun otin audion pois päältä virtuaalikoneesta (VM->Settings->Audio->Enable Audio), alkoi se toimia normaalisti. Edes Virtual Boxin täysi uudelleen asennus ei auttanut ongelmaan.

Mutta itse tehtävän pariin. Otan ensiksi yhteyden virtuaali palvelimelle SSH yhteydellä.

Login to VPS via SSH

Sitten asennan SSH demonin virtuaali palvelimelle komennolla sudo apt-get -y install ssh. Olinkin tehny tämän jo aiemmin, joten tarkistin vielä että SSH demoni on käynnissä.

SSH install confirmation

Jotta localhostiin kirjautuminen onnistuu SSH:lla, jouduin lisäämään virtuaali palvelimen julkisen avaimen authorized_keys tiedostoon. Tiedostossa näkyvät myös lokaalin virtuaalikoneen sekä host koneen julkiset avaimet.

Public authorized SSH keys

Kirjaudun nyt SSH avulla localhostiin ja yhteys onnistuu. Varmistan vielä w komennolla, että molemmat istuntoni näkyvät.

Login to localhost via SSH

d) Hei Ansible (Karvinen 2026a)

Tehdään hei maailma Ansiblen avulla. Edellisessä kohdassa jo kokeiltiin ssh yhteys localhostiin. Kokeilin sitä vielä uudestaan ja se toimi edelleen.

Login again to localhost via SSH

Asennetaan seuraavaksi ansible, vim, bash-completion sekä tree demonit. Olen itse jonkin verran käyttänyt vimiä, joten siksi se teksti editoriksi. Bash-completion nopeuttaa komentojen kirjoittamista, mutta jonkin takia en sitä vielä saanut toimimaan. Katsotaan jos sen saisi myöhemmin toimintaan. Tree näyttää kansio rakenteen paremmin kuin esim. pelkkä ls -la. Käytin asentamiseen komentoa sudo apt-get -y install ansible vim bash-completion tree.

Seuraavaksi tein ansible kansion, jonne tulen laittamaan ansibleen liittyvät tiedostot. Tein sinne tiedostot hosts.ini, ansible.cfg sekä site.yml. Lisäsin tiedostoon hosts.ini rivit localhost sekä [all:vars] rivin alle rivin ansible_python_interpreter=/usr/bin/python3, jonka avulla python varoitus saadaan pois. Kokeilin myös ansiblea jo tässä vaiheessa komennolla ansible all -a 'uptime' -i hosts.ini, ja sain oikeanlaisen tulostuksen. Tässä vaiheessa vasta hosts.ini tiedostossa on koodia.

Ansible folder structure and first ansible command

Seuraavaksi lisään tarvittavat koodit ansible.cfg ja site.yml tiedostoihin. Teen myös ensimmäisen roolin. Ansible.cfg tiedostoon lisään rivit [defaults] ja inventory = hosts.ini. inventory = hosts.ini tarkoittaa, että ansible käyttää oletuksena hosts.ini tiedostoa inventorinaan, ja sitä ei tarvitse joka kerta kertoa komennossa. Nyt komento lyhenee muotoon ansible all - 'uptime'.

Ansible.cfg file and testing ansible all -a 'umptime' command

Seuraavaksi lisään roolin hello jokaiselle hostille. Se tapahtuu site.yml tiedostoon. Jotta rooli toimii, pitää myös tehdä roolille oma kansio sekä tasks/main.yml tiedosto. Roolit lisätään polkuun ansible/roles ja kansioon lisätään jokaiselle roolille oma kansio (Karvinen 2026c). Lisään hello roolin kansioon ja sille tasks/main.yml tiedoston. Tiedostoon lisään helpon komennon, jolla kopioidaan slave koneelle tiedosto tmp kansioon ja lisätään tiedostoon yksi rivi tekstiä. Testataan vielä aluksi komennolla ls -la /tmp ettei tmp kansiossa ole jo valmiiksi hello-ansible tiedostoa, jonka jälkeen ajetaan ansible playbook komento. Komennon ajun jälkeen huomataan, että PLAY RECAP osiossa on changed=1, joka kertoo, että yksi asia on muutettu slave koneella. Teen tarkistuksen komennoilla ls -la /tmp ja cat /tmp/hello-ansible, ja huomaan että testi on onnistunut.

Ansible command outcome

Tehtävänanto (Karvinen 2026a)

Lähteet