Institute of Computer Science
  1. Courses
  2. 2019/20 fall
  3. Operating Systems (LTAT.06.001)
ET
Log in

Operating Systems 2019/20 fall

  • Pealeht
  • Loengud
  • Praktikumid
  • Kodutööd

Ansible (DevOps)

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 olemasolevast välja lülitatud olekus VirtualBox virtuaalmasinast (OS_perenimi) snapshot (hetktõmmis).
  2. Tee OS_perenimi virtuaalmasinast kloon nimega OS_perenimi_kloon (kloonile loo uued MAC aadressid).
  3. OS_perenimi ja OS_Perenimi_kloon võrgühendus seadista Virtualbox seadetest bridge mode.
  4. Käivita OS_perenimi ja OS_Perenimi_kloon Ubuntu operatsioonisüsteemiga
  5. Veendu, et mõlemad virtuaalmasinad said Õige IP aadressi (klassis: 192.168.10.X algusega)
  6. OS_perenimi virtuaalmasinas paigalda ansible
    • veendu et järgnevad käsud käivituksid ilma veateadeta
    • Rohkem abi https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#basics-what-will-be-installed
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
$ sudo apt install python-argcomplete
$ sudo activate-global-python-argcomplete
$ ansible localhost -m ping
  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.10.X on teie OS_perenimi_kloon IP aadress
[osclone]
192.168.10.X
  1. OS_Perenimi_kloon paigalda ssh server tarkvara(apt install ssh)
  2. OS_Perenimi_kloon muuda arvuti nimi (hostname) kujule OS_Perenimi_kloon
    • hostnamectl , sudo hostnamectl set-hostname OS_perenimi_kloon , sudo nano /etc/hosts
  3. OS_Perenimi_kloon loo uus kasutaja nimega ansibleuser ja parooliks sea ansible12345
  4. Luba kasutajal ansibleuser käivitada sudo käske ilma parooli sisestamata (Google: "configure ubuntu sudo without password")
  5. Testi, et kasutajalt ansibleuser ei küsita sudo käskudelt parooli
  6. OS_perenimi testi ssh ühendust klooni (ssh ansibleuser@192.168.10.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
  7. 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)
  8. järgnevalt loome ansible-playbook ehk ansible skripti nimega ntp.yml, mis paigaldab meile ntp teenuse klooni ja teeme seal konfifailis 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 juhednist 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)
  9. ntp.yml saab käivitada käsuga: ansible-playbook ntp.yml --extra-vars "ansible_user=ansibleuser ansible_password=ansible12345"
  10. Kontrolli tulemust OS_Perenimi_kloon masinas käskudega:
    • nano /etc/ntp.conf leia üles muudetud rida
    • ntpq -p Leia üles uus server nimekirjast
    • timedatectl (System clock synchronized: yes)

Iseseisev ülesanne

Loo ansible skript, mis paigaldab OS_perenimi_kloon masinasse

  1. apache2 veebiserveri tarkvara
  2. Kopeerib index.html (peab sisaldama teie nime) faili kausta /var/www/os (õigused owner=www-data group=www-data
  3. Loob uue või modifitseerib olemasolevat virtualhosts faili kasutamaks uut failiteed (kausta).
    • 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 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
15. Praktikum 15 - Ansible
Solutions for this task can no longer be submitted.

Aega esitamiseks 2 nädalat

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment