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 iseseisva 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:
- Tee
OS_perenimi
virtuaalmasinast kloon nimegaOS_perenimi_kloon
(kloonile loo uued MAC aadressid). NB! Kui teil on eelmisest nädalast kloon olemas pole vaja uuesti teha. OS_perenimi
jaOS_Perenimi_kloon
võrgühendus seadista Virtualbox seadetestbridged adapter
.- Käivita
OS_perenimi
jaOS_Perenimi_kloon
Ubuntu operatsioonisüsteemiga - Veendu, et mõlemad virtuaalmasinad said õige IP-aadressi (näiteks: 192.168.1.X algusega)
OS_perenimi
virtuaalmasinas paigaldaansible
- 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 --version $ ansible localhost -m ping
NB! Kui sudo apt install ansible
annab hoiatusteate, et 'str' object is not callable
võib seda hetkel ignoreerida ja juhendiga edasi minna.
- Ansible viimased versioonid ei loo vaikimisi
/etc/ansible
kausta.OS_perenimi
masinas looge fail/etc/ansible/hosts
ja lisage sinna järgnevad 2 rida, kus[osclone]
määrab ära arvutite grupi nime ja192.168.1.X
on teieOS_perenimi_kloon
IP aadress
[osclone] 192.168.1.X
-
OS_perenimi
virtuaalmasinas paigaldasshpass
(apt install sshpass
) OS_Perenimi_kloon
paigalda ssh-serveri tarkvara (apt install ssh
)OS_Perenimi_kloon
muuda arvuti nimi (hostname
) kujuleOS-Perenimi-kloon
hostnamectl
,sudo hostnamectl set-hostname OS-perenimi-kloon
,sudo nano /etc/hosts
OS_Perenimi_kloon
virtuaalmasinas loo uus kasutaja nimegaansibleuser
käsugaadduser
ja parooliks seaansible12345
. NB! Ärge kasutage käskuuseradd
, 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.- Luba kasutajal
ansibleuser
käivitadasudo
käske ilma parooli sisestamata (Google: "configure ubuntu sudo without password"). - Testi, et kasutajalt
ansibleuser
ei küsita sudo käskudelt parooli 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
OS_perenimi
Kontrolli et Ansible saab ühendust kloonigaansible osclone -m ping -i /etc/ansible/hosts -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)
- järgnevalt loome
ansible-playbook
ehk Ansible skripti nimegantp.yml
, mis paigaldab meilentp
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)
- ntp.yml sisu:
ntp.yml
saab käivitada käsuga:ansible-playbook ntp.yml -i /etc/ansible/hosts --extra-vars "ansible_user=ansibleuser ansible_password=ansible12345"
- Kontrolli tulemust
OS_Perenimi_kloon
masinas käskudega:nano /etc/ntp.conf
leia üles muudetud ridantpq -p
Leia üles uus server nimekirjast
Iseseisev ülesanne
Loo Ansible playbook skript veebiserver.yml
, mis paigaldab OS_perenimi_kloon
masinasse
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
- Kopeerib originaalarvutist
OS_perenimi
playbooki käivitamisel teie loodud näidisfailiindex.html
(index.html
peab sisaldama vähemalt teie nime) kausta/var/www/os
hallatavasse masinasseOS_perenimi_clone
(õigusedowner=www-data group=www-data
- Modifitseerib olemasolevat
virtualhosts
faili/etc/apache2/sites-enabled/000-default.conf
kasutamaks uut failiteed (kausta). Kaust kust Apache otsib kuvatava veebilehe faile on määratud parameetrigaDocumentRoot
- Vaata faili sisu muutmise näidet ntp.yml playbookist
- Täiendav 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)
- Veebis on suhteliselt palju sarnaseid näiteid, seega vajadusel konsulteeri Googlega ning proovi leida abi iseseisvalt.
- Probleemide esinedes konsulteeri õppejõuga.
Tulemus
Esitada oma wiki lehele aruanne oma tegemistest, mis sisaldab järgmist:
- Täpne Ansible skript
veebiserver.yml
mida kasutasiteApache
paigaldamiseks ja seadistamiseks - Ansible skripti väljund
OS_perenimi
masinas (NB! Veendu, et skripti raporteeritavad/kuvatavad kommentaarid/tegevused oleksid arusaadavad) - Esita pilt virtuaalmasinast
OS_perenimi
, kus on avatud veebilehitseja aadressigawww.os-perenimi.ee
, peab kuvama teie nime sisaldavat veebilehteOS_perenimi
muutke/etc/hosts
faili nii etwww.os-perenimi.ee
vastaksOS_perenimi_kloon
IP-aadressile ehk kuvataksOS_perenimi_kloon
arvutisse Ansible abil paigaldatud veebilehte, mis kuvab teie nime.
Aega esitamiseks 2 nädalat