Arvutiteaduse instituut
  1. Kursused
  2. 2020/21 sügis
  3. Operatsioonisüsteemid (LTAT.06.001)
EN
Logi sisse

Operatsioonisüsteemid 2020/21 sügis

  • Pealeht
  • Loengud
  • Praktikumid
  • Kodutööd
  • Hinded
  • Osalejad

Ansible (DevOps)

Alates 23.11.2020 toimub aine e-õppe vormis distansilt, õppejõududelt saate abi MS Teams keskkonnas

DevOps on välearendajate hulgast 2009. a. käibele läinud lendsõna, mis tähistab tegijate ja kasutajate senisest tihedama koostöö vorme ja alasid: - arendusfilosoofiat, -kultuuri ja -keskkonda - arendusprotsessi - instrumente

Käesolev praktikum sisaldab võrreldes varasematega rohkem ise-seisva mõtlemise kohti (nn. probleemipõhist õpet). Osa tegevusi oleme varasemates praktikumides ka juba sooritanud ja vajadusel saate tagasi pöörduda vastavate juhendite juurde abi saamiseks. Praktikumi eesmärgiks on teha esmane tutvus DevOps tööriistaga Ansible ja seal läbi teha lihtne näide. Ansible võimaldab ühenduse luua üle mitme erineva liidese, kuid praktikumis kasutame ssh ühendust mis on levinuim Linux masinate haldamiseks.

Käesolevas praktikumis vajame kahte Ubuntu virtuaalmasinat (võite kasutada olemasolevat OS_perenimi masinat või soovi korral veebist alla laadida uue Ubuntu virtuaalmasina Virtualbox eelvalmistatud ova faili).

Tegevusjuhis:

  1. Tee OS_perenimi virtuaalmasinast kloon nimega OS_perenimi_kloon (kloonile loo uued MAC aadressid). PS! Kui teil on eelmisest nädalast kloon olemas pole vaja uuesti teha.
  2. OS_perenimi ja OS_Perenimi_kloon võrgühendus seadista Virtualbox seadetest bridge mode.
  3. Käivita OS_perenimi ja OS_Perenimi_kloon Ubuntu operatsioonisüsteemiga
  4. Veendu, et mõlemad virtuaalmasinad said õige IP-aadressi (klassis: 192.168.1.X algusega)
  5. OS_perenimi virtuaalmasinas paigalda ansible
    • veendu et järgnevad käsud käivituksid vigadeta
    • Rohkem abi https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#basics-what-will-be-installed
$ sudo apt update
$ sudo apt install ansible
$ ansible localhost -m ping

NB! kui sudo apt update annab veateate, et mingi repositoorium ei ole Ubuntu focal fossa ühilduv tuleks sisestada käsk sudo rm /etc/apt/sources.list.d/* , mis eemaldab aegunud repositooriumid uusimast Ubuntu 20.4.1 ja edasi Linuxist, kus ei saa enam mugavalt väliseid repositooriume lisada.

  1. OS_perenimi lisa faili /etc/ansible/hosts lõppu järgnevad 2 rida, kus [osclone] määrab ära arvutite grupi nime ja 192.168.1.X on teie OS_perenimi_kloon IP aadress
[osclone]
192.168.1.X
  1. OS_perenimi virtuaalmasinas paigalda sshpass (apt install sshpass)
  2. OS_Perenimi_kloon paigalda ssh-serveri tarkvara (apt install ssh)
  3. OS_Perenimi_kloon muuda arvuti nimi (hostname) kujule OS-Perenimi-kloon
    • hostnamectl , sudo hostnamectl set-hostname OS-perenimi-kloon , sudo nano /etc/hosts
  4. OS_Perenimi_kloon virtuaalmasinas loo uus kasutaja nimega ansibleuser käsuga adduser ja parooliks sea ansible12345. NB! Ärge kasutage käsku useradd, mis ei tee automaatselt kasutajale kodukausta ja seadista parooli, sest muidu saate hiljem veateate, kui Ansible üritab /home/ansibleuser nimelisse kausta kirjutada aga ei saa.
  5. Luba kasutajal ansibleuser käivitada sudo käske ilma parooli sisestamata (Google: "configure ubuntu sudo without password").
  6. Testi, et kasutajalt ansibleuser ei küsita sudo käskudelt parooli
  7. OS_perenimi testi ssh-ühendust klooni (ssh ansibleuser@192.168.1.X)
    • Peab töötama, vajadusel paranda
    • Ära unusta, et nüüd oled kloonitud masinasse terminaliga sisse logitud. Väljumiseks kas CTRL-D või exit
  8. OS_perenimi Kontrolli et Ansible saab ühendust klooniga
    • ansible osclone -m ping -u ansibleuser --extra-vars "ansible_user=ansibleuser ansible_password=ansible12345"
    • Nüüd on meil töötav Ansible "master" (configuration host) ja klient (ühendame üle ssh)
  9. järgnevalt loome ansible-playbook ehk Ansible skripti nimega ntp.yml, mis paigaldab meile ntp teenuse klooni ja teeme seal seadistusfailis muudatuse.
    • ntp.yml sisu:
      ---
      - hosts: osclone
        remote_user: ansibleuser
        become: yes
      
        tasks:
        - name: Install ntp for time sync
          apt:
            name: ntp
            update_cache: yes
      
        - name: Configure ntp for Estonian NTP
          lineinfile:
            path: /etc/ntp.conf
            regexp: '0.ubuntu.pool.ntp.org'
            insertbefore: BOF
            line: pool pool.ntp.org iburst
          notify:
            - restart ntpd
        handlers: 
        - name: restart ntpd
          service:
            name: ntp
            state: restarted
      • Loe lisaks kokkuvõtlikust juhendist ansible-playbook süntaksi kohta https://www.digitalocean.com/community/tutorials/how-to-create-ansible-playbooks-to-automate-system-configuration-on-ubuntu (kogu jutt Ansible kohta on kehtiv, aegunud on ainult Ubuntu versioon millega näiteid tehti)
  10. ntp.yml saab käivitada käsuga: ansible-playbook ntp.yml --extra-vars "ansible_user=ansibleuser ansible_password=ansible12345"
  11. Kontrolli tulemust OS_Perenimi_kloon masinas käskudega:
    • nano /etc/ntp.conf leia üles muudetud rida
    • ntpq -p Leia üles uus server nimekirjast

Iseseisev ülesanne

Loo Ansible playbook skript veebiserver.yml, mis paigaldab OS_perenimi_kloon masinasse

  1. apache2 veebiserveri tarkvara
    • Vaata näidet näidet ntp.yml playbookist või https://docs.ansible.com/ansible/latest/collections/ansible/builtin/apt_module.html
  2. Kopeerib originaalarvutist OS_perenimi playbooki käivitamisel teie loodud näidisfaili index.html (index.html peab sisaldama vähemalt teie nime) kausta /var/www/os hallatavasse masinasse OS_perenimi_clone (õigused owner=www-data group=www-data
    • Näidised https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html
  3. Modifitseerib olemasolevat virtualhosts faili /etc/apache2/sites-enabled/000-default.conf kasutamaks uut failiteed (kausta). Kausta kust Ansible otsib kuvatavat veebilehe faile on määratud parameetriga DocumentRoot
    • Abi: https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html
    • NB! Mitme virtualhosts seadistuse (faili) korral kuvab Apache vaikimisi esimese (järjestus 0..Z)
  4. veebis on suhteliselt palju sarnaseid näiteid, seega proovi leida abi iseseisvalt.

Tulemus

Esitada oma wiki lehele aruanne oma tegemistest, mis sisaldab järgmist:

  1. Täpne Ansible skript veebiserver.yml mida kasutasite Apache paigaldamiseks ja seadistamiseks
  2. Ansible skripti väljund OS_perenimi masinas (PS! Veendu, et skripti raporteeritavad/kuvatavad kommentaarid/tegevused oleksid arusaadavad)
  3. Esita pilt virtuaalmasinast OS_perenimi, kus on avatud veebilehitseja aadressiga www.os-perenimi.ee, peab kuvama teie nime sisaldavat veebilehte
    • OS_perenimi muutke /etc/hosts faili nii et www.os-perenimi.ee vastaks OS_perenimi_kloon IP-aadressile ehk kuvataks OS_perenimi_kloon arvutisse Ansible abil paigaldatud veebilehte, mis kuvab teie nime.
13. Praktikum 13 - Ansible (DevOps)
Sellele ülesandele ei saa enam lahendusi esitada.

Aega esitamiseks 2 nädalat

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo